Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge
This commit is contained in:
commit
6c5795b519
@ -44,8 +44,6 @@ class Wiki extends \Zotlabs\Web\Controller {
|
|||||||
// Something like $interface = array('new_page_button' => false, 'new_wiki_button' => false, ...)
|
// Something like $interface = array('new_page_button' => false, 'new_wiki_button' => false, ...)
|
||||||
$wiki_owner = false;
|
$wiki_owner = false;
|
||||||
$showNewWikiButton = false;
|
$showNewWikiButton = false;
|
||||||
$showCommitMsg = false;
|
|
||||||
$hidePageHistory = false;
|
|
||||||
$pageHistory = array();
|
$pageHistory = array();
|
||||||
$local_observer = null;
|
$local_observer = null;
|
||||||
$resource_id = '';
|
$resource_id = '';
|
||||||
@ -173,10 +171,12 @@ class Wiki extends \Zotlabs\Web\Controller {
|
|||||||
// Fetch the wiki info and determine observer permissions
|
// Fetch the wiki info and determine observer permissions
|
||||||
$wikiUrlName = urlencode(argv(2));
|
$wikiUrlName = urlencode(argv(2));
|
||||||
$pageUrlName = urlencode(argv(3));
|
$pageUrlName = urlencode(argv(3));
|
||||||
|
|
||||||
$w = wiki_exists_by_name($owner['channel_id'], $wikiUrlName);
|
$w = wiki_exists_by_name($owner['channel_id'], $wikiUrlName);
|
||||||
if(!$w['resource_id']) {
|
if(!$w['resource_id']) {
|
||||||
notice(t('Wiki not found') . EOL);
|
notice(t('Wiki not found') . EOL);
|
||||||
goaway('/'.argv(0).'/'.argv(1));
|
goaway('/'.argv(0).'/'.argv(1));
|
||||||
|
return; //not reached
|
||||||
}
|
}
|
||||||
$resource_id = $w['resource_id'];
|
$resource_id = $w['resource_id'];
|
||||||
|
|
||||||
@ -187,6 +187,7 @@ class Wiki extends \Zotlabs\Web\Controller {
|
|||||||
if(!$perms['read']) {
|
if(!$perms['read']) {
|
||||||
notice(t('Permission denied.') . EOL);
|
notice(t('Permission denied.') . EOL);
|
||||||
goaway('/'.argv(0).'/'.argv(1));
|
goaway('/'.argv(0).'/'.argv(1));
|
||||||
|
return; //not reached
|
||||||
}
|
}
|
||||||
if($perms['write']) {
|
if($perms['write']) {
|
||||||
$wiki_editor = true;
|
$wiki_editor = true;
|
||||||
@ -198,15 +199,18 @@ class Wiki extends \Zotlabs\Web\Controller {
|
|||||||
}
|
}
|
||||||
$wikiheaderName = urldecode($wikiUrlName);
|
$wikiheaderName = urldecode($wikiUrlName);
|
||||||
$wikiheaderPage = urldecode($pageUrlName);
|
$wikiheaderPage = urldecode($pageUrlName);
|
||||||
|
$renamePage = (($wikiheaderPage === 'Home') ? '' : t('Rename page'));
|
||||||
|
|
||||||
$p = wiki_get_page_content(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
|
$p = wiki_get_page_content(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
|
||||||
if(!$p['success']) {
|
if(!$p['success']) {
|
||||||
notice(t('Error retrieving page content') . EOL);
|
notice(t('Error retrieving page content') . EOL);
|
||||||
goaway('/'.argv(0).'/'.argv(1).'/'.$wikiUrlName);
|
goaway('/'.argv(0).'/'.argv(1).'/'.$wikiUrlName);
|
||||||
|
return; //not reached
|
||||||
}
|
}
|
||||||
|
|
||||||
$mimeType = $p['mimeType'];
|
$mimeType = $p['mimeType'];
|
||||||
|
|
||||||
$rawContent = $p['mimeType'] == 'text/bbcode' ? htmlspecialchars_decode(json_decode($p['content']),ENT_COMPAT) : htmlspecialchars_decode($p['content'],ENT_COMPAT);
|
$rawContent = (($p['mimeType'] == 'text/bbcode') ? htmlspecialchars_decode(json_decode($p['content']),ENT_COMPAT) : htmlspecialchars_decode($p['content'],ENT_COMPAT));
|
||||||
$content = ($p['content'] !== '' ? $rawContent : '"# New page\n"');
|
$content = ($p['content'] !== '' ? $rawContent : '"# New page\n"');
|
||||||
// Render the Markdown-formatted page content in HTML
|
// Render the Markdown-formatted page content in HTML
|
||||||
if($mimeType == 'text/bbcode') {
|
if($mimeType == 'text/bbcode') {
|
||||||
@ -221,12 +225,11 @@ class Wiki extends \Zotlabs\Web\Controller {
|
|||||||
$showPageControls = $wiki_editor;
|
$showPageControls = $wiki_editor;
|
||||||
$showNewWikiButton = $wiki_owner;
|
$showNewWikiButton = $wiki_owner;
|
||||||
$showNewPageButton = $wiki_editor;
|
$showNewPageButton = $wiki_editor;
|
||||||
$hidePageHistory = false;
|
|
||||||
$showCommitMsg = true;
|
|
||||||
$pageHistory = wiki_page_history(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
|
$pageHistory = wiki_page_history(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
|
||||||
break;
|
break;
|
||||||
default: // Strip the extraneous URL components
|
default: // Strip the extraneous URL components
|
||||||
goaway('/'.argv(0).'/'.argv(1).'/'.$wikiUrlName.'/'.$pageUrlName);
|
goaway('/' . argv(0) . '/' . argv(1) . '/' . $wikiUrlName . '/' . $pageUrlName);
|
||||||
|
return; //not reached
|
||||||
}
|
}
|
||||||
|
|
||||||
$wikiModalID = random_string(3);
|
$wikiModalID = random_string(3);
|
||||||
@ -241,15 +244,14 @@ class Wiki extends \Zotlabs\Web\Controller {
|
|||||||
$o .= replace_macros(get_markup_template('wiki.tpl'),array(
|
$o .= replace_macros(get_markup_template('wiki.tpl'),array(
|
||||||
'$wikiheaderName' => $wikiheaderName,
|
'$wikiheaderName' => $wikiheaderName,
|
||||||
'$wikiheaderPage' => $wikiheaderPage,
|
'$wikiheaderPage' => $wikiheaderPage,
|
||||||
|
'$renamePage' => $renamePage,
|
||||||
'$hideEditor' => $hide_editor, // True will completely hide the content section and is used for the case of no wiki selected
|
'$hideEditor' => $hide_editor, // True will completely hide the content section and is used for the case of no wiki selected
|
||||||
'$chooseWikiMessage' => t('Choose an available wiki from the list on the left.'),
|
'$chooseWikiMessage' => t('Choose an available wiki from the list on the left.'),
|
||||||
'$showPageControls' => $showPageControls,
|
'$showPageControls' => $showPageControls,
|
||||||
'$editOrSourceLabel' => (($showPageControls) ? t('Edit') : t('Source')),
|
'$editOrSourceLabel' => (($showPageControls) ? t('Edit') : t('Source')),
|
||||||
'$tools_label' => 'Wiki Tools',
|
'$tools_label' => 'Page Tools',
|
||||||
'$showNewWikiButton'=> $showNewWikiButton,
|
'$showNewWikiButton'=> $showNewWikiButton,
|
||||||
'$showNewPageButton'=> $showNewPageButton,
|
'$showNewPageButton'=> $showNewPageButton,
|
||||||
'$hidePageHistory' => $hidePageHistory,
|
|
||||||
'$showCommitMsg' => $showCommitMsg,
|
|
||||||
'$channel' => $owner['channel_address'],
|
'$channel' => $owner['channel_address'],
|
||||||
'$resource_id' => $resource_id,
|
'$resource_id' => $resource_id,
|
||||||
'$page' => $pageUrlName,
|
'$page' => $pageUrlName,
|
||||||
@ -263,9 +265,7 @@ class Wiki extends \Zotlabs\Web\Controller {
|
|||||||
'$mimeType' => $mimeType,
|
'$mimeType' => $mimeType,
|
||||||
'$content' => $content,
|
'$content' => $content,
|
||||||
'$renderedContent' => $renderedContent,
|
'$renderedContent' => $renderedContent,
|
||||||
'$wikiName' => array('wikiName', t('Enter the name of your new wiki:'), '', ''),
|
'$pageRename' => array('pageRename', t('New page name'), '', ''),
|
||||||
'$pageName' => array('pageName', t('Enter the name of the new page:'), '', ''),
|
|
||||||
'$pageRename' => array('pageRename', t('Enter the new name:'), '', ''),
|
|
||||||
'$commitMsg' => array('commitMsg', '', '', '', '', 'placeholder="Short description of your changes (optional)"'),
|
'$commitMsg' => array('commitMsg', '', '', '', '', 'placeholder="Short description of your changes (optional)"'),
|
||||||
'$pageHistory' => $pageHistory['history'],
|
'$pageHistory' => $pageHistory['history'],
|
||||||
'$wikiModal' => $wikiModal,
|
'$wikiModal' => $wikiModal,
|
||||||
@ -282,7 +282,10 @@ class Wiki extends \Zotlabs\Web\Controller {
|
|||||||
'$modalerrorlink' => t('Error getting photo link'),
|
'$modalerrorlink' => t('Error getting photo link'),
|
||||||
'$modalerroralbum' => t('Error getting album'),
|
'$modalerroralbum' => t('Error getting album'),
|
||||||
));
|
));
|
||||||
head_add_js('library/ace/ace.js'); // Ace Code Editor
|
|
||||||
|
if($p['mimeType'] != 'text/bbcode')
|
||||||
|
head_add_js('library/ace/ace.js'); // Ace Code Editor
|
||||||
|
|
||||||
return $o;
|
return $o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,14 +2,16 @@
|
|||||||
<div class="section-title-wrapper">
|
<div class="section-title-wrapper">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
{{if $showPageControls}}
|
{{if $showPageControls}}
|
||||||
<div class="btn-group">
|
<div id="page-tools" class="btn-group" style="display: none;">
|
||||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown">
|
<button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown">
|
||||||
<i class="fa fa-caret-down"></i> {{$tools_label}}
|
<i class="fa fa-caret-down"></i> {{$tools_label}}
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu dropdown-menu-right">
|
<ul class="dropdown-menu dropdown-menu-right">
|
||||||
|
{{if $renamePage}}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a id="rename-page" class="nav-link" href="#"><i class="fa fa-edit"></i> Rename Page</a>
|
<a class="nav-link rename-page" href="#"><i class="fa fa-edit"></i> {{$renamePage}}</a>
|
||||||
</li>
|
</li>
|
||||||
|
{{/if}}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a id="embed-image" class="nav-link" href="#"><i class="fa fa-picture-o"></i> Embed Image</a>
|
<a id="embed-image" class="nav-link" href="#"><i class="fa fa-picture-o"></i> Embed Image</a>
|
||||||
</li>
|
</li>
|
||||||
@ -28,17 +30,22 @@
|
|||||||
<div id="rename-page-form-wrapper" class="section-content-tools-wrapper" style="display:none;">
|
<div id="rename-page-form-wrapper" class="section-content-tools-wrapper" style="display:none;">
|
||||||
<form id="rename-page-form" action="wiki/rename/page" method="post" >
|
<form id="rename-page-form" action="wiki/rename/page" method="post" >
|
||||||
{{include file="field_input.tpl" field=$pageRename}}
|
{{include file="field_input.tpl" field=$pageRename}}
|
||||||
<div class="btn-group pull-right">
|
<div class="form-group">
|
||||||
<button id="rename-page-submit" class="btn btn-warning" type="submit" name="submit" >Rename Page</button>
|
<div class="pull-right">
|
||||||
|
<button id="rename-page-submit" class="btn btn-primary" type="submit" name="submit">Submit</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button class="btn btn-default rename-page" type="button">Cancel</button>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="clear"></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div id="wiki-content-container" class="section-content-wrapper" {{if $hideEditor}}style="display: none;"{{/if}}>
|
<div id="wiki-content-container" class="section-content-wrapper" {{if $hideEditor}}style="display: none;"{{/if}}>
|
||||||
<ul class="nav nav-tabs" id="wiki-nav-tabs">
|
<ul class="nav nav-tabs" id="wiki-nav-tabs">
|
||||||
<li id="edit-pane-tab"><a data-toggle="tab" href="#edit-pane">{{$editOrSourceLabel}}</a></li>
|
<li id="edit-pane-tab"><a data-toggle="tab" href="#edit-pane">{{$editOrSourceLabel}}</a></li>
|
||||||
<li class="active"><a data-toggle="tab" href="#preview-pane" id="wiki-get-preview">View</a></li>
|
<li class="active"><a data-toggle="tab" href="#preview-pane" id="wiki-get-preview">View</a></li>
|
||||||
<li {{if $hidePageHistory}}style="display: none;"{{/if}}><a data-toggle="tab" href="#page-history-pane" id="wiki-get-history">History</a></li>
|
<li><a data-toggle="tab" href="#page-history-pane" id="wiki-get-history">History</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="tab-content" id="wiki-page-tabs">
|
<div class="tab-content" id="wiki-page-tabs">
|
||||||
<div id="edit-pane" class="tab-pane fade">
|
<div id="edit-pane" class="tab-pane fade">
|
||||||
@ -47,7 +54,6 @@
|
|||||||
{{else}}
|
{{else}}
|
||||||
<textarea id="editor">{{$content}}</textarea>
|
<textarea id="editor">{{$content}}</textarea>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if $showCommitMsg}}
|
|
||||||
{{if $showPageControls}}
|
{{if $showPageControls}}
|
||||||
<div>
|
<div>
|
||||||
<div id="id_{{$commitMsg.0}}_wrapper" class="form-group field input">
|
<div id="id_{{$commitMsg.0}}_wrapper" class="form-group field input">
|
||||||
@ -60,14 +66,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
|
||||||
</div>
|
</div>
|
||||||
<div id="preview-pane" class="tab-pane fade in active">
|
<div id="preview-pane" class="tab-pane fade in active">
|
||||||
<div id="wiki-preview">
|
<div id="wiki-preview">
|
||||||
{{$renderedContent}}
|
{{$renderedContent}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="page-history-pane" class="tab-pane fade" {{if $hidePageHistory}}style="display: none;"{{/if}}>
|
<div id="page-history-pane" class="tab-pane fade">
|
||||||
<div id="page-history-list"></div>
|
<div id="page-history-list"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -105,17 +110,12 @@
|
|||||||
window.wiki_page_content = {{if !$mimeType || $mimeType == 'text/markdown'}}{{$content}}{{else}}`{{$content}}`{{/if}};
|
window.wiki_page_content = {{if !$mimeType || $mimeType == 'text/markdown'}}{{$content}}{{else}}`{{$content}}`{{/if}};
|
||||||
window.wiki_page_commit = '{{$commit}}';
|
window.wiki_page_commit = '{{$commit}}';
|
||||||
|
|
||||||
if (window.wiki_page_name === 'Home') {
|
|
||||||
$('#delete-page').hide();
|
|
||||||
$('#rename-page').hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
$("#generic-modal-ok-{{$wikiModalID}}").removeClass('btn-primary');
|
$("#generic-modal-ok-{{$wikiModalID}}").removeClass('btn-primary');
|
||||||
$("#generic-modal-ok-{{$wikiModalID}}").addClass('btn-danger');
|
$("#generic-modal-ok-{{$wikiModalID}}").addClass('btn-danger');
|
||||||
|
|
||||||
$('#rename-page').click(function (ev) {
|
$('.rename-page').click(function (ev) {
|
||||||
$('#rename-page-form-wrapper').show();
|
$('#rename-page-form-wrapper').toggle();
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
});
|
});
|
||||||
|
|
||||||
$( "#rename-page-form" ).submit(function( event ) {
|
$( "#rename-page-form" ).submit(function( event ) {
|
||||||
@ -155,17 +155,23 @@
|
|||||||
|
|
||||||
editor.getSession().setValue(window.wiki_page_content);
|
editor.getSession().setValue(window.wiki_page_content);
|
||||||
window.editor = editor; // Store the editor in the window object so the anonymous function can use it.
|
window.editor = editor; // Store the editor in the window object so the anonymous function can use it.
|
||||||
{{if !$showPageControls}}
|
|
||||||
editor.setReadOnly(true); // Disable editing if the viewer lacks edit permission
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
|
|
||||||
{{else}}
|
{{else}}
|
||||||
window.editor = editor = $('#editor');
|
window.editor = editor = $('#editor');
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
{{if !$showPageControls}}
|
||||||
|
{{if !$mimeType || $mimeType == 'text/markdown'}}
|
||||||
|
editor.setReadOnly(true); // Disable editing if the viewer lacks edit permission
|
||||||
|
{{else}}
|
||||||
|
editor.prop('readonly', true);
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
$('#edit-pane-tab').click(function (ev) {
|
$('#edit-pane-tab').click(function (ev) {
|
||||||
setTimeout(function() {window.editor.focus();}, 500); // Return the focus to the editor allowing immediate text entry
|
setTimeout(function() {window.editor.focus();}, 500); // Return the focus to the editor allowing immediate text entry
|
||||||
|
$('#page-tools').show();
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#wiki-get-preview').click(function (ev) {
|
$('#wiki-get-preview').click(function (ev) {
|
||||||
@ -181,6 +187,7 @@
|
|||||||
if (data.success) {
|
if (data.success) {
|
||||||
$('#wiki-preview').html(data.html);
|
$('#wiki-preview').html(data.html);
|
||||||
$("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"});
|
$("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"});
|
||||||
|
$('#page-tools').hide();
|
||||||
} else {
|
} else {
|
||||||
window.console.log('Error previewing page.');
|
window.console.log('Error previewing page.');
|
||||||
}
|
}
|
||||||
@ -192,6 +199,7 @@
|
|||||||
$.post("wiki/{{$channel}}/history/page", {name: window.wiki_page_name, resource_id: window.wiki_resource_id}, function (data) {
|
$.post("wiki/{{$channel}}/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();
|
||||||
} else {
|
} else {
|
||||||
window.console.log('Error getting page history.');
|
window.console.log('Error getting page history.');
|
||||||
}
|
}
|
||||||
@ -407,27 +415,14 @@
|
|||||||
'json');
|
'json');
|
||||||
};
|
};
|
||||||
|
|
||||||
function wiki_show_edit_wiki_form(wiki_title, wiki_resource_id) {
|
|
||||||
window.wiki_resource_id = wiki_resource_id;
|
|
||||||
window.wiki_title = wiki_title;
|
|
||||||
$('div[id^=\'edit-wiki-form-wrapper\']').hide();
|
|
||||||
$('#new-page-form-wrapper').hide();
|
|
||||||
$('#new-wiki-form-wrapper').hide();
|
|
||||||
$('#edit-wiki-form-wrapper').toggle();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
wiki_refresh_page_list();
|
wiki_refresh_page_list();
|
||||||
$("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"});
|
$("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"});
|
||||||
|
|
||||||
|
// This seems obsolete
|
||||||
// Show Edit tab first. Otherwise the Ace editor does not load.
|
// Show Edit tab first. Otherwise the Ace editor does not load.
|
||||||
$("#wiki-nav-tabs li:eq(1) a").tab('show');
|
//$("#wiki-nav-tabs li:eq(1) a").tab('show');
|
||||||
{{if $showNewWikiButton}}
|
|
||||||
$('#new-wiki-button').show();
|
|
||||||
{{else}}
|
|
||||||
$('#new-wiki-button').hide();
|
|
||||||
{{/if}}
|
|
||||||
// using input event instead of change since it's called with some timeout
|
|
||||||
{{if !$mimeType || $mimeType == 'text/markdown'}}
|
{{if !$mimeType || $mimeType == 'text/markdown'}}
|
||||||
window.editor.on("input", function() {
|
window.editor.on("input", function() {
|
||||||
if(window.editor.getSession().getUndoManager().isClean()) {
|
if(window.editor.getSession().getUndoManager().isClean()) {
|
||||||
|
Reference in New Issue
Block a user