diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..49d5957 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.1 diff --git a/action.php b/action.php index 86fd7d5..596eeae 100644 --- a/action.php +++ b/action.php @@ -5,6 +5,7 @@ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html * @author Jarrod Lowe * @author Andreas Gohr + * @author Szymon Olewniczak */ // TODO: @@ -31,9 +32,12 @@ function action_plugin_publish(){ } function register(&$controller) { + $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, handle_approve, array()); + $controller->register_hook('HTML_EDITFORM_OUTPUT', 'BEFORE', $this, handle_html_editform_output, array()); #$controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, debug, array()); $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, handle_display_banner, array()); + $controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, handle_diff_accept, array()); $controller->register_hook('IO_WIKIPAGE_WRITE', 'BEFORE', $this, handle_io_write, array()); $controller->register_hook('HTML_REVISIONSFORM_OUTPUT', 'BEFORE', $this, handle_revisions, array()); $controller->register_hook('HTML_RECENTFORM_OUTPUT', 'BEFORE', $this, handle_recent, array()); @@ -143,14 +147,22 @@ function handle_display_banner(&$event, $param) { $previous_approved = $arev; } - $strings[] = '
getConf('apr_compact') == 1) { + $suffix = '_compact'; + $strings[] = ' compact'; + } + $strings[] = ' approval approved_'; if($approver && !$most_recent_approved) { $strings[] = 'yes'; } else { $strings[] = 'no'; } $strings[] = '">'; + $difflink = ''; + if($most_recent_draft) { $strings[] = ''; - $strings[] = sprintf($this->getLang('apr_recent_draft'), wl($ID, 'force_rev=1')); - $strings[] = $this->difflink($ID, null, $REV) . ''; + $strings[] = sprintf($this->getLang('apr_recent_draft'.$suffix), wl($ID, 'force_rev=1')); + $difflink = $this->difflink($ID, null, $REV) . ''; } if($most_recent_approved) { @@ -158,14 +170,14 @@ function handle_display_banner(&$event, $param) { $userrev = $most_recent_approved; if($userrev == $latest_rev) { $userrev = ''; } $strings[] = ''; - $strings[] = sprintf($this->getLang('apr_outdated'), wl($ID, 'rev=' . $userrev)); - $strings[] = $this->difflink($ID, $userrev, $REV) . ''; + $strings[] = sprintf($this->getLang('apr_outdated'.$suffix), wl($ID, 'rev=' . $userrev)); + $difflink = $this->difflink($ID, $userrev, $REV) . ''; } if(!$approver) { # Draft $strings[] = ''; - $strings[] = sprintf($this->getLang('apr_draft'), + $strings[] = sprintf($this->getLang('apr_draft'.$suffix), '' . $longdate . ''); $strings[] = ''; } @@ -173,26 +185,55 @@ function handle_display_banner(&$event, $param) { if($approver) { # Approved $strings[] = ''; - $strings[] = sprintf($this->getLang('apr_approved'), + $strings[] = sprintf($this->getLang('apr_approved'.$suffix), '' . $longdate . '', - editorinfo($approver)); + ''.editorinfo($approver).''); $strings[] = ''; } if($previous_approved) { $strings[] = ''; - $strings[] = sprintf($this->getLang('apr_previous'), + $strings[] = sprintf($this->getLang('apr_previous'.$suffix), wl($ID, 'rev=' . $previous_approved), dformat($previous_approved)); - $strings[] = $this->difflink($ID, $previous_approved, $REV) . ''; + $difflink = $this->difflink($ID, $previous_approved, $REV, ($approver && !$most_recent_approved) || $most_recent_approved ? false : true) . ''; } + $strings[] = $difflink; $strings[] = '
'; ptln(implode($strings)); return true; } + function handle_diff_accept(&$event, $param) { + if ($event->data == 'diff' && isset($_GET['approve'])) { + ptln(''.$this->getLang('apr_do_approve').''); + } + } + + function handle_approve(&$event, $param) { + global $ID; + if ($event->data == 'show' && isset($_GET['approve'])) { + //Add or remove the new line from the end of the page. Silly but needed. + $content = rawWiki($ID, ''); + if (substr($content, -1) == "\n") { + substr($content, 0, -1); + } else { + $content .= "\n"; + } + saveWikiText($ID, $content, 'Approved'); + + $data = pageinfo(); + #$newdata = p_get_metadata($ID, 'approval'); + $newdata = $data['meta']['approval']; + $newdata[$data['lastmod']] = array($data['client'], $_SERVER['REMOTE_USER'], $USERINFO['mail']); + p_set_metadata($ID, array('approval' => $newdata), true, true); + + return true; + } + } + function handle_revisions(&$event, $param) { global $ID; global $REV; @@ -262,12 +303,17 @@ function handle_recent(&$event, $param) { return true; } - function difflink($id, $rev1, $rev2) { + function difflink($id, $rev1, $rev2, $revandapp=false) { if($rev1 == $rev2) { return ''; } - return '' . - 'Diff' . - ''; + $output = ''; + if ($revandapp) { + $output .= $this->getLang('apr_diff_approve'); + } else { + $output .= 'Diff'; + } + $output .= ''; + return $output; } function handle_start(&$event, $param) { diff --git a/conf/default.php b/conf/default.php index 4076ae5..9f11b3d 100644 --- a/conf/default.php +++ b/conf/default.php @@ -2,4 +2,5 @@ $conf['apr_namespaces'] = ''; $conf['apr_approved_text'] = 'Approved'; +$conf['apr_compact'] = 0; diff --git a/conf/metadata.php b/conf/metadata.php index 2098038..bff5d2f 100644 --- a/conf/metadata.php +++ b/conf/metadata.php @@ -2,4 +2,5 @@ $meta['apr_namespaces'] = array('string'); $meta['apr_approved_text'] = array('string'); +$meta['apr_compact'] = array('onoff'); diff --git a/lang/en/lang.php b/lang/en/lang.php index c1f8e92..b231989 100644 --- a/lang/en/lang.php +++ b/lang/en/lang.php @@ -7,6 +7,13 @@ $lang['apr_approved'] = 'This version (%s) was Approved by %s.'; $lang['apr_previous'] = 'The Previously Approved Version (%s) is available.'; +// compact banner +$lang['apr_recent_draft_compact'] = 'Most Recent - draft | '; +$lang['apr_outdated_compact'] = 'Outdated by a Newer Approved | '; +$lang['apr_draft_compact'] = '%s - Draft'; +$lang['apr_approved_compact'] = 'Approved (%s) by %s'; +$lang['apr_previous_compact'] = ' | Previously Approved (%s)'; + // Pending Approvals List $lang['apr_p_none'] = 'No Documents Pending Approval'; $lang['apr_p_hdr_page'] = 'Page'; @@ -17,4 +24,6 @@ // Submit (Next to the tick-box to approve a page) $lang['apr_do_approve'] = 'Approve'; +$lang['apr_diff_approve'] = 'Review and approve'; + ?> diff --git a/lang/en/settings.php b/lang/en/settings.php index 7b22fa1..cb1cb33 100644 --- a/lang/en/settings.php +++ b/lang/en/settings.php @@ -2,5 +2,6 @@ $lang['apr_namespaces'] = 'Namespaces this plugin applies to'; $lang['apr_approved_text'] = 'Automatic Approval Comment'; +$lang['apr_compact'] = 'Enable compact style'; ?> diff --git a/lang/pl/lang.php b/lang/pl/lang.php index c562fdf..9d285be 100644 --- a/lang/pl/lang.php +++ b/lang/pl/lang.php @@ -7,6 +7,13 @@ $lang['apr_approved'] = 'Ta wersja strony(%s) została zatwierdzona przez %s.'; $lang['apr_previous'] = 'Dostępna poprzednio zatwierdzona wersja (%s).'; +// compact banner +$lang['apr_recent_draft_compact'] = 'Najnowsza - niezatwierdzona | '; +$lang['apr_outdated_compact'] = 'Zastąpiona przez nowe zatwierdzenie | '; +$lang['apr_draft_compact'] = '%s - niezatwierdzona'; +$lang['apr_approved_compact'] = 'zatwierdzona (%s) przez %s'; +$lang['apr_previous_compact'] = ' | poprzednia zatwierdzona (%s)'; + // Pending Approvals List $lang['apr_p_none'] = 'Brak dokumentów oczekujących na zatwierdzenie'; $lang['apr_p_hdr_page'] = 'Nazwa strony'; @@ -17,4 +24,6 @@ // Submit (Next to the tick-box to approve a page) $lang['apr_do_approve'] = 'Zatwierdź'; +$lang['apr_diff_approve'] = 'Przejrzyj i zatwierdź'; + ?> diff --git a/lang/pl/settings.php b/lang/pl/settings.php index 22bb156..9d9ebd0 100644 --- a/lang/pl/settings.php +++ b/lang/pl/settings.php @@ -2,5 +2,6 @@ $lang['apr_namespaces'] = 'Preztrzenie nazw (ang. namespaces), które wtyczka ma obejmować (puste pole oznacza całe wiki)'; $lang['apr_approved_text'] = 'Komentarz do operacji zatwierdzenia strony'; +$lang['apr_compact'] = 'Aktywuj styl kompaktowy'; ?> diff --git a/print.css b/print.css index f666f19..909848d 100644 --- a/print.css +++ b/print.css @@ -14,6 +14,20 @@ div.approval { border-radius: 10px; border: solid black 2px; } +div.approval.compact { + margin: 0; + width: auto !important; + min-height: 20px; + padding: 2px 10px; + + -moz-border-radius: 0; + -khtml-border-radius: 0; + border-radius: 0; + + position: absolute; + right:0; + top:0; +} div.approved_yes { background-color: #dfd; @@ -25,6 +39,14 @@ div.approved_no { background-image: url(images/no.gif); } +div.approved_yes.compact { + background-image: none; +} + +div.approved_no.compact { + background-image: none; +} + div.approval em { font-weight: bold; } @@ -33,6 +55,10 @@ div.approval span { display: block; } +div.approval.compact span { + display: inline; +} + div.approved_revision { background-color: #dfd; } diff --git a/style.css b/style.css index 87f909c..791038c 100644 --- a/style.css +++ b/style.css @@ -16,6 +16,21 @@ div.approval { border-radius: 10px; } +div.approval.compact { + margin: 0; + width: auto !important; + min-height: 20px; + padding: 2px 10px; + + -moz-border-radius: 0; + -khtml-border-radius: 0; + border-radius: 0; + + position: absolute; + right:0; + top:0; +} + div.approved_yes { background-color: #dfd; background-image: url(images/yes.gif); @@ -26,6 +41,14 @@ div.approved_no { background-image: url(images/no.gif); } +div.approved_yes.compact { + background-image: none; +} + +div.approved_no.compact { + background-image: none; +} + div.approval em { font-weight: bold; } @@ -34,6 +57,10 @@ div.approval span { display: block; } +div.approval.compact span { + display: inline; +} + div.approved_revision { background-color: #dfd; }