On Github PolibudaInfo / diem-about
nakładka na symfony 1.4 pozwalająca w prost(sz)y sposób osiągać cele związane z zarzadzniem treścią
Zestaw narzedzi ułatwiających zadania związane z zarzadzaniem treścią
Diem, jako system przeznaczony do zarzadzania treścią oferuje:
Dla maratończyków:http://diem-project.org/ → Documentation → Reference Book
Czyli układ treści
Moduł to wyizolowana część aplikacji
zazwyczaj zajmuje się obsługą jakiegoś modelu nanych
jest logicznie związany z modelem danych (schema.yml)
odpowiada mu jeden folder (np moduł w aplikacji admin):
moduleName # nazwa modułu └── actions # kontrolery ├── actions.class.php # akcje - modyfikacja danyhc └── components.class.php # komponenty - przedstawienie danych └── config # konfiguracja (kaskadowa i właściwa tylko dla modułu) └── generator.yml # plik specyficzny dla aplikacji admin. Definiouje formularze i listę └── lib # klasy - "ciężka" logika. Nie zawsze moduły mają ją tu wyeksportoaną :( └── someClassName.php └── templates # widoki. zazwyczaj tylko partiale └── _partial_name.phpw katalogu app/(front|admin)/modules
konfigurację modułu definiuje klucz w pliku config/dm/modules.yml
plik jest podzielony na grupy i podgrupy
Content: # grupa - pierwszy poziom menu w admin Foto: # podgrupa - drugi poziom menu w admin topFoto: # klucz modułu ... gallery: ... galleryCollection: ...
konfigurację modułu definiuje klucz w pliku config/dm/modules.yml
plik jest podzielony na grupy i podgrupy
topFoto: # klucz modułu model: TopGallery # nazwa modelu (schema.yml) name: TopGallery|TopGalleries # nazwa wyświetlana [opcjonalna] page: false # czy rekordy reprezentowane są jako strony [true] credentials: foto_top # nazwa uprawnienia, które jest potrzebne do użycia credentials: [[ c, c2 ]] # gdy wiele warunek c lub c2 credentials: [[ c, c2 ], d] # gdy wiele warunek (c lub c2) ORAZ d components: # lista widgetów. Ten klucz musibyć nawet jeśli lista jest pusta carousel: # nazwa widgetu ...
criterion: # klucz modułu parent: group # klucz modułu nadrzędnego (opcj.) model: Criterion # nazwa modelu name: Criterion|Criteria # nazwa wyświetlana l.poj|l.mn admin: true # jest w aplikacji admin [true] front: true # jest w apliakcji front [true] page: true # rekordy mają swoje własne strony [true] components: listByCategory: # nazwa modułu. Konwencja: list*, show* - specjalne filters: [ group ] # filtry modułu list cache: true # czy można cache'ować dynamicznie (z parametrami) [true] show: # komponent pokazujący jeden rekord cache: static # czy można cache'ować statycznie (jest nie zmienne) showLittle: # komponent pokazujący jeden rekord ale inaczej cache: false # bez cache security: # pozwala definiować precyzyjnie dostęp do poszczególnych akcji ...Pełna konfiguracja w artykule Modules_definition na redmine projektu Diem [snapshot z archive.org - strona nie istnieje]
module: components: foo: form_class: FooForm # Pozwala definiować formularz edycyjny # widgetu bez wpisu w widget_types.yml public_name: Super Foo # Nazwa wyświetlana widgeta
Pozwala na wielokrotne używanie obrazków, plików
Składa się z 2 widoków: modułu i panelu
AHA! można robić moduły które nie korzystają z domyślnej listy!
źródło: http://www.leading2learning.com/wp-content/uploads/2011/08/Boy-with-idea.jpgAHA! można modyfikować nawet "core'owe" części Diema
źródło: http://www.jet-engine.net/BR715%20(01).jpgdrag & drop
… oraz
![](media:3451 50x50)
echo _media($entry->getThumbnail())->size('50x50')(patrz: template helpery)
<img src="http://example.com/image.png" alt="jakiś tekst alternatywny">Q: jak to zrobić z użyciem PHP? (najgłupiej)
$img = "http://example.com/image.png" // lub skomponowany jakkolwiek inaczej echo '<img src="' + $img + '" alt="jakiś tekst alternatywny">';Q: jak robi się to z użyciem symfony1?
echo image_tag('image.png'); // da <img src="http://example.com/image.png">
Co się stało? Otoczyliśmy string tagiem. Tu nie ma magii :(
Q: a co jeśli mamy zasób z Biblioteki Mediówecho _media($imageObject);
Co się stało? Zrobiliśmy tag na podstawie obiektu - tu siedzi magia ;)
Z linkowaniem do obiektów jest trochę ciężej
Dzięki Diem i stronom możemy w ciemno linkować do obiektów które mają strony
echo _ling($article); // dobrze się czyta ;)
echo _media($article->image) ->width(40) // wygeneruje miniaturę o szerokości 40px // ->size(40,20) // lub określimy wymiary ściśle ->method('left') // zachowując to co po lewej stronie obrazka, //ucinając tylko prawą jeśli trzeba ->alt($article->prop) // ustawia attr alt ->filter('greyscale') // nakłada filtr - tu: zmienia na skalę szarości ->overlay(_media(), 'bottom-right') // nałoży inny obrazek w prawym dolnym rogu ->quality(60); // odda JPEG w jakości 60%