CiviCRM

firewolf Mon, 07/23/2012 - 19:34

Sveiki, drupalisti!

Vai kāds ņemās ar CiviCRM? Konkrēti interesē multi-site variants. Doma ir sekojoša - vairāki saiti, kas pašā drupalā ir jau nokonfigurēti ar kopīgu user tabulu u.c. kopīgojamo. No n-tām dokumentācijām ir skaidrs, ka CiviCRM kods jāliek /sites/all/modules mapē, nevis vienā vai vairākās saitu mapēs.

Bet neiet! Uzinstalēts pirmajā saitā pēc visām dokumentācijām, salikti civicrm.settings.php faili un izlaboti tā, kā vajag, bet pirmā saita navigācijā pat links neparādās. Un arī uz linku /civicrm/ rāda, ka page not found.

Pirms tam mēģināju civicrm kodu likt pirmā saita moduļos - tad viss gāja, bet tikai priekš pirmā saita. Bet man vajag tā, ka abi saiti dzenā vienu un to pašu civicrm kodu ar vienu un to pašu datubāzi - vienoti kontakti, vienots kods. Principā nepieciešams, lai reģistrējoties otrajā saitā, pievienojas kontakts arī civicrm datos. Ja civicrm ir tikai pirmajā saitā, tad loģiski, ka kontakts nepievienojas. Nevar būt, ka būs jāmocās un jātaisa modulis. Ciest nevaru to civicrm.

Atsaucieties, plz! :)

Var būt jau esi to mēģinājis. Tieši ar CivicCRM neesmu darbojies, tādēļ nepateikšu vai problēma varētu būt saistīta ar CivicCRM. Bet būtība multisites ir tāda, ka tie moduļi, kas ir /sites/all/modules folderī fiziski ir redzami apakšaitiem. Taču, ja šo moduļu veidotās tabulas nešārē starp apakšsaitiem, tad katram no saitiem varētu būt savs tabulu komplekts, kur vēlams būtu izmantot prefixu. Ja pieņemam domu, ka tomēr nešārējam (sākuma vienkāršākais variants), tad katrā no apakšsaitiem ir jāieslēdz tas modulis, un attiecīgi priekš katra saita jānokonfigurē. Tagad ja sākam sarežģīt, tad vajadzētu atklāt tās tabulas, kuras CivicCRM izmanto, un tās ir jānošārē iekš settings.php. Tādā veidā tu iedosi šīs tabulas katram no apakšsaitiem. Līdzīgi kā var šārēt gan users, gan permissions, gan roles tabulas. Ja arī šis tev neiet, tad varētu būt problēma apakšsaitu folderu nosaukumos un apache2 rewrite pieprasījumos, kā rezultātā Drupal nezin uz kurieni norūtēt pieprasījumu. Un atceries, ka user tabulas šārēšana starp apakšsaitiem pēc būtības nedod tādu efektu kā Single Sign On. Tas dod tikai iespēju vienu un to pašu lietotāju/paroli izmantot visos apakšsaitos. Nebūs tā, ka vienā ieslēgsies, bet otrā jau skaitīsies ielogojies. Tur ir nepieciešama cita pieejam, ko labāk būtu "neitralizēt", un izmantot kaut vai OpenID risinājumu. Un vēl - katram no apakšsaitiem vismaz to izveides brīdī ir user/1 atsevišķs. Tu vari lietot vienu un to pašu, it īpaši, ja apakšsaitus pieslēdz pēc default instalācijas, bet ir saprātīgi izmantot user/1 katrā saitā, gadījumā ja nu kas. Tad var noņemt tabulu šārēšanu, un piekļūt saita instancei. Ceru, ka palīdz šī info. Ja ne, dod fīdbeku, skatīs tālāk...
Paldies par ātru atbildi un plašu izklāstu, bet rokoties dziļāk, rodas nojausma. Visu pēc kārtas: * pašam drupalam multi-site fīča strādā perfekti. Nošārētas users, permissions un roles tabulas. * par sso zinu un ir jau nobaudīts. Diemžēl neder divu iemeslu dēļ - a) tas ir tikai 6. drupal versijai un nav šobrīd spēka pārrakstīt priekš 7. versijas, b) sso rada problēmas multilingual variantā, pilnīgs bezceris konkrētam projektam, kā izskatās. Bet paldies par OpenID ieteikumu. Būs jāskatās. Varētu derēt. * ar apache un sistēmu kopumā viss kārtībā, rewrite arī strādā perfekti. Pirms CiviCRM viss pārbaudīts un strādā. Arī ieliekot civicrm moduli vienā no subsaitiem, civicrm strādāja kā nākas. Nepieciešams, lai otrajā saitā reģistrējoties, pievienojas civi contacts, kas ir iespējams, ja arī otrajā saitā nostrādā attiecīgie hooki - vieni, kas alterē reģistrācijas formu, otri, kas sagremo ievadinformāciju un rīkojas civicrm labā. Nu tā. Ir kaut kas tāds, kas, kā saka, karājas mēles galā. Šoreiz - acu priekšā, tikai nevar "iebraukt". Pilnīgi liekas, ka menu sistēma nav nostrādājusi / updeitojusies moduļa CiviCRM pievienošanas brīdī. Tātad, navigācijā jābūt linkam CiviCRM. To protams rada civicrm_menu() hooks, kur tā arī rakstīts: return array('civicrm' => array('title' => 'CiviCRM', ..... u.t.t. un turpat arī otra linka definīcija tai pašā arājā: 'admin/config/civicrm', tātad konfigurācijā jāparādās civicrm sadaļai. Bet nekā. Doma tagad radās tāda, ka varbūt civicrm iekopēt abos apakšsaitos un otram norādīt pirmā datubāzi. Varētu būt, ka ies. Bet gribējās, lai ir pa nopietno tā, kā jābūt pēc loģikas - kopīgs kods, tātad /sites/all/modules, nevis apakšsaitu moduļos. Bet kas ar to menu? Varbūt Tev ir kāda doma? Dīvainākais, ka civicrm abos apakšsaitos strādā!!! Un kā vēl! Tagad labojot savu akountu pirmajā saitā un pierakstot pilnu vārdu un uzvārdu, ko ļauj civicrm submodulis CiviContacts, saglabāju, ielogojos otrajā saitā un jā - man priekšā ievadītais vārds un uzvārds. Nu?! Tas ir vēl dīvaināk, nekā ja vispār nekas nešancētu. Paldies! Prieks, ka kāds uzklausa sāpi :) Jārok tālāk.
No pieredzes teikšu, ka katram saitam ir savs Menu, kas vedina domāt, ka Menu tabulu var būt būtu jāšārē. Taču tik dziļi kodos es neesmu, un īsti nepateikšu, vai nebūs kādas blaknes. Bet gribēju teikt, ka vienā projektā man arī bija dīvaina lieta, ka ./sites/all/modules esošos moduļus Drupal apakšsaitu instances tos neredzēja. Tagad precīzi nepateikšu, jo tas bija sīks projekts, un sen, sen atpakaļ. Arī uz D6. Jāatvainojas, bet galīgi neatminos, kā toreiz to atrisināju. Ja pareizi tagad no visa saprotu, tad ja modulis ir iekš ./sites/all/modules, tad apakšsaiti to vispār neredz, lai iespējotu. Vai pareizi? Pamēģini tad apakšsaitos nevis pašu moduli iekopēt, bet ieliec symlink (ja uz linux). http://learn.clemsonlinux.org/wiki/Symlink Tad tev būs viens moduļa kods, kuru jauninot to jau dabūsi visos apakšsaitos. Taču tiesa, ka tam būtu jāiet, vismaz moduļa iespējošanas kontekstā. Un tikai pēc tam ir jautājums par tabulu šārēšanu. Par OpenID - tur ir tas labums, ka, ja neizmanto Drupal SSO moduli, tad tu pēc būtības neesi atkarīgs no versijām un dažādām citādām plaknēm. Tu pat lietotāju reģistru kā tādu vari izvilkt atsevišķā serverī. Te ir interesants video, kas varētu mudināt uz līdzīgu domu: http://vimeo.com/8703588 Par multi valodām arī šajā ziņā varētu būt nianses, bet tad būtu iespējams iet nevis ar prefixu, bet ar sufixy, jeb subdomēnu - en.example.com - EN valodai, un lv.example.com - LV valodai.
Jā, par symlink zinu. To izmisuma gadījumā mēģināšu. Bet tur jau tas knifs, ka apakšmoduļi strādā. Kā jau rakstīju - civicrm apakšmodulis civiContacts nostrādā vajadzīgā brīdī, kad drupalā reģistrējas jauns lietotājs - šis apakšmodulis pievieno jaunus ievadlaukus, kas vajadzīgi tikai civicrm un pēc reģistrācijas viss smuki saglabājas civicrm tabulās no drupal atsevišķā datubāzē. Tā kā pa lielam viss strādā. Tāpat arī Views modulī ir pieejami visi CiviCRM tabulu lauki, kad veido jaunu vai labo kādu pirms tam veidotu skatu (view). Lauki ir pieejami, tos var izvēlēties, pārkārtot view u.t.t. Viss izskatās tā, kā jābūt. Tikai tāds sīkums - navigācija nestrādā. Labi, rokos tālāk. Paldies! :)
Jā, es pats labāk symlinkus izmantoju, jo tas nedublē failus un samazina Drupal core + contributed moduļus. Paskaties vēl to Menu lietu, un vai gadījumā tev nav ieslēgti lapas performances uzstādījumi? Jo, ja Civic CRM pamatmodulis nav redzams, un attiecīgi nevar to ieslēgt, tad papildmoduļiem nebūtu jābūt iespējamiem, ja vienīgi ar tabulu šārēm kaut kas nav nogājis greizi, vai arī šiem papildmoduļiem nav dependency. Tiešām atvaino, tieši CivicCRM nepateikšu neko konkrētāk. Nāk jau vakars, var būt vēl kāds pieslēgsies un varēs ko ieteikt.
Nu, uztaisot navigācijā jaunu linku uz /civicrm/, viss strādā. Bet tam jābūt automātiski. Vienīgi nevar šādi pievienot administrēšanas linku, lai parādās configuration lapā. Bet varbūt var? Hmm, pamēģināšu rīt. Šobrīd pie cita projekta jāstrādā. CodeIgniter :) Neatvainojies, viss kārtībā! Es jau to nojautu, ka Latvijā nebūs daudzi, kas sapieduši galvu CiviCRM skrūvspīlēs :)