rewrite wiki pages widget - no need for ajax on pageload, show the pages to not authenticated people.

This commit is contained in:
git-marijus 2017-06-03 17:23:53 +02:00 committed by Mario Vavti
parent e9fe258b5e
commit 4048cb67d2
4 changed files with 70 additions and 51 deletions

View File

@ -197,7 +197,23 @@ class Wiki extends \Zotlabs\Web\Controller {
// Fetch the wiki info and determine observer permissions // Fetch the wiki info and determine observer permissions
$wikiUrlName = urldecode(argv(2)); $wikiUrlName = urldecode(argv(2));
$pageUrlName = urldecode(argv(3));
$page_name = '';
$ignore_language = false;
for($x = 3; $x < argc(); $x ++) {
if($page_name === '' && argv($x) === '-') {
$ignore_language = true;
continue;
}
if($page_name) {
$page_name .= '/';
}
$page_name .= argv($x);
}
$pageUrlName = urldecode($page_name);
$langPageUrlName = urldecode(\App::$language . '/' . $page_name);
$w = Zlib\NativeWiki::exists_by_name($owner['channel_id'], $wikiUrlName); $w = Zlib\NativeWiki::exists_by_name($owner['channel_id'], $wikiUrlName);
@ -274,7 +290,8 @@ class Wiki extends \Zotlabs\Web\Controller {
'$showPageControls' => $showPageControls, '$showPageControls' => $showPageControls,
'$editOrSourceLabel' => (($showPageControls) ? t('Edit') : t('Source')), '$editOrSourceLabel' => (($showPageControls) ? t('Edit') : t('Source')),
'$tools_label' => 'Page Tools', '$tools_label' => 'Page Tools',
'$channel' => $owner['channel_address'], '$channel_address' => $owner['channel_address'],
'$channel_id' => $owner['channel_id'],
'$resource_id' => $resource_id, '$resource_id' => $resource_id,
'$page' => $pageUrlName, '$page' => $pageUrlName,
'$mimeType' => $mimeType, '$mimeType' => $mimeType,
@ -473,10 +490,12 @@ class Wiki extends \Zotlabs\Web\Controller {
$x = new \Zotlabs\Widget\Wiki_pages(); $x = new \Zotlabs\Widget\Wiki_pages();
$page_list_html = $x->widget(array( $page_list_html = $x->widget([
'resource_id' => $resource_id, 'resource_id' => $resource_id,
'refresh' => true, 'channel_id' => $owner['channel_id'],
'channel' => argv(1))); 'channel_address' => $owner['channel_address'],
'refresh' => true
]);
json_return_and_die(array('pages' => $page_list_html, 'message' => '', 'success' => true)); json_return_and_die(array('pages' => $page_list_html, 'message' => '', 'success' => true));
} }

View File

@ -7,29 +7,31 @@ class Wiki_pages {
function widget($arr) { function widget($arr) {
$channelname = ((array_key_exists('channel',$arr)) ? $arr['channel'] : ''); if(argc() < 3)
$c = channelx_by_nick($channelname); return;
if(! $arr['resource_id']) {
if(! $c)
$c = \App::get_channel(); $c = \App::get_channel();
if(! $c) if(! $c)
return ''; $c = channelx_by_nick(argv(1));
$w = \Zotlabs\Lib\NativeWiki::exists_by_name($c['channel_id'],argv(2));
$arr = array(
'resource_id' => $w['resource_id'],
'channel_id' => $c['channel_id'],
'channel_address' => $c['channel_address'],
'refresh' => false
);
}
$wikiname = ''; $wikiname = '';
if(array_key_exists('refresh', $arr)) {
$not_refresh = (($arr['refresh']=== true) ? false : true);
}
else {
$not_refresh = true;
}
$pages = array(); $pages = array();
if(! array_key_exists('resource_id', $arr)) {
$hide = true; $p = \Zotlabs\Lib\NativeWikiPage::page_list($arr['channel_id'],get_observer_hash(),$arr['resource_id']);
}
else {
$p = \Zotlabs\Lib\NativeWikiPage::page_list($c['channel_id'],get_observer_hash(),$arr['resource_id']);
if($p['pages']) { if($p['pages']) {
$pages = $p['pages']; $pages = $p['pages'];
@ -40,25 +42,22 @@ class Wiki_pages {
$wikiname = ''; $wikiname = '';
} }
} }
}
$can_create = perm_is_allowed(\App::$profile['uid'],get_observer_hash(),'write_wiki'); $can_create = perm_is_allowed(\App::$profile['uid'],get_observer_hash(),'write_wiki');
$can_delete = ((local_channel() && (local_channel() == \App::$profile['uid'])) ? true : false); $can_delete = ((local_channel() && (local_channel() == \App::$profile['uid'])) ? true : false);
return replace_macros(get_markup_template('wiki_page_list.tpl'), array( return replace_macros(get_markup_template('wiki_page_list.tpl'), array(
'$hide' => $hide,
'$resource_id' => $arr['resource_id'], '$resource_id' => $arr['resource_id'],
'$not_refresh' => $not_refresh,
'$header' => t('Wiki Pages'), '$header' => t('Wiki Pages'),
'$channel' => $channelname, '$channel_address' => $arr['channel_address'],
'$wikiname' => $wikiname, '$wikiname' => $wikiname,
'$pages' => $pages, '$pages' => $pages,
'$canadd' => $can_create, '$canadd' => $can_create,
'$candel' => $can_delete, '$candel' => $can_delete,
'$addnew' => t('Add new page'), '$addnew' => t('Add new page'),
'$pageName' => array('pageName', t('Page name')), '$pageName' => array('pageName', t('Page name')),
'$refresh' => $arr['refresh']
)); ));
} }
} }

View File

@ -115,7 +115,7 @@
}); });
$( "#rename-page-form" ).submit(function( event ) { $( "#rename-page-form" ).submit(function( event ) {
$.post("wiki/{{$channel}}/rename/page", $.post("wiki/{{$channel_address}}/rename/page",
{ {
oldName: window.wiki_page_name, oldName: window.wiki_page_name,
newName: $('#id_pageRename').val(), newName: $('#id_pageRename').val(),
@ -177,7 +177,7 @@
}); });
$('#wiki-get-preview').click(function (ev) { $('#wiki-get-preview').click(function (ev) {
$.post("wiki/{{$channel}}/preview", { $.post("wiki/{{$channel_address}}/preview", {
{{if !$mimeType || $mimeType == 'text/markdown'}} {{if !$mimeType || $mimeType == 'text/markdown'}}
content: editor.getValue(), content: editor.getValue(),
{{else}} {{else}}
@ -200,7 +200,7 @@
}); });
$('#wiki-get-history').click(function (ev) { $('#wiki-get-history').click(function (ev) {
$.post("wiki/{{$channel}}/history/page", {name: window.wiki_page_name, resource_id: window.wiki_resource_id}, function (data) { $.post("wiki/{{$channel_address}}/history/page", {name: window.wiki_page_name, resource_id: window.wiki_resource_id}, function (data) {
if (data.success) { if (data.success) {
$('#page-history-list').html(data.historyHTML); $('#page-history-list').html(data.historyHTML);
$('#page-tools').hide(); $('#page-tools').hide();
@ -215,10 +215,9 @@
if (window.wiki_resource_id === '') { if (window.wiki_resource_id === '') {
return false; return false;
} }
$.post("wiki/{{$channel}}/get/page/list/", {resource_id: window.wiki_resource_id}, function (data) { $.post("wiki/{{$channel_address}}/get/page/list/", {channel_id: '{{$channel_id}}', resource_id: window.wiki_resource_id}, function (data) {
if (data.success) { if (data.success) {
$('#wiki_page_list_container').html(data.pages); $('#wiki_page_list').html(data.pages);
$('#wiki_page_list_container').show();
} else { } else {
alert('Error fetching page list!'); alert('Error fetching page list!');
window.console.log('Error fetching page list!'); window.console.log('Error fetching page list!');
@ -245,7 +244,7 @@
ev.preventDefault(); ev.preventDefault();
return false; return false;
} }
$.post("wiki/{{$channel}}/save/page", { $.post("wiki/{{$channel_address}}/save/page", {
content: currentContent, content: currentContent,
commitMsg: $('#id_commitMsg').val(), commitMsg: $('#id_commitMsg').val(),
name: window.wiki_page_name, name: window.wiki_page_name,
@ -276,7 +275,7 @@
window.console.log('You must have a wiki page open in order to revert pages.'); window.console.log('You must have a wiki page open in order to revert pages.');
return false; return false;
} }
$.post("wiki/{{$channel}}/revert/page", {commitHash: commitHash, name: window.wiki_page_name, resource_id: window.wiki_resource_id}, $.post("wiki/{{$channel_address}}/revert/page", {commitHash: commitHash, name: window.wiki_page_name, resource_id: window.wiki_resource_id},
function (data) { function (data) {
if (data.success) { if (data.success) {
$('button[id^=revert-]').removeClass('btn-success'); $('button[id^=revert-]').removeClass('btn-success');
@ -299,7 +298,7 @@
window.console.log('You must have a wiki page open in order to revert pages.'); window.console.log('You must have a wiki page open in order to revert pages.');
return false; return false;
} }
$.post("wiki/{{$channel}}/compare/page", { $.post("wiki/{{$channel_address}}/compare/page", {
compareCommit: compareCommit, compareCommit: compareCommit,
currentCommit: window.wiki_page_commit, currentCommit: window.wiki_page_commit,
name: window.wiki_page_name, name: window.wiki_page_name,
@ -442,8 +441,6 @@
}; };
$(document).ready(function () { $(document).ready(function () {
wiki_refresh_page_list();
{{if !$mimeType || $mimeType == 'text/markdown'}} {{if !$mimeType || $mimeType == 'text/markdown'}}
$("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"}); $("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"});
window.editor.on("input", function() { window.editor.on("input", function() {

View File

@ -1,5 +1,6 @@
{{if $not_refresh}}<div id="wiki_page_list_container" {{if $hide}} style="display: none;" {{/if}}>{{/if}} {{if ! $refresh}}
<div id="wiki_page_list" class="widget" > <div id="wiki_page_list" class="widget" >
{{/if}}
<h3>{{$header}}</h3> <h3>{{$header}}</h3>
<ul class="nav nav-pills flex-column"> <ul class="nav nav-pills flex-column">
{{if $pages}} {{if $pages}}
@ -8,7 +9,7 @@
{{if $page.resource_id && $candel}} {{if $page.resource_id && $candel}}
<i class="nav-link widget-nav-pills-icons fa fa-trash-o drop-icons" onclick="wiki_delete_page('{{$page.title}}', '{{$page.url}}', '{{$page.resource_id}}', '{{$page.link_id}}')"></i> <i class="nav-link widget-nav-pills-icons fa fa-trash-o drop-icons" onclick="wiki_delete_page('{{$page.title}}', '{{$page.url}}', '{{$page.resource_id}}', '{{$page.link_id}}')"></i>
{{/if}} {{/if}}
<a class="nav-link" href="/wiki/{{$channel}}/{{$wikiname}}/{{$page.url}}">{{$page.title}}</a> <a class="nav-link" href="/wiki/{{$channel_address}}/{{$wikiname}}/{{$page.url}}">{{$page.title}}</a>
</li> </li>
{{/foreach}} {{/foreach}}
{{/if}} {{/if}}
@ -18,19 +19,21 @@
</ul> </ul>
{{if $canadd}} {{if $canadd}}
<div id="new-page-form-wrapper" class="sub-menu" style="display:none;"> <div id="new-page-form-wrapper" class="sub-menu" style="display:none;">
<form id="new-page-form" action="wiki/{{$channel}}/create/page" method="post" > <form id="new-page-form" action="wiki/{{$channel_address}}/create/page" method="post" >
<input type="hidden" name="resource_id" value="{{$resource_id}}"> <input type="hidden" name="resource_id" value="{{$resource_id}}">
{{include file="field_input.tpl" field=$pageName}} {{include file="field_input.tpl" field=$pageName}}
<button id="new-page-submit" class="btn btn-primary" type="submit" name="submit" >Submit</button> <button id="new-page-submit" class="btn btn-primary" type="submit" name="submit" >Submit</button>
</form> </form>
</div> </div>
{{/if}} {{/if}}
{{if ! $refresh}}
</div> </div>
{{if $not_refresh}}</div>{{/if}} {{/if}}
{{if $canadd}}
<script> <script>
$('#new-page-submit').click(function (ev) { $('#new-page-submit').click(function (ev) {
$.post("wiki/{{$channel}}/create/page", {pageName: $('#id_pageName').val(), resource_id: window.wiki_resource_id}, $.post("wiki/{{$channel_address}}/create/page", {pageName: $('#id_pageName').val(), resource_id: window.wiki_resource_id},
function(data) { function(data) {
if(data.success) { if(data.success) {
window.location = data.url; window.location = data.url;
@ -45,7 +48,7 @@
if(!confirm('Are you sure you want to delete the page: ' + wiki_page_name)) { if(!confirm('Are you sure you want to delete the page: ' + wiki_page_name)) {
return; return;
} }
$.post("wiki/{{$channel}}/delete/page", {name: wiki_page_url, resource_id: wiki_resource_id}, $.post("wiki/{{$channel_address}}/delete/page", {name: wiki_page_url, resource_id: wiki_resource_id},
function (data) { function (data) {
if (data.success) { if (data.success) {
window.console.log('Page deleted successfully.'); window.console.log('Page deleted successfully.');
@ -74,3 +77,4 @@
return false; return false;
} }
</script> </script>
{{/if}}