Jump to content

feniks502

Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by feniks502

  1. Hi!

    I'm on 'PW' 3.0.21 with 'BCE' 1.3.0.

    As for me 'BCE' in 'Export mode' doesn't shows 'AsmSelect' field to adjust children fields to be exported, as shown in your topic.

    So according to the module description I must have

    Screen Shot 2015-05-26 at 12.17.17 PM.png

    but only get

    post-4381-0-75231900-1465646226_thumb.jp

    I've also tried to install 'Select Options' fieldtype core module, that enables 'AsmSelect ' fields to be used in templates, but nothing had changed.

    Despite of mentioned above, an API exporting still works well.

  2. Hi,

    I could reproduce this in current dev 3.0.16. .   Pages::trash seems to be executed twice.

    Is this still up to date for you? Maybe anyone else has a hint on what is wrong with it?

    Greetings

    I had found nothing about this.

    Just updated my installation to dev 3.0.17 and still have two messages instead of one.

    It is critical for me, because  I have write current amount of 'Pages' within the structure like 'Parent(1) -> Parent(1.1) + Parent(1.2) +Parent(1.3) , ... -> Pages' to the 'Parent(1)' each time it is changed, so I don't know any other way, than hook into 'save', 'trash', 'delete', 'move' methods.

    Particularly, concerning the 'trash' or 'delete' methods, I have to hook into them before execution to find '$page->parent->parent', to which data will be written (as you see after that it is impossible), but with 'trash' method my 'beforeHook' saves '$page->parent->parent' to a module class property correctly, and then it is get overwritten immediately, so it looks like 'addHookBefore' adds hook before and after.

  3. Hello!

    The only hook into 'trash' in a module runs twice, by itself, as it seems.

    The following code outputs:

    • Session: Hooked 1 times on abcd
    • Session: Hooked 2 times on abcd

    on the admin side when one page is deleted from it's delete tab.

    And it's no matter 'addHookBefore', 'addHookaAfter' or 'addHook' method is used.

    Why?!

    private $i = 0;
    
    public function init() {
    
    	$this->pages->addHookBefore('trash', $this, 'test');
    
    }
    
    public function test($event) {
    
    	$page = $event->arguments('page');
    
    	$this->i++;
    	$this->message("Hooked {$this->i} times on {$page->title}");
    
    }
    
  4. Hello everyone!

    I'm not sure the right thread is chosen, but anyway I'll continue.

    My pages structure looks like Category->Subcategories->Pages

    A task is to make PW to count Pages,when their amount is changed and write it to the Subcategory's and Category's appropriate field regardless of Pages amount change is made from admin of template. So I'm trying to hook into 'save', 'trash', 'restore' and 'delete' methods from within a site module.

    'Save' hook seems to work fine, but hooking into 'trash' requires to track Page->parent and Page->parent->parent the the other way, because they are changed to 'Trash' and 'Root' when 'trash' execution is is finished. The other words, at the moment when I have to count Pages in Category and Subcategory, where the Page was 'thrashed' from, there is already no way to determine, what the Category and Subcategory contained this Page.

    I'm trying to hook into 'trash' before execution, find Page Category and Subcategory and assign them to an module object property, so after the 'trash' execution I can hook into it again and count Pages in Category and Subcategory, saved in properties. But something causes my before 'trash' hook to execute two times: before and after 'trash', and as the result module object properties contain not Category and Subcategory, but 'Trash' and 'Root' pages.
     

    Here is my Code:

    public $country;
    public $region;
    
    /**
     * Initialize the module
     *
     */
    public function init() {
    
    	$this->pages->addHookBefore('trash', $this, 'prepareTripSave');
    	$this->pages->addHookAfter('trashed', $this, 'afterTrash');
    
    }
    
    /**
     * Counts 'Trips' in 'Region' and 'Country'
     *
     */
    public function countTrips($event) {
    
    	$page = $event->arguments('page');
    
    	if ($page->template == 'Trip') {
    
    		// do only when 'Country' and 'Region' are find
    		if(count($this->country) && count($this->region)) {
    			$this->message('ok');
    
    			$amount = $this->region->children("template=Trip")->count(); //count 'Trips' in 'Region'
    			$this->region->setOutputFormatting(false);
    			$this->region->amount = $amount;
    			$this->region->save("amount"); // save only field
    			$this->region->setOutputFormatting(true);
    
    			
    			$amount = $this->country->find("template=Trip")->count(); //count 'Trips' in 'Country'
    			$this->country->setOutputFormatting(false);
    			$this->country->amount = $amount;
    			$this->country->save("amount"); // save only field
    			$this->country->setOutputFormatting(true);
    
    		} else {
    			$this->message('nop');
    		}
    		$this->message("Country: {$this->region->amount}; Region: {$this->country->amount}");
    		$this->region = '';
    		$this->country = '';
    	}
    }
    
    public function prepareTripSave($event) {
    
    	$page = $event->arguments('page');
    
    	if ($page->template == 'Trip') {
    
    		$this->region = $this->pages->get($page->parentID); // find 'Region' by 'Trip'->parentID
    		$this->country = $this->region->parent; // find 'Country' as a 'Region'->parent
    
    		$this->message("Before Region: {$this->region->title}; Country: {$this->country->title}");
    
    	}
    }
    
    public function afterTrash($event) {
    
    	$page = $event->arguments('page');
    
    	if ($page->template == 'Trip') {
    
    		$this->message("After Region: {$this->region->title}; Country: {$this->country->title}");
    
    	}
    }
    

    Thanks!

×
×
  • Create New...