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.php
w 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

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%