x-ƒ (x_f)

S2 filosofija 

pirmdien, 10.05.2004 @1:23 pm | x-ƒ

Es centīšos aprakstīt S2 stila uzbūvi un kā tas viss darbojas. Ņem vērā, ka dokumentāciju rakstīšana nav mana stiprā puse. Bet ceru, ka vismaz kāds to sapratīs un izmantos. Kad es pirmoreiz redzēju S2 kodu, tad nesapratu, ko ar to vispār var izdarīt, lai pielāgotu savām vajadzībām. Tas likās neizprotami. Bet patiesībā S2 nav sarežģīta! Vienkārši izmēģini.

Klases Page ģimenes koks
 Page
  |– RecentPage
  |      |
  |    FriendsPage
  |– EntryPage
  |– ReplyPage
  |– YearPage
  |– MonthPage
  |– DayPage

Tāda, lūk, ir S2 stila uzbūve. Tas ir koks, kurā attēlotas klases un to attiecības ģimenē un pēc nāves (mantošana). :)
Page ir pati galvenā klase. Un, kas definēts šajā klasē, attiecas uz visām atvasinātajām klasēm (bērniem).

Piemēram, manā stilā Page::print funkcija satur visu kopā. Tajā atrodas pati HTML lapa un tiek izsauktas vajadzīgās funkcijas, atkarībā no pieprasītā skata (friends, reply, calendar, ..). Man tas ir ērti, jo visām lapām tiek nodrošināts vienāds izskats.
Bet var arī darīt savādāk. Piemēram, [info]mp stilā "Debesu Zvani" šādas funkcijas Page::print nav vispār. Tur viss tiek salikts kopā katrai lapai (RecentPage, FriendsPage, EntryPage, ..) atsevišķi. Es nezinu, kāpēc M. tā darīja, bet, ja jau viņam tā likās ērtāk, tad – kāpēc gan ne. Viņa stilā universālais saturs atrodas Page::print_custom_head un Page::print_plain_footer funkcijās, kas tiek izsauktas katram skatam.

Vēl viena lieta, kas jāņem vērā rakstot stilu, ir, ka ir iespējams pārdefinēt gandrīz jebkuru (ir izņēmumi) funkciju no core slāņa (layer). Šis slānis ir brīvi pieejams jebkuram. Ja vēlies to redzēt, tad Saitespied šeit. Šķiet, ka šo un visu turpmāko vaidzēja rakstīt pašā sākumā, bet nu labi.

Katram S2 slānim, kuru Tu raksti, gan apakšā, gan virs tā var būt vairāki citi slāņi. Jebkurā gadījumā pašā apakšā būs pats galvenais slānis – core. Tālāk es aprakstīšu katru iespējamo slāni. Tie sakārtoti pretējā kārtībā, kā tie "klājas" viens uz otra. (Programmētājiem koki parasti ir ar saknēm uz augšu.)

  1. core – pats pamats (angliski core – serde) (type = "core", name = "LiveJournal S2 Core, v1"). Šis slānis definē visas funkcijas un klases, kas ir pieejamas zemākiem slāņiem. Visā visumā var teikt, ka zemākie (lietotāja veidotie) slāņi ir tāpēc, lai aizlāpītu caurumus. Jo core slānī viss jau ir un tas var darboties pats. Taču lielākoties to izmanto kā paraugu un piemēru saviem slāņiem. Zemākajos slāņos tiek pārdefinētas funkcijas pēc saviem ieskatiem un vajadzībām. Sākot ar lokalizēšanu un beidzot ar user slāni. Par to būs zemāk.
  2. core – internationalization – šis arī ir sistēmas slānis (type = "i18nc", name = "Latvian") un ir paredzēts, lai pārdefinētu visu tektuālo informāciju un vēl šo to, kas attiecas uz katru valodu. Arī [info]watt to ir izdarījis Sviesta Cibā. Tāpēc jau komentāru saites nosaukums pēc noklusējuma ir "ir doma", ja Tu izmanto S2 un esi izvēlējies latviešu valodu. Arī šis slānis ir Saitepubliski pieejams un tajā noteikto drīkst un var pārdefinēt katrs pats savos slāņos.
    Piemēram, man nepatīk, ka datuma formāts ir "Kāda diena, 32. Maijs 2004". Nu, un? Savā slānī es to pārdefinēju uz "Kāda diena, 32. maijs, 2004". Skaidrs? Brīvdomība un runas brīvība.
  3. layout – šim slānim lielākoties arī ir domāta šī kopiena. :) Šeit sākas īstā stila pielāgošana. Angliski layout – izkārtojums, makets, .. Šo slāni var salīdzināt ar visu S1 sistēmu, izņemot to, ka S2 sistēmā var noteikt katra skata (recent, reply, ..) lapas izskatu, ko nevarēja ar S1. lzkārtojuma slānis, gluži kā core slānis, nosaka savus īpašību kopumus, lai iegūtu vajadzīgo lapas izskatu.
    Piemērs ar funkciju pārdefinēšanu. Core slānī ir funkcija print_stylesheet(), kas izvada CSS stila saturu attiecīgajā vietiņā. Nu, lūk, es viņu varu pārdefinēt savā stilā, lai tā izvadītu man nepieciešamo CSS. Tik vienkārši.
  4. internationalization – šeit tiek noteikta visa tekstuālā informācija, kas attiecas uz konkrēto layout slāni, lai lietotāji varētu izvēlēties valodu, kādā attēlot savu žūrnālu. Tips – i18n. Pilnīgs S2 stils izmanto tekstu gan no internationalization, gan no core internationalization slāņa. Šis gan tik ļoti uz Sviesta Cibu neattiecas, jo mēs te visi savējie, vietējie. :)
  5. theme – tēmas slānis izmanto layout slānī noteiktās krāsu īpašības, lai izveidotu unikālu stila izskatu, nemainot pašu layout slāni. Kaut kas līdzīgs bija jau S1 sistēmā, tikai, atšķirībā no tās, tēmas slānis attiecas tikai uz vienu layout slāni.
  6. user – pēdējais slānis, kurā var tikt noteiktas lietotāju opcijas. Piemēram, cik ierakstu tiks attēlots žūrnālā un draugu lapā. Šo slāni ir iespējams izveidot gan rakstot ar roku, gan automātiski – ar Cibas wizard'u.

Tātad pavisam kopā ir seši slāņi, no kuriem Tu vari darboties ar četriem (jo pirmie divi ir iebūvētie):
 => core
   => i18nc
   => layout
     => i18n
     => theme
     => user

Jā, man patīk zīmēt šēmiņas. :)

Vēl viena lieta, kas iesācējiem varētu noderēt, lai viss sāktu darboties. Lai varētu izmantot šos slāņus, ir nepieciešams izveidot stilu. Katrā stilā var būt iekļauti (pievienoti, pieslēgti) no 1 līdz 6 slāņiem. Tam paredzēta neliela, viegli saprotama forma.
Piezīme. Ja Tev ir vairāki stili, tad, zinot to ID numurus, Tu vari apskatīties, kā, izmantojot šo stilu, izskatīsies Tavs žūrnāls. Tev vienkārši žūrnāla adreses galā jāpieraksta "?s2id=xxxx", kur "xxxx" vietā ir slāņa ID numurs.
Vēl viena piezīme. Lai apskatītos kāda cita lietotāja žūrnālu "savā stilā", :) adreses galā pieraksti "?style=mine".

Kopsavilkums par slāņiem
 
core
i18nc
layout
i18n
theme
user
define classes
x
 
 
 
 
 
define builtin functions / classes
x
 
 
 
 
 
define global functions
x
 
x
 
 
 
define class methods
x
 
xa
 
 
 
define properties
x
 
x
 
 
 
expose properties to graphical wizard
 
 
x
 
 
 
override name / description of properties
-
x
x
x
 
 
override functions / methods of properties
-
x
x
x
x
 
set properties
x
x
x
x
x
x
__________
a Layouts adding methods to classes must prefix the method name with lay_ to avoid future namespace collisions should the core layer expand. (Šī ir svarīga piezīme!)

Ū, pats galvenais. Ja nu kāds to vēl nezina, tad pārmainīt lietojamo stilu sistēmu ir iespējams Saitešeit. Ņem vērā, ka, ja Tu lieto S1 un vēlies izmēģināt S2 sistēmu, tad vari to droši darīt, jo Tavs S1 stils paliks neskarts. Tam patiešām nekas nenotiks un, salaižot kaut ko galīgā pakaļā, varēsi mierīgi atgriezties pie vecā, labā S1. Kamēr vien [info]watt nenometīs serveri. :)

Daļa šī puksta ir nākusi no manis, bet lielākā daļa ir tulkota no S2 Manual (PDF fails, 230k). Vēlāk varbūt vēl.