Seite 1 von 1

master.less speichern ab Barrhorn

Verfasst: Fr 5. Feb 2021, 11:23
von Revilo
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

Re: master.less speichern ab Barrhorn

Verfasst: Fr 5. Feb 2021, 19:49
von NilSole
Müsste der Hook nicht weiterhin _save heißen oder wird das anders zugeordnet?

Re: master.less speichern ab Barrhorn

Verfasst: Sa 6. Feb 2021, 13:21
von mokraemer
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.

Re: master.less speichern ab Barrhorn

Verfasst: Mo 8. Feb 2021, 18:07
von Revilo
Oh mein Gott, vielen Dank! Da hatte ich wohl ein riesiges Brett vor'm Kopf.