Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev
This commit is contained in:
commit
663802e699
@ -28,8 +28,8 @@ class NativeWiki {
|
||||
$w['htmlName'] = escape_tags($w['rawName']);
|
||||
$w['urlName'] = urlencode(urlencode($w['rawName']));
|
||||
$w['mimeType'] = get_iconfig($w, 'wiki', 'mimeType');
|
||||
|
||||
|
||||
$w['typelock'] = get_iconfig($w, 'wiki', 'typelock');
|
||||
$w['lock'] = (($w['item_private'] || $w['allow_cid'] || $w['allow_gid'] || $w['deny_cid'] || $w['deny_gid']) ? true : false);
|
||||
}
|
||||
}
|
||||
// TODO: query db for wikis the observer can access. Return with two lists, for read and write access
|
||||
@ -91,7 +91,9 @@ class NativeWiki {
|
||||
if(! set_iconfig($arr, 'wiki', 'mimeType', $wiki['mimeType'], true)) {
|
||||
return array('item' => null, 'success' => false);
|
||||
}
|
||||
|
||||
|
||||
set_iconfig($arr,'wiki','typelock',$wiki['typelock'],true);
|
||||
|
||||
$post = item_store($arr);
|
||||
|
||||
$item_id = $post['item_id'];
|
||||
@ -157,13 +159,15 @@ class NativeWiki {
|
||||
// Get wiki metadata
|
||||
$rawName = get_iconfig($w, 'wiki', 'rawName');
|
||||
$mimeType = get_iconfig($w, 'wiki', 'mimeType');
|
||||
$typelock = get_iconfig($w, 'wiki', 'typelock');
|
||||
|
||||
return array(
|
||||
'wiki' => $w,
|
||||
'rawName' => $rawName,
|
||||
'wiki' => $w,
|
||||
'rawName' => $rawName,
|
||||
'htmlName' => escape_tags($rawName),
|
||||
'urlName' => urlencode(urlencode($rawName)),
|
||||
'mimeType' => $mimeType
|
||||
'urlName' => urlencode(urlencode($rawName)),
|
||||
'mimeType' => $mimeType,
|
||||
'typelock' => $typelock
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -607,11 +607,11 @@ class NativeWikiPage {
|
||||
}
|
||||
|
||||
static public function get_file_ext($arr) {
|
||||
if($arr['mimeType'] === 'text/bbcode')
|
||||
if($arr['mimetype'] === 'text/bbcode')
|
||||
return '.bb';
|
||||
elseif($arr['mimeType'] === 'text/markdown')
|
||||
elseif($arr['mimetype'] === 'text/markdown')
|
||||
return '.md';
|
||||
elseif($arr['mimeType'] === 'text/plain')
|
||||
elseif($arr['mimetype'] === 'text/plain')
|
||||
return '.txt';
|
||||
|
||||
}
|
||||
|
@ -113,12 +113,13 @@ class Wiki extends \Zotlabs\Web\Controller {
|
||||
$o = '';
|
||||
|
||||
// Download a wiki
|
||||
/*
|
||||
|
||||
if((argc() > 3) && (argv(2) === 'download') && (argv(3) === 'wiki')) {
|
||||
|
||||
$resource_id = argv(4);
|
||||
$w = Zlib\NativeWiki::get_wiki($owner['channel_id'],$observer_hash,$resource_id);
|
||||
|
||||
$w = Zlib\NativeWiki::get_wiki($owner,$observer_hash,$resource_id);
|
||||
// $w = Zlib\NativeWiki::get_wiki($owner,$observer_hash,$resource_id);
|
||||
if(! $w['htmlName']) {
|
||||
notice(t('Error retrieving wiki') . EOL);
|
||||
}
|
||||
@ -133,8 +134,35 @@ class Wiki extends \Zotlabs\Web\Controller {
|
||||
$zip_filename = $w['urlName'];
|
||||
$zip_filepath = '/tmp/' . $zip_folder_name . '/' . $zip_filename;
|
||||
|
||||
|
||||
// Generate the zip file
|
||||
ZLib\ExtendedZip::zipTree($w['path'], $zip_filepath, \ZipArchive::CREATE);
|
||||
|
||||
$zip = new \ZipArchive;
|
||||
$r = $zip->open($zip_filepath, \ZipArchive::CREATE);
|
||||
if($r === true) {
|
||||
$i = q("select * from item where resource_type = 'nwikipage' and resource_id = '%s'",
|
||||
dbesc($resource_id)
|
||||
);
|
||||
if($i) {
|
||||
foreach($i as $iv) {
|
||||
if($iv['mimetype'] === 'text/plain') {
|
||||
$content = html_entity_decode($iv['body'],ENT_COMPAT,'UTF-8');
|
||||
}
|
||||
elseif($iv['mimetype'] === 'text/bbcode') {
|
||||
$content = html_entity_decode($iv['body'],ENT_COMPAT,'UTF-8');
|
||||
}
|
||||
elseif($iv['mimetype'] === 'text/markdown') {
|
||||
$content = html_entity_decode(\Zlib\MarkdownSoap::unescape($iv['body']),ENT_COMPAT,'UTF-8');
|
||||
}
|
||||
$fname = get_iconfig($iv['id'],'nwikipage','pagetitle') . Zlib\NativeWikiPage::get_file_ext($iv);
|
||||
$zip->addFromString($fname,$content);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
$zip->close();
|
||||
|
||||
// Output the file for download
|
||||
|
||||
@ -153,7 +181,7 @@ class Wiki extends \Zotlabs\Web\Controller {
|
||||
killme();
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
switch(argc()) {
|
||||
case 2:
|
||||
$wikis = Zlib\NativeWiki::listwikis($owner, get_observer_hash());
|
||||
@ -173,12 +201,14 @@ class Wiki extends \Zotlabs\Web\Controller {
|
||||
'$mimeType' => array('mimeType', t('Content type'), '', '', ['text/markdown' => t('Markdown'), 'text/bbcode' => t('BBcode'), 'text/plain' => t('Text') ]),
|
||||
'$name' => t('Name'),
|
||||
'$type' => t('Type'),
|
||||
'$unlocked' => t('Any type'),
|
||||
'$lockstate' => $x['lockstate'],
|
||||
'$acl' => $x['acl'],
|
||||
'$allow_cid' => $x['allow_cid'],
|
||||
'$allow_gid' => $x['allow_gid'],
|
||||
'$deny_cid' => $x['deny_cid'],
|
||||
'$deny_gid' => $x['deny_gid'],
|
||||
'$typelock' => array('typelock', t('Lock content type'), '', '', array(t('No'), t('Yes'))),
|
||||
'$notify' => array('postVisible', t('Create a status post for this wiki'), '', '', array(t('No'), t('Yes')))
|
||||
));
|
||||
|
||||
@ -295,6 +325,9 @@ class Wiki extends \Zotlabs\Web\Controller {
|
||||
'$cancel' => t('Cancel')
|
||||
));
|
||||
|
||||
$types = [ 'text/bbcode' => t('BBcode'), 'text/markdown' => t('Markdown'), 'text/plain' => 'Text' ];
|
||||
$currenttype = $types[$mimeType];
|
||||
|
||||
$placeholder = t('Short description of your changes (optional)');
|
||||
|
||||
$o .= replace_macros(get_markup_template('wiki.tpl'),array(
|
||||
@ -309,6 +342,7 @@ class Wiki extends \Zotlabs\Web\Controller {
|
||||
'$resource_id' => $resource_id,
|
||||
'$page' => $pageUrlName,
|
||||
'$mimeType' => $mimeType,
|
||||
'$typename' => $currenttype,
|
||||
'$content' => $content,
|
||||
'$renderedContent' => $renderedContent,
|
||||
'$pageRename' => array('pageRename', t('New page name'), '', ''),
|
||||
@ -394,6 +428,7 @@ class Wiki extends \Zotlabs\Web\Controller {
|
||||
$wiki['htmlName'] = escape_tags($_POST['wikiName']);
|
||||
$wiki['urlName'] = urlencode(urlencode($_POST['wikiName']));
|
||||
$wiki['mimeType'] = $_POST['mimeType'];
|
||||
$wiki['typelock'] = $_POST['typelock'];
|
||||
|
||||
if($wiki['urlName'] === '') {
|
||||
notice( t('Error creating wiki. Invalid name.') . EOL);
|
||||
|
@ -35,6 +35,7 @@ class Wiki_pages {
|
||||
if (!$wikiname) {
|
||||
$wikiname = '';
|
||||
}
|
||||
$typelock = $w['typelock'];
|
||||
}
|
||||
|
||||
$can_create = perm_is_allowed(\App::$profile['uid'],get_observer_hash(),'write_wiki');
|
||||
@ -50,6 +51,8 @@ class Wiki_pages {
|
||||
'$canadd' => $can_create,
|
||||
'$candel' => $can_delete,
|
||||
'$addnew' => t('Add new page'),
|
||||
'$typelock' => $typelock,
|
||||
'$lockedtype' => $w['mimeType'],
|
||||
'$mimetype' => mimetype_select(0,$w['mimeType'], [ 'text/markdown','text/bbcode', 'text/plain' ]),
|
||||
'$pageName' => array('pageName', t('Page name')),
|
||||
'$refresh' => $arr['refresh']
|
||||
|
@ -7,6 +7,7 @@ require_once('include/zot.php');
|
||||
require_once('include/crypto.php');
|
||||
require_once('include/menu.php');
|
||||
require_once('include/perm_upgrade.php');
|
||||
require_once('include/photo/photo_driver.php');
|
||||
|
||||
/**
|
||||
* @brief Called when creating a new channel.
|
||||
@ -273,6 +274,17 @@ function create_identity($arr) {
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$a = q("select * from account where account_id = %d",
|
||||
intval($arr['account_id'])
|
||||
);
|
||||
|
||||
$z = [ 'account' => $a[0], 'channel' => $r[0], 'photo_url' => '' ];
|
||||
call_hooks('create_channel_photo',$z);
|
||||
|
||||
if($z['photo_url']) {
|
||||
import_channel_photo_from_url($z['photo_url'],$arr['account_id'],$r[0]['channel_id']);
|
||||
}
|
||||
|
||||
if($role_permissions && array_key_exists('limits',$role_permissions))
|
||||
$perm_limits = $role_permissions['limits'];
|
||||
else
|
||||
|
@ -637,6 +637,36 @@ function import_xchan_photo($photo,$xchan,$thing = false) {
|
||||
|
||||
}
|
||||
|
||||
function import_channel_photo_from_url($photo,$aid,$uid) {
|
||||
|
||||
if($photo) {
|
||||
$filename = basename($photo);
|
||||
|
||||
$result = z_fetch_url($photo,true);
|
||||
|
||||
if($result['success']) {
|
||||
$img_str = $result['body'];
|
||||
$type = guess_image_type($photo, $result['header']);
|
||||
|
||||
$h = explode("\n",$result['header']);
|
||||
if($h) {
|
||||
foreach($h as $hl) {
|
||||
if(stristr($hl,'content-type:')) {
|
||||
if(! stristr($hl,'image/')) {
|
||||
$photo_failure = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$photo_failure = true;
|
||||
}
|
||||
|
||||
import_channel_photo($img_str,$type,$aid,$uid);
|
||||
|
||||
}
|
||||
|
||||
|
||||
function import_channel_photo($photo,$type,$aid,$uid) {
|
||||
|
@ -1,6 +1,7 @@
|
||||
<div class="generic-content-wrapper" {{if $hideEditor}}style="display: none;"{{/if}}>
|
||||
<div class="section-title-wrapper">
|
||||
<div class="pull-right">
|
||||
<span class="wiki-typename">[{{$typename}}] </span>
|
||||
{{if $showPageControls}}
|
||||
<div id="page-tools" class="btn-group" style="display: none;">
|
||||
<button type="button" class="btn btn-outline-secondary btn-sm dropdown-toggle" data-toggle="dropdown">
|
||||
|
@ -21,7 +21,11 @@
|
||||
<div id="new-page-form-wrapper" class="sub-menu" style="display:none;">
|
||||
<form id="new-page-form" action="wiki/{{$channel_address}}/create/page" method="post" >
|
||||
<input type="hidden" name="resource_id" value="{{$resource_id}}">
|
||||
{{if $typelock}}
|
||||
<input type="hidden" name="mimetype" value="{{$lockedtype}}">
|
||||
{{else}}
|
||||
{{$mimetype}}
|
||||
{{/if}}
|
||||
{{include file="field_input.tpl" field=$pageName}}
|
||||
<button id="new-page-submit" class="btn btn-primary" type="submit" name="submit" >Submit</button>
|
||||
</form>
|
||||
|
@ -10,6 +10,7 @@
|
||||
<form id="new-wiki-form" action="wiki/{{$channel}}/create/wiki" method="post" class="acl-form" data-form_id="new-wiki-form" data-allow_cid='{{$allow_cid}}' data-allow_gid='{{$allow_gid}}' data-deny_cid='{{$deny_cid}}' data-deny_gid='{{$deny_gid}}'>
|
||||
{{include file="field_input.tpl" field=$wikiName}}
|
||||
{{include file="field_select.tpl" field=$mimeType}}
|
||||
{{include file="field_checkbox.tpl" field=$typelock}}
|
||||
{{include file="field_checkbox.tpl" field=$notify}}
|
||||
<div>
|
||||
<div class="btn-group pull-right">
|
||||
@ -29,7 +30,8 @@
|
||||
<th width="96%">{{$name}}</th>
|
||||
<th width="1%">{{$type}}</th>
|
||||
<th width="1%" class="wikis-index-tool"></th>
|
||||
<!-- th width="1%" class="wikis-index-tool"></th -->
|
||||
<th width="1%" class="wikis-index-tool"></th>
|
||||
<th width="1%" class="wikis-index-tool"></th>
|
||||
{{if $owner}}
|
||||
<th width="1%"></th>
|
||||
{{/if}}
|
||||
@ -37,16 +39,17 @@
|
||||
{{foreach $wikis as $wiki}}
|
||||
<tr class="wikis-index-row">
|
||||
<td><a href="/wiki/{{$channel}}/{{$wiki.urlName}}/Home" title="{{$view}}"{{if $wiki.active}} class="active"{{/if}}>{{$wiki.title}}</a></td>
|
||||
<td>{{$wiki.mimeType}}</td>
|
||||
<td>{{if $wiki.typelock}}{{$wiki.mimeType}}{{else}}{{$unlocked}}{{/if}}</td>
|
||||
<td class="wiki-index-tool dropdown">
|
||||
{{if $wiki.lock}}
|
||||
<i class="fa fa-lock lockview" data-toggle="dropdown" onclick="lockview('item',{{$wiki.id}});"></i></button>
|
||||
<button class="btn btn-default btn-sm" onclick="lockview('item',{{$wiki.id}});"><i class="fa fa-lock lockview" data-toggle="dropdown" ></i></button>
|
||||
<ul id="panel-{{$wiki.id}}" class="lockview-panel dropdown-menu dropdown-menu-right"></ul>
|
||||
{{/if}}
|
||||
</td>
|
||||
<!-- td class="wiki-index-tool"><i class="fa fa-download fakelink" onclick="wiki_download_wiki('{{$wiki.resource_id}}'); return false;"></i></td -->
|
||||
<td class="wiki-index-tool"><button class="btn btn-default btn-sm" onclick="wiki_download_wiki('{{$wiki.resource_id}}'); return false;"><i class="fa fa-download fakelink" ></i></button></td>
|
||||
{{if $owner}}
|
||||
<td><i class="fa fa-trash-o drop-icons" onclick="wiki_delete_wiki('{{$wiki.title}}', '{{$wiki.resource_id}}'); return false;"></i></td>
|
||||
<td> </td>
|
||||
<td><button class="btn btn-default btn-sm" onclick="wiki_delete_wiki('{{$wiki.title}}', '{{$wiki.resource_id}}'); return false;"><i class="fa fa-trash-o drop-icons" ></i></button></td>
|
||||
{{/if}}
|
||||
</tr>
|
||||
<tr>
|
||||
|
Reference in New Issue
Block a user