FIXED: Fußzeile des »Developer Addon« wird nicht sichtbar

Jede Art von Fehler die REDAXO betreffen.

FIXED: Fußzeile des »Developer Addon« wird nicht sichtbar

Beitragvon chekka » 26. Jul 2007, 08:55

Ich arbeite schon lange mit dem »Developer Addon«, das hat mir viel Zeit und viele Klicks erspart. Nun habe ich redaxo3_3b2 laufen und stelle fest, dass das geliebte Addon nicht mehr funktioniert. Stehe ich auf dem Schlauch oder ist das tatsächlich so?

Wenn ja, bitte schnell überarbeiten oder Hilfe geben, damit es wieder funktioniert.

Eigentlich sollte diese Funktion ohnehin als fester Bestandteil in redaxo aufgenommen werden.
Benutzeravatar
chekka
 
Beiträge: 14
Registriert: 12. Jan 2007, 09:36
Wohnort: München

Re: Fußzeile des »Developer Addon« wird nicht sichtbar

Beitragvon Thomas.Blum » 26. Jul 2007, 10:45

Hej,

chekka hat geschrieben:Wenn ja, bitte schnell überarbeiten oder Hilfe geben, damit es wieder funktioniert.

Ohne es angesehen zu haben, vermute ich, dass du in der config die regex anpassen musst.


chekka hat geschrieben:Eigentlich sollte diese Funktion ohnehin als fester Bestandteil in redaxo aufgenommen werden.

Warum? Welchen plausiblen Grund gibt es, es mit in den Kern aufzunehmen?

vg Thomas
blumbeet - web.studio - Dresden - 0351 217 6225
webbude - Blog über CSS.XHTML.REX
Ein Wunschzettel
Benutzeravatar
Thomas.Blum
Entwickler
 
Beiträge: 4670
Registriert: 24. Aug 2004, 21:11
Wohnort: Dresden

Beitragvon chekka » 26. Jul 2007, 10:52

Warum? Welchen plausiblen Grund gibt es, es mit in den Kern aufzunehmen?

Nun ja, weil das editieren in einem texteditor wie »textwargler« deutlich schneller und komfortabler ist als das Überarbeiten der Templates und Module im Backend. Oder habe ich bei redaxo noch etwas nicht verstanden?

In jedem Fall: Danke für Deine schnelle Antwort.

gruß,
der chekka :wink:
Benutzeravatar
chekka
 
Beiträge: 14
Registriert: 12. Jan 2007, 09:36
Wohnort: München

Beitragvon n.ruediger » 26. Jul 2007, 15:21

Hallo,

war kein Regex, sondern ne Anpassung beim ersetzten. Weil vorher ja Tabellen benutzt wurden, die es nicht mehr gibt. Ich hab die Anpassungen an der Datei functions.inc.php im Ordner classes gemacht. Da ich es nicht hochstellen kann, hier der Inhalt - einfach zum Austauschen:

Code: Alles auswählen
<?php

function backendEdit($params){
    global $REX,$REX_USER;
    if($REX_USER){
       if($REX_USER->isValueOf("rights","developer[]")){
           $content = $params['subject'];
           if($REX[ADDON][DEVELOPER][STATUS][MODULES]=="true") $developer_modules = "checked";
           if($REX[ADDON][DEVELOPER][STATUS][TEMPLATES]=="true") $developer_templates = "checked";
           $replace = '
           <script>
           if (document.implementation && document.implementation.createDocument)
           {
               xmlDoc = document.implementation.createDocument("", "", null);
               xmlDoc.onload = function() { alert("Status gesetzt"); };
           }
           else if (window.ActiveXObject)
           {
               xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
               xmlDoc.onreadystatechange = function () {
                   if (xmlDoc.readyState == 4) alert("Status gesetzt");
               };
           }
           function saveStatus(obj){
               status_modules = obj.developer_modules.checked;
               status_templates = obj.developer_templates.checked;
               var url = "./index.php?page=developer&function=setStatus&status_modules="+status_modules+"&status_templates="+status_templates;
               xmlDoc.load(url);
               //prompt("debug",url);
               return false;
           }
           </script>
           ';
           $replace .= '<form name=addon_developer onSubmit="return saveStatus(this);" style=display:inline>';
           $replace .= "<table cellpadding=0 cellspacing=0><tr><th style=\"padding: 0em 1em 0em 0em; color:#000000\">";
           $replace .= "Redaxo Developer Addon: ";
           $replace .= "</th><th style=\"padding: 0em 0.3em 0em 0em;\">";
           $replace .= "<input type=checkbox name=developer_modules value=1 $developer_modules> ";
           $replace .= "</th><th style=\"padding: 0em 1em 0em 0em; color:#000000\">";
           $replace .= "Module automatisch updaten &nbsp;";
           $replace .= "</th><th style=\"padding: 0em 0.3em 0em 0em;\">";
           $replace .= "<input type=checkbox name=developer_templates value=1 $developer_templates> ";
           $replace .= "</th><th style=\"padding: 0em 1em 0em 0em; color:#000000\">";
           $replace .= "Templates automatisch updaten &nbsp;";
           $replace .= "</th><th>";
           $replace .= "<input type=submit value=ok> ";
           $replace .= "</th></table>";
           $replace .= "</form>";
           $content = str_replace('<div id="rex-ftr">','<div id="rex-ftr"><div style="background-color: #AAB9A8; margin: 0em; padding: 0.5em; color: #000000;"><strong>'.$replace.'</strong></div>',$content);
           return $content;
       }
   }
}

function regenerateArticlesByJavascript($params){
    global $REX;
    if($REX[ADDON][developer][regenerate]){
        $regenerateString = $REX[ADDON][developer][regenerate];
        $content = $params['subject'];
        $content = '
        <div style="position: absolute; top: 10px; left: 10px;background-color:#EFEFEF;border:2px solid;padding:4px; font-family: tahoma, verdana, sans-serif; font-size: 11px; width: 200px;"><b>Redaxo Developer Addon regenerating Articles:</b>
        <div id="status"></div>
        </div>
        <script>
        function status(count)
        {
            var div = document.getElementById("status");
            if(div)
                div.innerHTML += "· ";
            count++;
            window.setTimeout("status(" + count + ");", 50);
        }
        status(0);

        function rel()
        {
            location.reload();
        }

        if (document.implementation && document.implementation.createDocument)
                {
                    xmlDoc = document.implementation.createDocument("", "", null);
                    xmlDoc.onload = function() { rel(); };
                }
                else if (window.ActiveXObject)
                {
                    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                    xmlDoc.onreadystatechange = function () {
                        if (xmlDoc.readyState == 4) rel()
                    };
                }
                else
                {
                    alert("Your browser cant handle this script");
                }
                var url = "./redaxo/index.php?page=developer&function=update&modules='.$regenerateString.'";
                //document.write(url);
                xmlDoc.load(url);
        </script>
        ';

        return $content;
    }
}
?>


Liebe Grüße,
Nicole

//Edit: Wozu man es braucht, ich weiß es auch nicht...
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)

Beitragvon chekka » 26. Jul 2007, 15:52

Supi, das klappt ja FAST ...
Leider wird im »live_edit« ordner die »status.inc.php« nicht beschrieben, bzw. auf »true« gesetzt. Wenn man das allerdings manuell macht dann klappt’s.

Zumindest kann ich jetzt so wieder damit arbeiten.

By the way ...
Ich verstehe wirklich nicht wieso jemand dieses Addon nicht super genial findet. Muss ich aber auch nicht. Mich macht es glücklich, das reicht mir!

Als dann, beste Grüße nach Frankfurt (Oder)
und vielen, vielen Dank an Dich, Nicole!

der chekka
Benutzeravatar
chekka
 
Beiträge: 14
Registriert: 12. Jan 2007, 09:36
Wohnort: München

Beitragvon n.ruediger » 26. Jul 2007, 15:58

Hast du denn die Schreibrechte für den Ordner und die Datei gesetzt?

Liebe Grüße,
Nicole

P.S.: Ich kopier mir den Code einfach in mein Editor, bearbeite ihn und kopiere ihn zurück...
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)

Beitragvon chekka » 26. Jul 2007, 16:15

Hast du denn die Schreibrechte für den Ordner und die Datei gesetzt?

Rechte sind auf 777.

Was mir da gerade noch aufgefallen ist:
Die Templates werden im »live_edit/templates« ordner angelegt, die Module leider nicht!

P.S.: Ich kopier mir den Code einfach in mein Editor, bearbeite ihn und kopiere ihn zurück...

Aber es ist doch so wunderbar, wenn ich mit »Textwrangler« die entsprechende Datei direkt auf dem Server öffnen, bearbeiten und sichern kann. Keine Kopieraction mehr! Niewieder!!!
:lol:

grüße!
Benutzeravatar
chekka
 
Beiträge: 14
Registriert: 12. Jan 2007, 09:36
Wohnort: München

Beitragvon Ruediger.Nitzsche » 26. Jul 2007, 16:54

chekka hat geschrieben:Aber es ist doch so wunderbar, wenn ich mit »Textwrangler« die entsprechende Datei direkt auf dem Server öffnen, bearbeiten und sichern kann. Keine Kopieraction mehr! Niewieder!!!


Aus dem Grund haben wir das Templatesystem von Redaxo für uns angepasst und ausgelagert, ist aber alles Geschmackssache.

Rüdiger
GN2 netwerk | GN2 hosting | REDAXO Referenzen
Supportanfragen per PN werden gepflegt ignoriert
Benutzeravatar
Ruediger.Nitzsche
 
Beiträge: 1900
Registriert: 13. Dez 2005, 08:29
Wohnort: Coburg

Beitragvon n.ruediger » 26. Jul 2007, 19:01

chekka hat geschrieben:Was mir da gerade noch aufgefallen ist:
Die Templates werden im »live_edit/templates« ordner angelegt, die Module leider nicht!


Die Module sollten eigentlich im Ordner live_edit/module landen. Ich hab das Addon ja nicht geschrieben, aber läuft es denn mit der Anpassung oder soll ich mir das noch mal genauer ansehen?

Liebe Grüße,
Nicole
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)

Beitragvon chekka » 26. Jul 2007, 19:06

... oder soll ich mir das noch mal genauer ansehen?

Ich komme gerade wegen eines Auftrags nicht dazu.
Wenn Du Du Zeit und Muse hast, denn wäre das ’ne tolle Sache!

Ich sag’ jetzt schon mal „DANKE”!
chekka
Der erste Trunk aus dem Becher der
Naturwissenschaft macht atheistisch;
aber auf dem Grund des Bechers
wartet Gott.

Werner Heisenberg, *1901 - †1976
Physiknobelpreis 1932
Benutzeravatar
chekka
 
Beiträge: 14
Registriert: 12. Jan 2007, 09:36
Wohnort: München

Beitragvon Thomas.Blum » 26. Jul 2007, 19:26

Hej,

n.ruediger hat geschrieben:P.S.: Ich kopier mir den Code einfach in mein Editor, bearbeite ihn und kopiere ihn zurück...


Geauso arbeite ich auch. Damals hatte das Addon noch Fehler, so dass es passieren konnte, dass die Templates sich gegenseitig überschrieben hatten.

vg Thomas
blumbeet - web.studio - Dresden - 0351 217 6225
webbude - Blog über CSS.XHTML.REX
Ein Wunschzettel
Benutzeravatar
Thomas.Blum
Entwickler
 
Beiträge: 4670
Registriert: 24. Aug 2004, 21:11
Wohnort: Dresden

Beitragvon chekka » 26. Jul 2007, 20:28

... so dass es passieren konnte, dass die Templates sich gegenseitig überschrieben hatten.

Ich hatte echt noch nie Schwierigkeiten damit, ehrlich!
Bald nachdem ich REDAXO entdeckt hatte stieß ich auch auf das DEV.ADD und seit da benutze ich es intensivst. Es hat mich nie enttäuscht.

ALLERDINGS: Man muss sich natürlich an das Handling gewöhnen.
Wenn man nämlich duch mal schnell im Backend was ändern möchte muss man das Addon zuerst ausschalten. Das habe ich auch nicht sofort geCHEKKAt.

Das wäre übrigens ein SUPER feature, wenn man sowohl als auch (online-editing UND backend-editing) verwenden könnte.

chekk it out!
Der erste Trunk aus dem Becher der
Naturwissenschaft macht atheistisch;
aber auf dem Grund des Bechers
wartet Gott.

Werner Heisenberg, *1901 - †1976
Physiknobelpreis 1932
Benutzeravatar
chekka
 
Beiträge: 14
Registriert: 12. Jan 2007, 09:36
Wohnort: München

Beitragvon n.ruediger » 26. Jul 2007, 21:10

Hallo,

hier die Anpassung für die Datei "class.live_edit.inc.php" um auch die Module bearbeiten zu können.

Code: Alles auswählen
<?php
class liveEdit {

    var $livePath;
    var $ModulePath = "modules/";
    var $ModuleInputExtension = ".input.php";
    var $ModuleOutputExtension = ".output.php";
    var $TemplatePath = "templates/";
   var $TemplateExtension = ".template.php";

    function liveEdit(){
        global $REX;
        $this->livePath = $REX[ADDON][developer][live_edit_path];
    }

    function getModuleFiles(){
       if ($handle = opendir($this->livePath.$this->ModulePath)) {
          while (false !== ($file = readdir($handle))) {
              if ($file != "." && $file != "..") {
                 if(strstr($file,$this->ModuleInputExtension)){
                    $id = str_replace($this->ModuleInputExtension,"",$file);
                    $moduleFiles[] = $id;
                 }
              }
          }
          closedir($handle);
         return $moduleFiles;
       }
    }
    function getTemplateFiles(){
       if ($handle = opendir($this->livePath.$this->TemplatePath)) {
          while (false !== ($file = readdir($handle))) {
              if ($file != "." && $file != "..") {
                    $id = str_replace($this->TemplateExtension,"",$file);
                    $templateFiles[] = $id;
              }
          }
          closedir($handle);
         return $templateFiles;
       }
    }
    function getModulesFormDB(){
        global $REX;
      $db = new rex_sql();
      $sql = "SELECT id,ausgabe,eingabe FROM ".$REX['TABLE_PREFIX']."module";
      $dbResult = $db->getArray($sql);
      if(is_array($dbResult)){
         foreach($dbResult as $var){
             $modules[$var[id]][eingabe] = $var[eingabe];
             $modules[$var[id]][ausgabe] = $var[ausgabe];
         }

         return $modules;
      }


    }
    function getTemplatesFormDB(){
        global $REX;
      $db = new rex_sql();
      $sql = "SELECT id,content FROM ".$REX['TABLE_PREFIX']."template";
      $dbResult = $db->getArray($sql);
      if(is_array($dbResult)){
         foreach($dbResult as $var){
             $templates[$var[id]] = $var[content];
         }
         return $templates;
      }


    }
    function writeModuleFiles($overwrite=false){
        $modulesFiles = $this->getModuleFiles();
        $modulesDB = $this->getModulesFormDB();
        if(is_array($modulesDB)){
            foreach($modulesDB as $key=>$var){
                if(!@in_array($key,$modulesFiles) || $overwrite==true){
                    $inputFilename = $this->livePath.$this->ModulePath.$key.$this->ModuleInputExtension;
               $outputFilename = $this->livePath.$this->ModulePath.$key.$this->ModuleOutputExtension;
               $this->writeFile($inputFilename,$var[eingabe]);
               $this->writeFile($outputFilename,$var[ausgabe]);
               //print "wrote $outputFilename<br>";
            }

            }
        }
    }
    function writeTemplateFiles($overwrite=false){
        $templateFiles = $this->getTemplateFiles();
        $templatesDB = $this->getTemplatesFormDB();
        if(is_array($templatesDB)){
            foreach($templatesDB as $key=>$var){
                if(!@in_array($key,$templateFiles) || $overwrite==true){
               $templateFilename = $this->livePath.$this->TemplatePath.$key.$this->TemplateExtension;
               $this->writeFile($templateFilename,$var);
               //print "wrote $templateFilename<br>";
            }

            }
        }
    }
    function setConfigValue($filename,$valuename,$value){
      $content = file_get_contents($filename);
      $content = preg_replace("/\[$valuename\] = .*;/imsU","[$valuename] = \"".$value."\";",$content);
      $this->writeFile($filename,$content);
    }
    function writeFile($filename,$content){
        $handle = fopen($filename, 'w');
        fwrite($handle, $content);
        fclose($handle);
        @chmod($filename,0777);
    }
    function syncModules(){
        global $REX;
       $moduleFiles = $this->getModuleFiles();
       if(is_array($moduleFiles)){
           foreach($moduleFiles as $modId){
               if(file_exists($this->livePath.$this->ModulePath.$modId.$this->ModuleInputExtension) && file_exists($this->livePath.$this->ModulePath.$modId.$this->ModuleOutputExtension)){
                   $eingabe =  file_get_contents($this->livePath.$this->ModulePath.$modId.$this->ModuleInputExtension);
                   $ausgabe =  file_get_contents($this->livePath.$this->ModulePath.$modId.$this->ModuleOutputExtension);
                   $db = new rex_sql();
                   $sql = "UPDATE ".$REX['TABLE_PREFIX']."module SET eingabe='".mysql_escape_string($eingabe)."', ausgabe='".mysql_escape_string($ausgabe)."' WHERE id='$modId'";
                   $db->setQuery($sql);
                   if(mysql_affected_rows($db->identifier)!=0){
                       $regenerate .= $modId."__";
                       //print "generated db".$modId."<br>";
                   }
               }
           }
       }
       if($REX['REDAXO']){
         $this->regenerateArticlesByModultypId($modules);
      }
       return $regenerate;
    }
    function syncTemplates(){
        global $REX;
       $templateFiles = $this->getTemplateFiles();
       if(is_array($templateFiles)){
           foreach($templateFiles as $templateId){
               if(file_exists($this->livePath.$this->TemplatePath.$templateId.$this->TemplateExtension)){
                   $content =  file_get_contents($this->livePath.$this->TemplatePath.$templateId.$this->TemplateExtension);
                   $db = new rex_sql();
                   $sql = "UPDATE ".$REX['TABLE_PREFIX']."template SET content='".mysql_escape_string($content)."' WHERE id='$templateId'";
                   $db->setQuery($sql);
                   if(mysql_affected_rows($db->identifier)>0){
                       $this->generateTemplate($templateId,$content);
                       //print "generated template db".$templateId."<br>";
                   }
               }
           }
       }
    }
    function generateTemplate($templateId){
        global $REX;

        $templatePathDeveloper = $this->livePath.$this->TemplatePath.$templateId.$this->TemplateExtension;
        $templatePathRedaxo = $REX['INCLUDE_PATH']."/generated/templates/".$templateId.".template";
        copy($templatePathDeveloper,$templatePathRedaxo);
    }
    function regenerateArticlesByModultypId($modules){
       global $PHP_SELF, $module_id, $FORM, $REX_USER, $REX, $I18N;
       include_once($REX[INCLUDE_PATH]."/clang.inc.php");
       $modules = explode("__",$modules);
       array_pop($modules);
       $gc = new rex_sql;
       foreach($modules as $modul_id){
           $gc->setQuery("SELECT DISTINCT(".$REX['TABLE_PREFIX']."article.id) FROM ".$REX['TABLE_PREFIX']."article
           LEFT JOIN ".$REX['TABLE_PREFIX']."article_slice ON ".$REX['TABLE_PREFIX']."article.id=".$REX['TABLE_PREFIX']."article_slice.article_id
           WHERE ".$REX['TABLE_PREFIX']."article_slice.modultyp_id='$modul_id'");
           for ($i=0; $i<$gc->getRows(); $i++)
           {
               rex_generateArticle($gc->getValue($REX['TABLE_PREFIX']."article.id"));
               $gc->next();
           }
       }
    }
   function developer_setStatus($what='modules',$status=false){
       global $REX;
       $statusFile = $REX[ADDON][developer][live_edit_path]."status.inc.php";
       $stat = $status == "true" ? "true" : "false";
       $this->setConfigValue($statusFile,$what,$status);
       if($what == "MODULES" && $stat == "true"){
           $this->writeModuleFiles(true);
       }
       if($what == "TEMPLATES" && $stat == "true"){
           $this->writeTemplateFiles(true);
       }
   }
}
?>


Liebe Grüße,
Nicole
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)

Beitragvon n.ruediger » 26. Jul 2007, 21:52

So, zu guter letzt noch das Update, um auch das Backend wieder nutzen zu können. Jetzt wird nur noch in der Datenbank geupdatet, wenn das Änderungsdatum der Datei neuer ist, als der Moduleintrag. Dabei wird unterschieden, ob nur die Eingabe und/oder die Ausgabe geändert wurden.

Da ich das Addon nicht intensiv getestet habe, erfolgt die Benutzung auf eigene Gefahr. Ich bin aber gern bereit eventuelle Fehler (ich glaube aber nicht, dass die da sind ;-)) wieder auszubügeln.

Datei ist wieder die class.live_edit.inc.php im Ordner classes.

Code: Alles auswählen
<?php
class liveEdit {

    var $livePath;
    var $ModulePath = "modules/";
    var $ModuleInputExtension = ".input.php";
    var $ModuleOutputExtension = ".output.php";
    var $TemplatePath = "templates/";
   var $TemplateExtension = ".template.php";

    function liveEdit(){
        global $REX;
        $this->livePath = $REX[ADDON][developer][live_edit_path];
    }

    function getModuleFiles(){
       if ($handle = opendir($this->livePath.$this->ModulePath)) {
          while (false !== ($file = readdir($handle))) {
              if ($file != "." && $file != "..") {
                 if(strstr($file,$this->ModuleInputExtension)){
                    $id = str_replace($this->ModuleInputExtension,"",$file);
                    $moduleFiles[] = $id;
                 }
              }
          }
          closedir($handle);
         return $moduleFiles;
       }
    }
    function getTemplateFiles(){
       if ($handle = opendir($this->livePath.$this->TemplatePath)) {
          while (false !== ($file = readdir($handle))) {
              if ($file != "." && $file != "..") {
                    $id = str_replace($this->TemplateExtension,"",$file);
                    $templateFiles[] = $id;
              }
          }
          closedir($handle);
         return $templateFiles;
       }
    }
    function getModulesFormDB(){
        global $REX;
      $db = new rex_sql();
      $sql = "SELECT id,ausgabe,eingabe FROM ".$REX['TABLE_PREFIX']."module";
      $dbResult = $db->getArray($sql);
      if(is_array($dbResult)){
         foreach($dbResult as $var){
             $modules[$var[id]][eingabe] = $var[eingabe];
             $modules[$var[id]][ausgabe] = $var[ausgabe];
         }

         return $modules;
      }


    }
    function getTemplatesFormDB(){
        global $REX;
      $db = new rex_sql();
      $sql = "SELECT id,content FROM ".$REX['TABLE_PREFIX']."template";
      $dbResult = $db->getArray($sql);
      if(is_array($dbResult)){
         foreach($dbResult as $var){
             $templates[$var[id]] = $var[content];
         }
         return $templates;
      }


    }
    function writeModuleFiles($overwrite=false){
        $modulesFiles = $this->getModuleFiles();
        $modulesDB = $this->getModulesFormDB();
        if(is_array($modulesDB)){
            foreach($modulesDB as $key=>$var){
                if(!@in_array($key,$modulesFiles) || $overwrite==true){
                    $inputFilename = $this->livePath.$this->ModulePath.$key.$this->ModuleInputExtension;
               $outputFilename = $this->livePath.$this->ModulePath.$key.$this->ModuleOutputExtension;
               $this->writeFile($inputFilename,$var[eingabe]);
               $this->writeFile($outputFilename,$var[ausgabe]);
               //print "wrote $outputFilename<br>";
            }

            }
        }
    }
    function writeTemplateFiles($overwrite=false){
        $templateFiles = $this->getTemplateFiles();
        $templatesDB = $this->getTemplatesFormDB();
        if(is_array($templatesDB)){
            foreach($templatesDB as $key=>$var){
                if(!@in_array($key,$templateFiles) || $overwrite==true){
               $templateFilename = $this->livePath.$this->TemplatePath.$key.$this->TemplateExtension;
               $this->writeFile($templateFilename,$var);
               //print "wrote $templateFilename<br>";
            }

            }
        }
    }
    function setConfigValue($filename,$valuename,$value){
      $content = file_get_contents($filename);
      $content = preg_replace("/\[$valuename\] = .*;/imsU","[$valuename] = \"".$value."\";",$content);
      $this->writeFile($filename,$content);
    }
    function writeFile($filename,$content){
        $handle = fopen($filename, 'w');
        fwrite($handle, $content);
        fclose($handle);
        @chmod($filename,0777);
    }
    function syncModules(){
        global $REX;
       $moduleFiles = $this->getModuleFiles();
       if(is_array($moduleFiles)){
           foreach($moduleFiles as $modId){
               if(file_exists($this->livePath.$this->ModulePath.$modId.$this->ModuleInputExtension) && file_exists($this->livePath.$this->ModulePath.$modId.$this->ModuleOutputExtension)){
                   $eingabe =  file_get_contents($this->livePath.$this->ModulePath.$modId.$this->ModuleInputExtension);
                   $eingabeDatum = fileatime($this->livePath.$this->ModulePath.$modId.$this->ModuleInputExtension);
                   $ausgabe =  file_get_contents($this->livePath.$this->ModulePath.$modId.$this->ModuleOutputExtension);
                   $ausgabeDatum =  fileatime($this->livePath.$this->ModulePath.$modId.$this->ModuleOutputExtension);
                   $db = new rex_sql();
                   $sql = "SELECT * FROM ".$REX['TABLE_PREFIX']."module WHERE id='$modId'";
                   $dbResult = $db->getArray($sql);
                   $sql = '';
                   if (($eingabeDatum > $dbResult[0]['updatedate']) AND ($ausgabeDatum > $dbResult[0]['updatedate']))
                     $sql = "UPDATE ".$REX['TABLE_PREFIX']."module SET eingabe='".mysql_escape_string($eingabe)."', ausgabe='".mysql_escape_string($ausgabe)."' WHERE id='$modId'";
                   else if ($eingabeDatum > $dbResult[0]['updatedate'])
                     $sql = "UPDATE ".$REX['TABLE_PREFIX']."module SET eingabe='".mysql_escape_string($eingabe)."' WHERE id='$modId'";
                   else if ($ausgabeDatum > $dbResult[0]['updatedate'])
                     $sql = "UPDATE ".$REX['TABLE_PREFIX']."module SET ausgabe='".mysql_escape_string($ausgabe)."' WHERE id='$modId'";

                  if ($sql != '') {
                     $db->setQuery($sql);
                     if(mysql_affected_rows($db->identifier)!=0){
                         $regenerate .= $modId."__";
                         //print "generated db".$modId."<br>";
                     }
                   }
               }
           }
       }
       if($REX['REDAXO']){
         $this->regenerateArticlesByModultypId($modules);
      }
       return $regenerate;
    }
    function syncTemplates(){
        global $REX;
       $templateFiles = $this->getTemplateFiles();
       if(is_array($templateFiles)){
           foreach($templateFiles as $templateId){
               if(file_exists($this->livePath.$this->TemplatePath.$templateId.$this->TemplateExtension)){
                   $content =  file_get_contents($this->livePath.$this->TemplatePath.$templateId.$this->TemplateExtension);
                   $contentDatum = fileatime($this->livePath.$this->TemplatePath.$templateId.$this->TemplateExtension);
                   $db = new rex_sql();
                   $sql = "SELECT * FROM ".$REX['TABLE_PREFIX']."template WHERE id='$templateId'";
                   $dbResult = $db->getArray($sql);
                   if ($contentDatum > $dbResult[0]['updatedate']) {
                     $sql = "UPDATE ".$REX['TABLE_PREFIX']."template SET content='".mysql_escape_string($content)."' WHERE id='$templateId'";
                     $db->setQuery($sql);
                     if(mysql_affected_rows($db->identifier)>0){
                         $this->generateTemplate($templateId,$content);
                         //print "generated template db".$templateId."<br>";
                     }
                   }
               }
           }
       }
    }
    function generateTemplate($templateId){
        global $REX;

        $templatePathDeveloper = $this->livePath.$this->TemplatePath.$templateId.$this->TemplateExtension;
        $templatePathRedaxo = $REX['INCLUDE_PATH']."/generated/templates/".$templateId.".template";
        copy($templatePathDeveloper,$templatePathRedaxo);
    }
    function regenerateArticlesByModultypId($modules){
       global $PHP_SELF, $module_id, $FORM, $REX_USER, $REX, $I18N;
       include_once($REX[INCLUDE_PATH]."/clang.inc.php");
       $modules = explode("__",$modules);
       array_pop($modules);
       $gc = new rex_sql;
       foreach($modules as $modul_id){
           $gc->setQuery("SELECT DISTINCT(".$REX['TABLE_PREFIX']."article.id) FROM ".$REX['TABLE_PREFIX']."article
           LEFT JOIN ".$REX['TABLE_PREFIX']."article_slice ON ".$REX['TABLE_PREFIX']."article.id=".$REX['TABLE_PREFIX']."article_slice.article_id
           WHERE ".$REX['TABLE_PREFIX']."article_slice.modultyp_id='$modul_id'");
           for ($i=0; $i<$gc->getRows(); $i++)
           {
               rex_generateArticle($gc->getValue($REX['TABLE_PREFIX']."article.id"));
               $gc->next();
           }
       }
    }
   function developer_setStatus($what='modules',$status=false){
       global $REX;
       $statusFile = $REX[ADDON][developer][live_edit_path]."status.inc.php";
       $stat = $status == "true" ? "true" : "false";
       $this->setConfigValue($statusFile,$what,$status);
       if($what == "MODULES" && $stat == "true"){
           $this->writeModuleFiles(true);
       }
       if($what == "TEMPLATES" && $stat == "true"){
           $this->writeTemplateFiles(true);
       }
   }
}
?>


Liebe Grüße,
Nicole

//Edit: Jetzt stimmt der Code. War wohl schon spät :-p
Zuletzt geändert von n.ruediger am 27. Jul 2007, 07:34, insgesamt 1-mal geändert.
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)

Nanu? Falscher Paste

Beitragvon ThomasKühne » 27. Jul 2007, 00:40

Hallo Nicole!
Im letzten Post hast Du wohl einen falschen Code einkopiert.
Aber Danke für den davor! ;-)
Und Danke auch für den Hinweis in meinem anderen Thread!

lieben Gruß
Thomas
ThomasKühne
 
Beiträge: 57
Registriert: 8. Dez 2006, 18:58

Nächste

Zurück zu Bugs [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast