Welcome,
Guest
.
Please
login
or
register
.
Did you miss your
activation email
?
News:
Elxis 5.5 Calypso supports 2 factor authentication login with e-mail or SMS.
Home
Help
Login
Register
Elxis CMS Forum
»
Ελληνικό Forum
»
Γενικά Θέματα για το Elxis CMS
(Moderators:
CREATIVE Options
,
akalant
) »
Συμβατά κατόπιν μετατροπής
« previous
next »
Print
Pages: [
1
]
Author
Topic: Συμβατά κατόπιν μετατροπής (Read 10692 times)
giokreta
Newbie
Posts: 22
Συμβατά κατόπιν μετατροπής
«
on:
October 31, 2006, 20:59:40 »
Τα components, modules, mambots που έχουν αναπτυχθεί για το Mambo, είναι συμβατά κατόπιν μετατροπής, με το Elxis CMS. Όλα τα templates είναι απόλυτα συμβατά.
Επειδή με ενδιαφέρει πολύ αυτό τι είδους μετατροπή μπορείς να κάνεις για να δουλέψει ένα module στο elxis?
Logged
eee
www.periergos.net
datahell
Elxis Team
Hero Member
Posts: 10356
Re: Συμβατά κατόπιν μετατροπής
«
Reply #1 on:
November 01, 2006, 08:27:54 »
Το Elxis έχει κάποιες σημαντικές διαφορές σε σχέση με τα mambo και Joomla τις οποίες προσπαθήσαμε κατά την κατασκευή του να "κρύψουμε" όσο μπορούσαμε περισσότερο προκειμένου να "παίζουν" τα υπάρχοντα component σε αυτό όσο γίνεται καλύτερα.
Για να αναφερθώ πλήρως σε αυτά θα πρέπει να γράψω έναν αναλυτικό οδηγό προγραμματιστών πράγμα το οποίο δεν μπορεί να γίνει εδώ αλλά κάποια στιγμή θα γίνει και αυτό. Συνοπτικά μπορώ να αναφερθώ μόνο σε μερικά από αυτά.
Διαχείριση αρχείων.
Αν και δεν υπάρχει πρόβλημα στο να χρησιμοποιούμε τις κλασσικές function της php (fopen, unlink, copy, fread κλπ) το elxis επειδή έχει ενσωματωμένη υποστήριξη ftp συστίνεται να χρησιμοποιείται τις function του file manager. Επίσης με τον file manager η δουλειά σας γίνεται πιο εύκολα. Ανοίξτε τον filemanager (includes/Core/filemanager.class.php) για να τον συμβουλευτείτε.
Παραδείγματα:
δημιουργία αρχείου: $fmanager->createFile('path', 'όνομα');
διαγραφή αρχείου: $fmanager->deleteFile('path');
αλλαγή αδειών χρήσης (έστω σε 644): $fmanager->spChmod('path', '0644');
Εγγραφή σε αρχείο: $fmanager->writeFile('path', 'δεδομένα εδώ');
Λίστα αρχείων σε κατάλογο: $fmanager->listFiles('διαδρομή καταλόγου');
προσοχή: η function
mosReadDirectory
των mambo/joomla έχει καταργηθεί. Χρησιμοποιήστε τις listFiles και listFolders του fmanager αντί αυτής. Έτσι για recursive list:
$fmanager->listFiles('διαδρομή καταλόγου', '.', true);
SQL queries
Η χρήση function ή εντολές της mysql στα queries μπορεί να δημιουργήσει πρόβλημα. Το elxis χρησιμοποιεί το υπόστρωμα ADODB για να μπορεί να "μιλάει" με πολλές διαφορετικές βάσεις και πρέπει οι εντολές να είναι συμβατές με αυτό.
παράδειγμα:
το limit σε ένα query δεν μπαίνει μέσα στο Query.
mambo/joomla:
$query = "SELECT * FROM #__test LIMIT 5";
$database->setQuery ($query);
$rows = $database->loadObjectList();
elxis:
$query = "SELECT * FROM #__test";
$database->setQuery ($query, '#__', 5, 0);
$rows = $database->loadObjectList();
άλλο παράδειγμα:
Αν θέλουμε να κάνουμε debugging μπορούμε να γράψουμε αυτό:
$database->_resource->debug = true;
To $database->resource μας αφήνει να μιλάμε κατευθείαν με το ADODB (αν και ποτέ σχεδόν δεν χρειάζεται). Έτσι μπορούμε αν θέλουμε να γράφουμε εντολές γα εκτέλεση ενός query έτσι: $database->_resource->execute(.....);
«
Last Edit: November 01, 2006, 08:54:11 by datahell
»
Logged
Elxis Team
|
Is Open Source
|
IOS Rentals | IOS AERO
datahell
Elxis Team
Hero Member
Posts: 10356
Re: Συμβατά κατόπιν μετατροπής
«
Reply #2 on:
November 01, 2006, 08:35:23 »
Γλώσσα:
Το elxis στη διαχείρηση χρησιμοποιεί την κλάση
adminLanguage
ενώ στο δημόσιο τμήμα
σταθερές
. Οι σταθερές αυτές προέρχονται από το mambo αλλά κάποιες έχουν μετονομαστεί ενώ έχουν προστεθεί και νέες. Για τα XML αρχεία το elxis χρησιμοποιεί την κλάση
xmlLanguage
. Τα Mambo και joomla (από όσο ξέρω) δεν υποστηρίζουν πολυγλωσσία/μετάφραση στα xml αρχεία. Η μετάφραση των strings στα xml αρχεία γίνεται με την μέθεδο "εύρεσης/αντικατάσταση".
Παράδειγμα στις παραμέτρους ενός module:
<param name="cache" type="radio" default="0" label="AX_SM_ECL" description="AX_SM_ECD">
<option value="0">AX_NO</option>
<option value="1">AX_YES</option>
</param>
Τα AX_... μετατρέπονται στα αντιστοιχα strings της γλώσσας σας (πχ το AX_YES σε Ναι)
Logged
Elxis Team
|
Is Open Source
|
IOS Rentals | IOS AERO
eliasan
Hero Member
Posts: 897
Re: Συμβατά κατόπιν μετατροπής
«
Reply #3 on:
November 01, 2006, 08:45:30 »
Αν κάποιος θέλει να αρχίσει να μαθαίνει τα "μυστικά" και τις λεπτομέρειες των μετατροπών, προτείνω να κάνει το εξής:
Να συγκρίνει το κώδικα ενός πρόσθετου που είχε αρχικά αναπτυχθεί για το Mambo, με τον αντίστοιχο του Elxis.
Αυτός κατά τη γνώμη μου είναι ο καλύτερος τρόπος για να καταλάβει τα βασικά.
Οι βασικές διαφορές βρίσκονται:
- Στην υποστήριξη πολυγλωσσίας στο δημόσιο τμήμα και στο τμήμα της διαχείρισης
- Στην υλοποίηση της αλλαγής γλώσσας (ποιες μεταβλητές εξετάζουμε)
- Στην ενσωμάτωση των ελέγχων για τον Access Manager
- Στη τροποποίηση του τμήματος διαχείρισης ώστε να υποστηρίζει και να εμφανίζει τα χειριστήρια για την πολυγλωσσία και τις Ομάδες Χρηστών
- Την αξιοποίηση του ADODB και των συναρτήσεων του File Manager
Είμαι σίγουρος ότι ξεχνώ κάτι, γι' αυτό θεωρώ ότι η παραπάνω λίστα είναι ανοικτή σε προσθήκες
«
Last Edit: November 01, 2006, 08:50:37 by eliasan
»
Logged
datahell
Elxis Team
Hero Member
Posts: 10356
Re: Συμβατά κατόπιν μετατροπής
«
Reply #4 on:
November 01, 2006, 08:47:38 »
Διαχείριση πρόσβασης
Στο Elxis τα (με συγχρωρείτε για την έκφραση) ηλίθια ψεύδο-group "visitor, registered, special" (με group id 0,1,2) των mambo/joomla έχουν καταργηθεί. Κάθε χρήστης εκπροσωπείται από το πραγματικό του group (public frontend, registred, author, κλπ) με groupd id αυτό του πραγματικού group (29, 18 κλπ).
Συνεπώς η παρουσία ελέγχων όπως: $my->gid > 1 των mambo/joomla δεν έχει καμία έννοια στο elxis, είναι μάλιστα επικίνδυνη. Η πρόσβαση κάθε χρήστη μέσα σε ένα elxis site χαρακτηρίζεται από μία ακολουθία αριθμών που αποτελείται από όλα τα group id στα οποία έχει πρόσβαση. Αυτή η ακολουθια δημιουργείται από το group id της Ομάδας του και όλων των γονικών ομάδων του. Για παράδειγμα αν είμαι Author, τότε έχω πρόσβαση στα αντικείμεν απου μπορεί να δει ο author αλλά και σε αυτά που μπορούν να δουν οι registered users αλλά και σε αυτά που μπορούν να δουν οι επισκέπτες. Αν αντιστοιχήσω αυτά τα 3 με τα αντίστοιχα group id τότε προκύπτει ότι η πρόσβαση του author χαρακτηρίζεται από τα group id: 19 (author), 18 (registered) και 29 (Public FrontEnd). Βάζοντας τα στη σειρά έχουμε: 19,18,29. Αυτή η ακολουθία παράγεται αυτόματα στο elxis για κάθε χρήστη με βάση την ιεραρχία των ομάδων όπως την έχετε ορίσει στον access manager και μπορείτε να την λάβετε έτσι:
$my->allowed
.
Αν θελουμε να κάνουμε ένα query στη βάση ώστε να τραβήξουμε μόνο τα δεδομένα που επιτρέπεται να δει κάποιος χρήστης θα πρέπει αυτό να περιέχει κάτι σαν το ακόλουθο:
$query = "SELECT.... WHERE.... AND access IN (".$my->alllowed.") ...";
«
Last Edit: November 01, 2006, 08:53:37 by eliasan
»
Logged
Elxis Team
|
Is Open Source
|
IOS Rentals | IOS AERO
datahell
Elxis Team
Hero Member
Posts: 10356
Re: Συμβατά κατόπιν μετατροπής
«
Reply #5 on:
November 01, 2006, 09:03:21 »
Με τη βοήθεια του ADODB μπορούμε να φτιάχνουμε εφαρμογές που να εγκαθίστανται σε οποιαδήποτε βάση δεδομένων και όχι μόνο MySQL. Η διαδικασία μάλιστα είναι πιο εύκολη ακόμα και από την συγγραφή μόνο για Mysql. Για να πετύχουμε αυτό δεν γράφουμε τα queries εντός του intall.xxx.php του component αλλά δημιουργούμε ένα xml αρχείο (schema) όπου οι εντολές σχηματισμού των πινάκων περνάνε εκεί με τρόπο κατανοητό για το ADODB.
παράδειγμα:
<?xml version="1.0"?>
<schema version="0.2">
<table name="stargallery">
<field name="id" type="I">
<KEY/>
<AUTOINCREMENT/>
</field>
<field name="catid" type="I">
<NOTNULL/>
<DEFAULT value="0"/>
</field>
<field name="imgtitle" type="X"></field>
<field name="imgauthor" type="C" size="50"></field>
<field name="imgtext" type="X"></field>
<field name="imgdate" type="T">
<NOTNULL/>
<DEFAULT value="1979-12-19 00:00:00"/>
</field>
<field name="imgcounter" type="I">
<NOTNULL/>
<DEFAULT value="0"/>
</field>
<field name="imgvotes" type="I">
<NOTNULL/>
<DEFAULT value="0"/>
</field>
<field name="imgvotesum" type="I">
<NOTNULL/>
<DEFAULT value="0"/>
</field>
<field name="published" type="I4">
<NOTNULL/>
<DEFAULT value="0"/>
</field>
<field name="imgfilename" type="C" size="200"></field>
<field name="imgthumbname" type="C" size="200"></field>
<field name="checked_out" type="I4">
<NOTNULL/>
<DEFAULT value="0"/>
</field>
<field name="owner" type="C" size="50"></field>
<field name="approved" type="I4">
<NOTNULL/>
<DEFAULT value="0"/>
</field>
<field name="useruploaded" type="I4">
<NOTNULL/>
<DEFAULT value="0"/>
</field>
</table>
</schema>
Ι σημαίνει Integer, X text, C varchar κλπ. Σημειώστε πως δεν χρειάζεται να γράφουμε #__ ή το πρόθεμα των πινάκων. Πηγαίντε στη σελίδα του adodb ή ψάξτε στο internet για αναλυτικές πληροφορίες.
Κατόπιν αυτό το xml γίνεται parse από το adodb.
Παράδειγμα:
require_once( $mosConfig_absolute_path.'/includes/adodb/adodb-xmlschema.inc.php' );
$schema = new adoSchema( $database->_resource );
$schema->ContinueOnError( true );
$schema->SetPrefix( $mosConfig_dbprefix );
$schema->ParseSchema( $schemafile );
$schema->ExecuteSchema();
Δείτε πως είναι κατασκευασμένη η
StarGallery
ως παράδειγμα.
«
Last Edit: November 01, 2006, 09:50:05 by datahell
»
Logged
Elxis Team
|
Is Open Source
|
IOS Rentals | IOS AERO
Print
Pages: [
1
]
« previous
next »
Elxis CMS Forum
»
Ελληνικό Forum
»
Γενικά Θέματα για το Elxis CMS
(Moderators:
CREATIVE Options
,
akalant
) »
Συμβατά κατόπιν μετατροπής