Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge

This commit is contained in:
zotlabs 2016-12-01 02:51:27 -08:00
commit 6c5795b519
2 changed files with 48 additions and 50 deletions

View File

@ -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;
} }

View File

@ -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>&nbsp;{{$tools_label}} <i class="fa fa-caret-down"></i>&nbsp;{{$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>&nbsp;Rename Page</a> <a class="nav-link rename-page" href="#"><i class="fa fa-edit"></i>&nbsp;{{$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>&nbsp;Embed Image</a> <a id="embed-image" class="nav-link" href="#"><i class="fa fa-picture-o"></i>&nbsp;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()) {