osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [résolu]Custom Dashboard
foayiid
posté 18 Apr 2012, 21:59
Message #1


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 168
Inscrit : 18-August 06
Lieu : PACA
Membre no 11589



Salut,

Je reprends le sujet entammé il y a quelques semaines sur le forum international.
Non je ne travaille pas sur un module payant au passage.
Donc quand on met un fichier test dans le module dashboard de l'admin du Core c'est OK.
Par contre quand on met le meme fichier dans le custom, là rien ne sort.

J'ai parcouru le code dans tous les sens et je ne comprends pas d'ou vient le bug.
J'ai du louper quelquechose ...

Voici le fichier de test (Test.php)

Code
<?php
   namespace osCommerce\OM\Core\Site\Admin\Module\Dashboard;

   use osCommerce\OM\Core\Registry;
   use osCommerce\OM\Core\HTML;
   use osCommerce\OM\Core\OSCOM;
   use osCommerce\OM\Core\Access;

   class Test extends \osCommerce\OM\Core\Site\Admin\IndexModulesAbstract {
     public function __construct() {
       //Registry::get('Language')->loadIniFile('modules/Dashboard/Reviews.php');

       $this->_title = 'Test';
       $this->_title_link = OSCOM::getLink(null, 'Reviews');
       $this->_data = 'This is a test';
     }
   }


--------------------
MS2.2 RC2a ne ressemblant plus à rien de connu et bientôt migration sur OSC 12 ^^
Go to the top of the page
 
lorem_ipsum
posté 19 Apr 2012, 16:52
Message #2


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 120
Inscrit : 18-March 08
Lieu : Toulouse
Membre no 21188



hmmm ici ça marche ^^
Regardes du coté du nom de tes repertoires... Module sans "s" et avec un M maj wink.gif


--------------------
osCommerce v2.2 RC2a 2.3.1 :P version killeuse de prestachoux et magentruc
Go to the top of the page
 
foayiid
posté 19 Apr 2012, 17:20
Message #3


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 168
Inscrit : 18-August 06
Lieu : PACA
Membre no 11589



Sans rires, ça fonctionne chez toi ?
Zut alors il me fait des blagues ce logiciel ... blink.gif
Pas de probleme de path car quand je mets dans le custom un fichier existant du core (du genre Customers.php) mon fichier pris en compte est bien celui du custom.
Par contre mon fichier Test.php à côté lui, que dale !

Est-ce que tu as bien supprimé ton fichier /osCommerce/OM/Core/Site/Admin/Module/Dashboard/Test.php ??


--------------------
MS2.2 RC2a ne ressemblant plus à rien de connu et bientôt migration sur OSC 12 ^^
Go to the top of the page
 
FoxP2
posté 20 Apr 2012, 08:33
Message #4


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1665
Inscrit : 3-June 09
Membre no 25501



les modules sont appelés par \osCommerce\OM\Core\Site\Admin\Application\Dashboard\Model\getModules.php :

Code
$module_class = 'osCommerce\\OM\\Core\\Site\\Admin\\Module\\Dashboard\\' . $module;


c'est donc ce fichier que tu dois overrider dans le dossier Custom pour en changer le comportement.
Go to the top of the page
 
lorem_ipsum
posté 20 Apr 2012, 09:41
Message #5


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 120
Inscrit : 18-March 08
Lieu : Toulouse
Membre no 21188



Effectivement je n'avais pas supprimé celui du Core... comme le dit foxP2 tu dois overwritter le getModule.php.

Ce message a été modifié par lorem_ipsum - 20 Apr 2012, 09:42.


--------------------
osCommerce v2.2 RC2a 2.3.1 :P version killeuse de prestachoux et magentruc
Go to the top of the page
 
foayiid
posté 20 Apr 2012, 16:05
Message #6


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 168
Inscrit : 18-August 06
Lieu : PACA
Membre no 11589



Bien vu !
Mais n'est-ce pas un soucis ? le framework ne devrait-il pas le faire automatiquement à votre avis ?


--------------------
MS2.2 RC2a ne ressemblant plus à rien de connu et bientôt migration sur OSC 12 ^^
Go to the top of the page
 
lorem_ipsum
posté 20 Apr 2012, 18:16
Message #7


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 120
Inscrit : 18-March 08
Lieu : Toulouse
Membre no 21188



Je me suis posé la mm question, mais bon ça ne me choque pas.
Perso je regarde le bébé sous la forme de plusieurs "applications". Dans ton cas tu veux écraser/modifier l'application dashboard, donc tu dois prendre controller...model...(en particulier celui qui lui dit où loader) pour inclure ton modules test.
Bon c'est un peu brouillon mais si t'as les mains dedans et suite au manque de doc.... je pense qu'on se comprend... biggrin.gif



--------------------
osCommerce v2.2 RC2a 2.3.1 :P version killeuse de prestachoux et magentruc
Go to the top of the page
 
FoxP2
posté 13 Aug 2012, 13:49
Message #8


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1665
Inscrit : 3-June 09
Membre no 25501



Citation (foayiid @ 20 Apr 2012, 16:05) *
Bien vu !
Mais n'est-ce pas un soucis ? le framework ne devrait-il pas le faire automatiquement à votre avis ?

oui.
un oubli ?

qui peut être corrigé facilement :

modification du fichier \osCommerce\OM\Core\Site\Admin\Application\Dashboard\Model\getModules.php :

Code
<?php
/**
* osCommerce Online Merchant
*
* @copyright Copyright (c) 2011 osCommerce; http://www.oscommerce.com
*  @copyright Copyright (c) 2012 FoxP2
* @license BSD License; http://www.oscommerce.com/bsdlicense.txt
*/

  namespace osCommerce\OM\Core\Site\Admin\Application\Dashboard\Model;

  use osCommerce\OM\Core\DirectoryListing;
  use osCommerce\OM\Core\OSCOM;

  class getModules {      
      
    public static function execute() {
    
      $result = array();
      $modules = array();
      
      $OSCOM_DirectoryListing = new DirectoryListing(OSCOM::BASE_DIRECTORY . 'Custom/Site/Admin/Module/Dashboard');
      $OSCOM_DirectoryListing->setIncludeDirectories(false);      

      foreach ( $OSCOM_DirectoryListing->getFiles() as $file ) {
        $module = substr($file['name'], 0, strrpos($file['name'], '.'));      
        $modules[] = $module;
      }
      
      $OSCOM_DirectoryListing = new DirectoryListing(OSCOM::BASE_DIRECTORY . 'Core/Site/Admin/Module/Dashboard');
      $OSCOM_DirectoryListing->setIncludeDirectories(false);
      
      foreach ( $OSCOM_DirectoryListing->getFiles() as $file ) {
        $module = substr($file['name'], 0, strrpos($file['name'], '.'));        
          if( !in_array($module,$modules) ) {
          $modules[] = $module;
          }
      }
      foreach ( $modules as $mod ) {
           $module_class = 'osCommerce\\OM\\Core\\Site\\Admin\\Module\\Dashboard\\' . $mod;
          
           $OSCOM_Admin_DB_Module = new $module_class();
          
           if ( $OSCOM_Admin_DB_Module->hasData()) {
                $result[] = array('module' => $module,
                                  'title' => $OSCOM_Admin_DB_Module->getTitle(),
                                  'link' => $OSCOM_Admin_DB_Module->hasTitleLink() ? $OSCOM_Admin_DB_Module->getTitleLink() : null,
                                  'data' => $OSCOM_Admin_DB_Module->getData());
            }
          }    
      return $result;
    }
  }
?>


donc pour overrider un module déjà existant, exemple avec Customers.php :
créer dans le répertoire Custom les dossiers suivants (en respectant la hiérarchie) :
- Site
-- Admin
--- Module
----Dashboard
copier/coller le fichier \osCommerce\OM\Core\Site\Admin\Module\Dashboard\Customers.php dans le dossier Dashboard.

Code
<?php
/**
  * osCommerce Online Merchant
  *
  * @copyright Copyright (c) 2011 osCommerce; http://www.oscommerce.com
  * @license BSD License; http://www.oscommerce.com/bsdlicense.txt
  */

   namespace osCommerce\OM\Core\Site\Admin\Module\Dashboard;

   use osCommerce\OM\Core\Access;
   use osCommerce\OM\Core\HTML;
   use osCommerce\OM\Core\OSCOM;
   use osCommerce\OM\Core\Registry;

/**
  * @since v3.0.4
  */

   class Customers extends \osCommerce\OM\Core\Site\Admin\IndexModulesAbstract {

.../...


ajouter un nouveau module ? Même principe.
Code
<?php
/**
  * osCommerce Online Merchant
  *
  * @copyright Copyright (c) 2011 osCommerce; http://www.oscommerce.com
  * @license BSD License; http://www.oscommerce.com/bsdlicense.txt
  */

   namespace osCommerce\OM\Core\Site\Admin\Module\Dashboard;

   use class core ...;

/**
  * @since v3.0.4
  */

   class MaClasse extends \osCommerce\OM\Core\Site\Admin\IndexModulesAbstract {

.../...


je passe le sujet en résolu. happy.gif
Raison de l'édition : Simplification du code
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 28th March 2024 - 18:15
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)