master.less speichern ab Barrhorn

Hooks ermöglichen Ihnen die Ausführung beliebigen PHP-Codes während des Speicherns, Parkens, Veröffentlichens und Löschens jeglicher Inhaltstypen in webEdition.
Revilo
Junior Member
Beiträge: 18
Registriert: Do 3. Jan 2019, 12:07

master.less speichern ab Barrhorn

Beitragvon Revilo » Fr 5. Feb 2021, 11:23

Hi, habe versucht einen alten Hook der bei uns immer im Einsatz war für die Barrhorn Version umzuschreiben.
Jedoch greift der Hook nicht..
Durch den Hook soll die master.less Datei mitgespeichert werden, sobald an einer .less Datei etwas geändert wird.

Alter Hook (funktionierte bis Barrhorn):

Code: Alles auswählen

 <?php
function weCustomHook_save($param){
	$hookHandler = $param['hookHandler'];
	$resave = $param['resave'];
	$obj = $param[0];
	switch(get_class($obj)){
		// Mitspeichern der Master-Datei, bei Speicherung von Less/SCSS-Dateien aus den Ordnern $lesspath
		case 'we_textDocument':
			$parentpath = array(0); // <= IDs aller Elternordner
			if ( in_array($obj->ParentID, $parentpath) && in_array($obj->Extension, array('.less','.scss')) ) {
				$aMasterIDs = array(0); // <= ID der master.less, master.scss
				
				foreach($aMasterIDs as $iID) {
					$masterfile = new we_textDocument();
					$masterfile->initByID($iID);
					$masterfile->we_save(false, true); // we_save() kann die beiden Parameter $resave und $skipHook verarbeiten. durch das $skipHook=true wird eine Endlosschleife verhindert
			
				}
			}
			break;
	}
}
?>
Neuer Hook:

Code: Alles auswählen

<?php
declare(strict_types=1);

class we_customhook_shrink extends we_hook_base{
    /** @var we_document_base */
    protected $obj;

    /** @var bool */
    protected $resave;

    public function __construct(we_hook_handler $handler, array $params){
        parent::__construct($handler, $params);
        $this->resave = $params['resave'];
        $this->obj = $params['obj'];
    }

    public function execute(): bool{
        switch(get_class($this->obj)){
            // Mitspeichern der Master-Datei, bei Speicherung von Less/SCSS-Dateien aus den Ordnern $lesspath
            case 'we_document_text':
                $parentpath = array(0); // <= IDs aller Elternordner
                if(in_array($this->obj->ParentID, $parentpath) && in_array($this->obj->Extension, array('.less', '.scss'))) {
                    $masterIDs = array(0); //   <= ID der master.less/master.scss

                    foreach($masterIDs as $id){
                        $masterfile = new we_document_text();
                        $masterfile->initByID($id);
                        $masterfile->we_save(false, true); // we_save() kann die beiden Parameter $resave und $skipHook verarbeiten. durch das $skipHook=true wird eine Endlosschleife verhindert

                    }
                }

                break;
        }
        return true;
    }
}
Mit freundlichen Grüßen
Oliver

NilSole
Senior Member
Beiträge: 303
Registriert: Mi 27. Mär 2019, 15:28

Re: master.less speichern ab Barrhorn

Beitragvon NilSole » Fr 5. Feb 2021, 19:49

Müsste der Hook nicht weiterhin _save heißen oder wird das anders zugeordnet?

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: master.less speichern ab Barrhorn

Beitragvon mokraemer » Sa 6. Feb 2021, 13:21

Unter
webEdition/samples/
finden sich Beispiele für die Hooks - und Nils hat völlig recht - woher soll WE denn wissen, das der Hook anders heißt.
webEdition-Kern-Entwickler

Revilo
Junior Member
Beiträge: 18
Registriert: Do 3. Jan 2019, 12:07

Re: master.less speichern ab Barrhorn

Beitragvon Revilo » Mo 8. Feb 2021, 18:07

Oh mein Gott, vielen Dank! Da hatte ich wohl ein riesiges Brett vor'm Kopf.


Zurück zu „Hooks“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste