diff options
-rw-r--r-- | Zotlabs/Lib/ThreadItem.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Settings/Conversation.php | 60 | ||||
-rw-r--r-- | Zotlabs/Module/Settings/Features.php | 35 | ||||
-rw-r--r-- | Zotlabs/Widget/Settings_menu.php | 8 | ||||
-rw-r--r-- | include/conversation.php | 1 | ||||
-rw-r--r-- | include/features.php | 67 | ||||
-rw-r--r-- | view/js/main.js | 29 | ||||
-rwxr-xr-x | view/tpl/conv_frame.tpl | 15 | ||||
-rwxr-xr-x | view/tpl/conv_item.tpl | 6 | ||||
-rwxr-xr-x | view/tpl/jot.tpl | 8 | ||||
-rwxr-xr-x | view/tpl/settings_features.tpl | 21 | ||||
-rwxr-xr-x | view/tpl/settings_module.tpl | 21 | ||||
-rw-r--r-- | view/tpl/settings_module_ajax.tpl | 11 |
13 files changed, 169 insertions, 120 deletions
diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php index f8a7366f8..ac24806a6 100644 --- a/Zotlabs/Lib/ThreadItem.php +++ b/Zotlabs/Lib/ThreadItem.php @@ -259,7 +259,7 @@ class ThreadItem { $forged = ((($item['sig']) && (! intval($item['item_verified']))) ? t('Message signature incorrect') : ''); $unverified = '' ; // (($this->is_wall_to_wall() && (! intval($item['item_verified']))) ? t('Message cannot be verified') : ''); - + $settings = ''; // FIXME - check this permission if($conv->get_profile_owner() == local_channel()) { @@ -267,6 +267,8 @@ class ThreadItem { 'tagit' => t("Add Tag"), 'classtagger' => "", ); + + $settings = t('Conversation Tools'); } $has_bookmarks = false; @@ -436,7 +438,8 @@ class ThreadItem { 'preview_lbl' => t('This is an unsaved preview'), 'wait' => t('Please wait'), 'submid' => str_replace(['+','='], ['',''], base64_encode($item['mid'])), - 'thread_level' => $thread_level + 'thread_level' => $thread_level, + 'settings' => $settings ); $arr = array('item' => $item, 'output' => $tmp_item); diff --git a/Zotlabs/Module/Settings/Conversation.php b/Zotlabs/Module/Settings/Conversation.php new file mode 100644 index 000000000..43e59a3c2 --- /dev/null +++ b/Zotlabs/Module/Settings/Conversation.php @@ -0,0 +1,60 @@ +<?php + +namespace Zotlabs\Module\Settings; + + +class Conversation { + + function post() { + + $module = substr(strrchr(strtolower(static::class), '\\'), 1); + + check_form_security_token_redirectOnErr('/settings/' . $module, 'settings_' . $module); + + $features = get_module_features($module); + + process_module_features_post(local_channel(), $features, $_POST); + + build_sync_packet(); + + if($_POST['aj']) { + if($_POST['auto_update'] == 1) + info(t('Settings saved.') . EOL); + else + info(t('Settings saved. Reload page please.') . EOL); + + killme(); + } + else { + return; + } + } + + function get() { + + $aj = ((isset($_GET['aj'])) ? true : false); + + $module = substr(strrchr(strtolower(static::class), '\\'), 1); + + $features = get_module_features($module); + + $tpl = (($aj) ? get_markup_template("settings_module_ajax.tpl") : get_markup_template("settings_module.tpl")); + + $o .= replace_macros($tpl, array( + '$action_url' => 'settings/' . $module, + '$form_security_token' => get_form_security_token('settings_' . $module), + '$title' => t('Conversation Settings'), + '$features' => process_module_features_get(local_channel(), $features), + '$submit' => t('Submit') + )); + + if($aj) { + echo $o; + killme(); + } + else { + return $o; + } + } + +} diff --git a/Zotlabs/Module/Settings/Features.php b/Zotlabs/Module/Settings/Features.php index 888032c28..6a3ab104b 100644 --- a/Zotlabs/Module/Settings/Features.php +++ b/Zotlabs/Module/Settings/Features.php @@ -26,44 +26,14 @@ class Features { function get() { $arr = []; - $harr = []; - if(intval($_REQUEST['techlevel'])) - $level = intval($_REQUEST['techlevel']); - else { - $level = get_account_techlevel(); - } - - if(! intval($level)) { - notice( t('Permission denied.') . EOL); - return; - } - - $techlevels = \Zotlabs\Lib\Techlevels::levels(); - - // This page isn't accessible at techlevel 0 - - unset($techlevels[0]); - - $def_techlevel = (($level > 0) ? $level : 1); - $techlock = get_config('system','techlevel_lock'); - - $all_features_raw = get_features(false); - - foreach($all_features_raw as $fname => $fdata) { - foreach(array_slice($fdata,1) as $f) { - $harr[$f[0]] = ((intval(feature_enabled(local_channel(),$f[0]))) ? "1" : ''); - } - } - - $features = get_features(true,$level); + $features = get_features(false); foreach($features as $fname => $fdata) { $arr[$fname] = array(); $arr[$fname][0] = $fdata[0]; foreach(array_slice($fdata,1) as $f) { $arr[$fname][1][] = array('feature_' . $f[0],$f[1],((intval(feature_enabled(local_channel(),$f[0]))) ? "1" : ''),$f[2],array(t('Off'),t('On'))); - unset($harr[$f[0]]); } } @@ -71,10 +41,7 @@ class Features { $o .= replace_macros($tpl, array( '$form_security_token' => get_form_security_token("settings_features"), '$title' => t('Additional Features'), - '$techlevel' => [ 'techlevel', t('Your technical skill level'), $def_techlevel, t('Used to provide a member experience and additional features consistent with your comfort level'), $techlevels ], - '$techlock' => $techlock, '$features' => $arr, - '$hiddens' => $harr, '$baseurl' => z_root(), '$submit' => t('Submit'), )); diff --git a/Zotlabs/Widget/Settings_menu.php b/Zotlabs/Widget/Settings_menu.php index ecf93ec78..92f615452 100644 --- a/Zotlabs/Widget/Settings_menu.php +++ b/Zotlabs/Widget/Settings_menu.php @@ -45,14 +45,6 @@ class Settings_menu { ); - if(get_account_techlevel() > 0 && get_features()) { - $tabs[] = array( - 'label' => t('Additional features'), - 'url' => z_root().'/settings/features', - 'selected' => ((argv(1) === 'features') ? 'active' : ''), - ); - } - $tabs[] = array( 'label' => t('Addon settings'), 'url' => z_root().'/settings/featured', diff --git a/include/conversation.php b/include/conversation.php index 28a339479..dc3f45e45 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -888,6 +888,7 @@ function conversation($items, $mode, $update, $page_mode = 'traditional', $prepa '$user' => App::$user, '$threads' => $threads, '$wait' => t('Loading...'), + '$conversation_tools' => t('Conversation Tools'), '$dropping' => ($page_dropping?t('Delete Selected Items'):False), )); diff --git a/include/features.php b/include/features.php index 8dcf4517d..5584ba3e4 100644 --- a/include/features.php +++ b/include/features.php @@ -71,10 +71,36 @@ function get_features($filtered = true, $level = (-1)) { $arr = [ - // Item tools - 'tools' => [ + 'calendar' => [ + + t('CalDAV'), + + [ + 'cal_first_day', + t('Start calendar week on Monday'), + t('Default is Sunday'), + false, + get_config('feature_lock','cal_first_day') + ] + + ], + + 'connections' => [ + + t('Connections'), + + [ + 'connfilter', + t('Connection Filtering'), + t('Filter incoming posts from connections based on keywords/content'), + false, + get_config('feature_lock','connfilter') + ] + ], + + 'conversation' => [ - t('Post/Comment Tools'), + t('Conversation'), [ 'commtag', @@ -82,7 +108,6 @@ function get_features($filtered = true, $level = (-1)) { t('Ability to tag existing posts'), false, get_config('feature_lock','commtag'), - feature_level('commtag',1), ], [ @@ -91,7 +116,6 @@ function get_features($filtered = true, $level = (-1)) { t('Add emoji reaction ability to posts'), true, get_config('feature_lock','emojis'), - feature_level('emojis',1), ], [ @@ -100,7 +124,6 @@ function get_features($filtered = true, $level = (-1)) { t('Ability to file posts under folders'), false, get_config('feature_lock','filing'), - feature_level('filing',2), ], [ @@ -109,7 +132,6 @@ function get_features($filtered = true, $level = (-1)) { t('Ability to dislike posts/comments'), false, get_config('feature_lock','dislike'), - feature_level('dislike',1), ], [ @@ -118,7 +140,6 @@ function get_features($filtered = true, $level = (-1)) { t('Ability to mark special posts with a star indicator'), false, get_config('feature_lock','star_posts'), - feature_level('star_posts',1), ], [ @@ -127,40 +148,10 @@ function get_features($filtered = true, $level = (-1)) { t('Provide a personal tag cloud on your channel page'), false, get_config('feature_lock','tagadelic'), - feature_level('tagadelic',2), - ], - ], - -############################################ -############################################ - - 'calendar' => [ - - t('CalDAV'), - - [ - 'cal_first_day', - t('Start calendar week on Monday'), - t('Default is Sunday'), - false, - get_config('feature_lock','cal_first_day') ] ], - 'connections' => [ - - t('Connections'), - - [ - 'connfilter', - t('Connection Filtering'), - t('Filter incoming posts from connections based on keywords/content'), - false, - get_config('feature_lock','connfilter') - ] - ], - 'directory' => [ t('Directory'), diff --git a/view/js/main.js b/view/js/main.js index 17f94dd16..48277f5cc 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -41,6 +41,8 @@ $.ajaxSetup({cache: false}); $(document).ready(function() { $(document).on('click focus', '.comment-edit-form', handle_comment_form); + $(document).on('click', '.conversation-settings-link', getConversationSettings); + $(document).on('click', '#settings_module_ajax_submit', postConversationSettings); jQuery.timeago.settings.strings = { prefixAgo : aStr['t01'], @@ -122,6 +124,33 @@ $(document).ready(function() { }); +function getConversationSettings() { + $.get('settings/conversation/?f=&aj=1',function(data) { + $('#conversation_settings_body').html(data); + }); + + + +} + +function postConversationSettings() { + $.post( + 'settings/conversation', + $('#settings_module_ajax_form').serialize() + "&auto_update=" + next_page + ); + + if(next_page === 1) { + page_load = true; + } + + $('#conversation_settings').modal('hide'); + + if(timer) clearTimeout(timer); + timer = setTimeout(updateInit,100); + + return false; +} + function datasrc2src(selector) { $(selector).each(function(i, el) { $(el).attr("src", $(el).data("src")); diff --git a/view/tpl/conv_frame.tpl b/view/tpl/conv_frame.tpl index 8aa865076..c6b3b0d9b 100755 --- a/view/tpl/conv_frame.tpl +++ b/view/tpl/conv_frame.tpl @@ -4,5 +4,16 @@ <div id="page-spinner" class="spinner-wrapper"> <div class="spinner m"></div> </div> - - +<div class="modal" id="conversation_settings" tabindex="-1" role="dialog" aria-labelledby="conversation_settings_label" aria-hidden="true"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <h3 class="modal-title" id="conversation_settings_label">{{$conversation_tools}}</h3> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + </div> + <div class="modal-body" id="conversation_settings_body"> + {{$wait}} + </div> + </div><!-- /.modal-content --> + </div><!-- /.modal-dialog --> +</div><!-- /.modal --> diff --git a/view/tpl/conv_item.tpl b/view/tpl/conv_item.tpl index 05c3d7ae0..5720a2a5f 100755 --- a/view/tpl/conv_item.tpl +++ b/view/tpl/conv_item.tpl @@ -183,6 +183,10 @@ <div class="dropdown-divider"></div> <a class="dropdown-item" href="dreport/{{$item.mid}}">{{$item.dreport}}</a> {{/if}} + {{if $item.settings}} + <div class="dropdown-divider"></div> + <a class="dropdown-item conversation-settings-link" href="" data-toggle="modal" data-target="#conversation_settings">{{$item.settings}}</a> + {{/if}} </div> </div> </div> @@ -210,7 +214,7 @@ <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> - <h4 class="modal-title">{{$response.count}} {{$response.button}}</h4> + <h3 class="modal-title">{{$response.count}} {{$response.button}}</h3> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> </div> <div class="modal-body response-list"> diff --git a/view/tpl/jot.tpl b/view/tpl/jot.tpl index 2137baf9b..cb80c6c7e 100755 --- a/view/tpl/jot.tpl +++ b/view/tpl/jot.tpl @@ -212,7 +212,7 @@ <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> - <h4 class="modal-title" id="expiryModalLabel">{{$jotnets_label}}</h4> + <h3 class="modal-title" id="expiryModalLabel">{{$jotnets_label}}</h3> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> </div> <div class="modal-body"> @@ -239,7 +239,7 @@ <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> - <h4 class="modal-title" id="expiryModalLabel">{{$expires}}</h4> + <h3 class="modal-title" id="expiryModalLabel">{{$expires}}</h3> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> </div> <div class="modal-body form-group" style="width:90%"> @@ -266,7 +266,7 @@ <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> - <h4 class="modal-title" id="createdModalLabel">{{$future_txt}}</h4> + <h3 class="modal-title" id="createdModalLabel">{{$future_txt}}</h3> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> </div> <div class="modal-body form-group" style="width:90%"> @@ -293,7 +293,7 @@ <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> - <h4 class="modal-title" id="embedPhotoModalLabel">{{$embedPhotosModalTitle}}</h4> + <h3 class="modal-title" id="embedPhotoModalLabel">{{$embedPhotosModalTitle}}</h3> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> </div> <div class="modal-body" id="embedPhotoModalBody" > diff --git a/view/tpl/settings_features.tpl b/view/tpl/settings_features.tpl index 998199c8e..12c4f44f3 100755 --- a/view/tpl/settings_features.tpl +++ b/view/tpl/settings_features.tpl @@ -1,31 +1,10 @@ -<script> - $(document).ready(function() { - $('#id_techlevel').change(function() { - var techlvl = $('#id_techlevel').val(); - window.location.href='{{$baseurl}}/settings/features?f=&techlevel=' + techlvl; - }); - }); -</script> - <div class="generic-content-wrapper"> <div class="section-title-wrapper"> <h2>{{$title}}</h2> </div> <form action="settings/features" method="post" autocomplete="off"> <input type='hidden' name='form_security_token' value='{{$form_security_token}}'> - {{if ! $techlock}} - <div class="section-content-tools-wrapper"> - {{include file="field_select.tpl" field=$techlevel}} - </div> - {{else}} - <input type="hidden" name="techlevel" value="{{$techlevel.2}}" /> - {{/if}} - {{if $hiddens}} - {{foreach $hiddens as $k => $v}} - <input type="hidden" name="feature_{{$k}}" value="{{$v}}" /> - {{/foreach}} - {{/if}} <div class="panel-group" id="settings" role="tablist" aria-multiselectable="true"> {{foreach $features as $g => $f}} <div class="panel"> diff --git a/view/tpl/settings_module.tpl b/view/tpl/settings_module.tpl index cabefc3e5..a701ec364 100755 --- a/view/tpl/settings_module.tpl +++ b/view/tpl/settings_module.tpl @@ -4,15 +4,16 @@ </div> <div class="section-content-wrapper"> <form action="{{$action_url}}" method="post" autocomplete="off"> - <input type='hidden' name='form_security_token' value='{{$form_security_token}}'> - {{if $rpath}} - <input type='hidden' name='rpath' value='{{$rpath}}'> - {{/if}} - {{foreach $features as $feature}} - {{include file="field_checkbox.tpl" field=$feature}} - {{/foreach}} - <div class="settings-submit-wrapper" > - <button type="submit" name="submit" class="btn btn-primary">{{$submit}}</button> - </div> + <input type='hidden' name='form_security_token' value='{{$form_security_token}}'> + {{if $rpath}} + <input type='hidden' name='rpath' value='{{$rpath}}'> + {{/if}} + {{foreach $features as $feature}} + {{include file="field_checkbox.tpl" field=$feature}} + {{/foreach}} + <div class="settings-submit-wrapper" > + <button type="submit" name="submit" class="btn btn-primary">{{$submit}}</button> + </div> + </form> </div> </div> diff --git a/view/tpl/settings_module_ajax.tpl b/view/tpl/settings_module_ajax.tpl new file mode 100644 index 000000000..bd7b6f3df --- /dev/null +++ b/view/tpl/settings_module_ajax.tpl @@ -0,0 +1,11 @@ +<form id="settings_module_ajax_form" action="{{$action_url}}" method="post" autocomplete="off"> + <input type='hidden' name='form_security_token' value='{{$form_security_token}}'> + <input type='hidden' name='aj' value='1'> + {{foreach $features as $feature}} + {{include file="field_checkbox.tpl" field=$feature}} + {{/foreach}} + <div class="settings-submit-wrapper" > + <button id="settings_module_ajax_submit" type="submit" name="submit" class="btn btn-primary">{{$submit}}</button> + </div> +</form> + |