Skip to content

Compact style #24

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.1
76 changes: 61 additions & 15 deletions action.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
* @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
* @author Jarrod Lowe <dokuwiki@rrod.net>
* @author Andreas Gohr <gohr@cosmocode.de>
* @author Szymon Olewniczak <dokuwiki@imz.re>
*/

// TODO:
Expand All @@ -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());
Expand Down Expand Up @@ -143,56 +147,93 @@ function handle_display_banner(&$event, $param) {
$previous_approved = $arev;
}

$strings[] = '<div class="approval approved_';
$suffix = '';
$strings[] = '<div class="';
if($this->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[] = '<span class="approval_latest_draft">';
$strings[] = sprintf($this->getLang('apr_recent_draft'), wl($ID, 'force_rev=1'));
$strings[] = $this->difflink($ID, null, $REV) . '</span>';
$strings[] = sprintf($this->getLang('apr_recent_draft'.$suffix), wl($ID, 'force_rev=1'));
$difflink = $this->difflink($ID, null, $REV) . '</span>';
}

if($most_recent_approved) {
# Approved, but there is a more recent version
$userrev = $most_recent_approved;
if($userrev == $latest_rev) { $userrev = ''; }
$strings[] = '<span class="approval_outdated">';
$strings[] = sprintf($this->getLang('apr_outdated'), wl($ID, 'rev=' . $userrev));
$strings[] = $this->difflink($ID, $userrev, $REV) . '</span>';
$strings[] = sprintf($this->getLang('apr_outdated'.$suffix), wl($ID, 'rev=' . $userrev));
$difflink = $this->difflink($ID, $userrev, $REV) . '</span>';
}

if(!$approver) {
# Draft
$strings[] = '<span class="approval_draft">';
$strings[] = sprintf($this->getLang('apr_draft'),
$strings[] = sprintf($this->getLang('apr_draft'.$suffix),
'<span class="approval_date">' . $longdate . '</span>');
$strings[] = '</span>';
}

if($approver) {
# Approved
$strings[] = '<span class="approval_approved">';
$strings[] = sprintf($this->getLang('apr_approved'),
$strings[] = sprintf($this->getLang('apr_approved'.$suffix),
'<span class="approval_date">' . $longdate . '</span>',
editorinfo($approver));
'<span id="publish_author">'.editorinfo($approver).'</span>');
$strings[] = '</span>';
}

if($previous_approved) {
$strings[] = '<span class="approval_previous">';
$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) . '</span>';
$difflink = $this->difflink($ID, $previous_approved, $REV, ($approver && !$most_recent_approved) || $most_recent_approved ? false : true) . '</span>';
}

$strings[] = $difflink;
$strings[] = '</div>';

ptln(implode($strings));
return true;
}

function handle_diff_accept(&$event, $param) {
if ($event->data == 'diff' && isset($_GET['approve'])) {
ptln('<a href="'.DOKU_URL.'doku.php?id='.$_GET['id'].'&approve=approve">'.$this->getLang('apr_do_approve').'</a>');
}
}

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;
Expand Down Expand Up @@ -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 '<a href="' . wl($id, 'rev2[]=' . $rev1 . '&rev2[]=' . $rev2 . '&do[diff]=1') .
'" class="approved_diff_link">' .
'<img src="'.DOKU_BASE.'lib/images/diff.png" class="approved_diff_link" alt="Diff" />' .
'</a>';
$output = '<a href="' . wl($id, 'rev2[]=' . $rev1 . '&rev2[]=' . $rev2 . '&do[diff]=1') . ($revandapp ? '&approve=approve' : '') .
'" class="approved_diff_link">';
if ($revandapp) {
$output .= $this->getLang('apr_diff_approve');
} else {
$output .= '<img src="'.DOKU_BASE.'lib/images/diff.png" class="approved_diff_link" alt="Diff" />';
}
$output .= '</a>';
return $output;
}

function handle_start(&$event, $param) {
Expand Down
1 change: 1 addition & 0 deletions conf/default.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@

$conf['apr_namespaces'] = '';
$conf['apr_approved_text'] = 'Approved';
$conf['apr_compact'] = 0;

1 change: 1 addition & 0 deletions conf/metadata.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@

$meta['apr_namespaces'] = array('string');
$meta['apr_approved_text'] = array('string');
$meta['apr_compact'] = array('onoff');

9 changes: 9 additions & 0 deletions lang/en/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@
$lang['apr_approved'] = 'This version (%s) was <em>Approved</em> by %s.';
$lang['apr_previous'] = 'The <a href="%s">Previously Approved Version</a> (%s) is available.';

// compact banner
$lang['apr_recent_draft_compact'] = '<a href="%s">Most Recent</a> - draft | ';
$lang['apr_outdated_compact'] = '<em>Outdated</em> by a <a href="%s">Newer Approved</a> | ';
$lang['apr_draft_compact'] = '%s - <em>Draft</em>';
$lang['apr_approved_compact'] = '<em>Approved</em> (%s) by %s';
$lang['apr_previous_compact'] = ' | <a href="%s">Previously Approved</a> (%s)';

// Pending Approvals List
$lang['apr_p_none'] = 'No Documents Pending Approval';
$lang['apr_p_hdr_page'] = 'Page';
Expand All @@ -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';

?>
1 change: 1 addition & 0 deletions lang/en/settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -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';

?>
9 changes: 9 additions & 0 deletions lang/pl/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@
$lang['apr_approved'] = 'Ta wersja strony(%s) została <em>zatwierdzona</em> przez %s.';
$lang['apr_previous'] = 'Dostępna <a href="%s">poprzednio zatwierdzona wersja</a> (%s).';

// compact banner
$lang['apr_recent_draft_compact'] = '<a href="%s">Najnowsza</a> - niezatwierdzona | ';
$lang['apr_outdated_compact'] = '<em>Zastąpiona</em> przez <a href="%s">nowe zatwierdzenie</a> | ';
$lang['apr_draft_compact'] = '%s - <em>niezatwierdzona</em>';
$lang['apr_approved_compact'] = '<em>zatwierdzona</em> (%s) przez %s';
$lang['apr_previous_compact'] = ' | <a href="%s">poprzednia zatwierdzona</a> (%s)';

// Pending Approvals List
$lang['apr_p_none'] = 'Brak dokumentów oczekujących na zatwierdzenie';
$lang['apr_p_hdr_page'] = 'Nazwa strony';
Expand All @@ -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ź';

?>
1 change: 1 addition & 0 deletions lang/pl/settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -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';

?>
26 changes: 26 additions & 0 deletions print.css
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
}
Expand All @@ -33,6 +55,10 @@ div.approval span {
display: block;
}

div.approval.compact span {
display: inline;
}

div.approved_revision {
background-color: #dfd;
}
Expand Down
27 changes: 27 additions & 0 deletions style.css
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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;
}
Expand All @@ -34,6 +57,10 @@ div.approval span {
display: block;
}

div.approval.compact span {
display: inline;
}

div.approved_revision {
background-color: #dfd;
}
Expand Down