diff options
author | git-marijus <mario@mariovavti.com> | 2017-09-15 16:30:14 +0200 |
---|---|---|
committer | git-marijus <mario@mariovavti.com> | 2017-09-15 16:30:14 +0200 |
commit | 663802e6992858c026a4e9b325575bc064cc687d (patch) | |
tree | 1889ae84e99fa9c7c39a504a25aca3d492a7ecc7 | |
parent | 4c5722c766643af368f600abb93a44fc72d27c11 (diff) | |
parent | 67348547765876faa847fa53f92d37a6b4bc4aa5 (diff) | |
download | volse-hubzilla-663802e6992858c026a4e9b325575bc064cc687d.tar.gz volse-hubzilla-663802e6992858c026a4e9b325575bc064cc687d.tar.bz2 volse-hubzilla-663802e6992858c026a4e9b325575bc064cc687d.zip |
Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev
-rw-r--r-- | Zotlabs/Lib/NativeWiki.php | 18 | ||||
-rw-r--r-- | Zotlabs/Lib/NativeWikiPage.php | 6 | ||||
-rw-r--r-- | Zotlabs/Module/Wiki.php | 43 | ||||
-rw-r--r-- | Zotlabs/Widget/Wiki_pages.php | 3 | ||||
-rw-r--r-- | include/channel.php | 12 | ||||
-rw-r--r-- | include/photo/photo_driver.php | 30 | ||||
-rw-r--r-- | view/tpl/wiki.tpl | 1 | ||||
-rw-r--r-- | view/tpl/wiki_page_list.tpl | 4 | ||||
-rw-r--r-- | view/tpl/wikilist.tpl | 13 |
9 files changed, 111 insertions, 19 deletions
diff --git a/Zotlabs/Lib/NativeWiki.php b/Zotlabs/Lib/NativeWiki.php index 375fad4d7..39952ed5f 100644 --- a/Zotlabs/Lib/NativeWiki.php +++ b/Zotlabs/Lib/NativeWiki.php @@ -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 ); } } diff --git a/Zotlabs/Lib/NativeWikiPage.php b/Zotlabs/Lib/NativeWikiPage.php index 558a70a3c..4b637781e 100644 --- a/Zotlabs/Lib/NativeWikiPage.php +++ b/Zotlabs/Lib/NativeWikiPage.php @@ -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'; } diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php index 2b1322122..013ffef70 100644 --- a/Zotlabs/Module/Wiki.php +++ b/Zotlabs/Module/Wiki.php @@ -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); diff --git a/Zotlabs/Widget/Wiki_pages.php b/Zotlabs/Widget/Wiki_pages.php index 3999d9858..f98081da0 100644 --- a/Zotlabs/Widget/Wiki_pages.php +++ b/Zotlabs/Widget/Wiki_pages.php @@ -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'] diff --git a/include/channel.php b/include/channel.php index 213676f52..7072bb4ce 100644 --- a/include/channel.php +++ b/include/channel.php @@ -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 diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php index 94d0faa94..c6c023147 100644 --- a/include/photo/photo_driver.php +++ b/include/photo/photo_driver.php @@ -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) { diff --git a/view/tpl/wiki.tpl b/view/tpl/wiki.tpl index 7995b7bb1..70a13806d 100644 --- a/view/tpl/wiki.tpl +++ b/view/tpl/wiki.tpl @@ -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"> diff --git a/view/tpl/wiki_page_list.tpl b/view/tpl/wiki_page_list.tpl index 2e7fb8b9e..3d38a0b81 100644 --- a/view/tpl/wiki_page_list.tpl +++ b/view/tpl/wiki_page_list.tpl @@ -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> diff --git a/view/tpl/wikilist.tpl b/view/tpl/wikilist.tpl index a9196afd3..51d24c195 100644 --- a/view/tpl/wikilist.tpl +++ b/view/tpl/wikilist.tpl @@ -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> |