-
Notifications
You must be signed in to change notification settings - Fork 0
/
PublishAsHidden.module
91 lines (72 loc) · 2.31 KB
/
PublishAsHidden.module
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
/**
* PublishAsHidden (0.0.1)
*
* @author Ben Byford
* @url BenByford.com
*
* Hookable functions: PublishAsHidden
*
* ProcessWire 2.x
* Copyright (C) 2011 by Ryan Cramer
* Licensed under GNU/GPL v2, see LICENSE.TXT
*
* @Hookable ___publishHidden
*
* http://www.processwire.com
* http://www.ryancramer.com
*
*/
class PublishAsHidden extends WireData implements Module {
public static function getModuleInfo() {
return array(
'title' => "PublishAsHidden",
'version' => "0.0.1",
'summary' => "PublishAsHiddenAdds button on first tab of edit page, when unpublished module adds Publish as hidden button which publishs page with flag as hidden.",
'author' => "Ben Byford",
'href' => "",
'icon' => "btn",
// use autoload if module is to be called each load, if it is only needed to setup something set to false
'autoload' => true,
'singular' => true,
'requires' => "ProcessWire>=2.5",
);
}
public $publish_name = "publish_hidden";
public $publish_btn_val = "Publish hidden";
public function init() {
// add hook to page edit form
$this->addHookAfter("ProcessPageEdit::buildForm", $this, "processForm");
$this->addHookAfter("Pages::saveReady", $this, "saveAsHidden");
}
public function ___saveAsHidden($hook) {
$page = $hook->arguments[0];
if($this->input->post("submit_publish") == $this->publish_btn_val) {
$this->message("Page " . $page->id . " published as hidden");
$this->log->message("Page " . $page->id . " published as hidden");
// add page status as hidden and published
$page->addStatus("hidden");
$page->removeStatus("unpublished");
}
}
/*
* Process page buttons
*/
public function processForm(HookEvent $form) {
// get form
$form = $form->return;
// check if publish button available and therfore unpublished
$target = $form->get('submit_publish');
if($target){
// get InputfieldText module
$submit = $this->modules->get('InputfieldSubmit');
$submit->attr('name', "submit_publish");
$submit->attr('id', $this->publish_name);
$submit->attr('class', 'ui-button ui-widget ui-corner-all head_button_clone ui-state-default ui-priority-secondary');
$submit->attr('value', $this->publish_btn_val);
// get form element save and place before
$form->insertAfter($submit, $target);
$form->return = $form;
}
}
}