diff options
-rw-r--r-- | Zotlabs/Lib/Apps.php | 6 | ||||
-rw-r--r-- | Zotlabs/Module/Settings/Connections.php | 2 | ||||
-rw-r--r-- | Zotlabs/Module/Settings/Editor.php | 120 | ||||
-rw-r--r-- | Zotlabs/Module/Settings/Network.php | 2 | ||||
-rw-r--r-- | include/features.php | 2 | ||||
-rw-r--r-- | view/css/conversation.css | 3 | ||||
-rw-r--r-- | view/theme/redbasic/css/style.css | 6 | ||||
-rw-r--r-- | view/theme/redbasic/js/redbasic.js | 5 | ||||
-rw-r--r-- | view/tpl/admin_account_edit.tpl | 2 | ||||
-rwxr-xr-x | view/tpl/admin_accounts.tpl | 17 | ||||
-rwxr-xr-x | view/tpl/admin_channels.tpl | 6 | ||||
-rwxr-xr-x | view/tpl/admin_logs.tpl | 6 | ||||
-rw-r--r-- | view/tpl/admin_profiles.tpl | 2 | ||||
-rwxr-xr-x | view/tpl/admin_security.tpl | 4 | ||||
-rwxr-xr-x | view/tpl/admin_site.tpl | 16 | ||||
-rw-r--r-- | view/tpl/app.tpl | 2 | ||||
-rwxr-xr-x | view/tpl/jot-header.tpl | 4 | ||||
-rwxr-xr-x | view/tpl/jot.tpl | 13 | ||||
-rwxr-xr-x | view/tpl/navbar_default.tpl | 4 | ||||
-rwxr-xr-x | view/tpl/settings_module.tpl | 3 |
20 files changed, 193 insertions, 32 deletions
diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php index 905a20ee0..010947467 100644 --- a/Zotlabs/Lib/Apps.php +++ b/Zotlabs/Lib/Apps.php @@ -388,9 +388,10 @@ class Apps { // This will catch somebody clicking on a system "available" app that hasn't had the path macros replaced // and they are allowed to see the app - if(strpos($papp['url'],'$baseurl') || strpos($papp['url'],'$nick') || strpos($papp['photo'],'$baseurl') || strpos($papp['photo'],'$nick')) { + if(strpos($papp['url'],'$baseurl') !== false || strpos($papp['url'],'$nick') !== false || strpos($papp['photo'],'$baseurl') !== false || strpos($papp['photo'],'$nick') !== false) { $view_channel = local_channel(); if(! $view_channel) { + $sys = get_sys_channel(); $view_channel = $sys['channel_id']; } @@ -523,7 +524,8 @@ class Apps { '$add' => t('Add to app-tray'), '$remove' => t('Remove from app-tray'), '$add_nav' => t('Pin to navbar'), - '$remove_nav' => t('Unpin from navbar') + '$remove_nav' => t('Unpin from navbar'), + '$rpath' => z_root() . '/apps' )); } diff --git a/Zotlabs/Module/Settings/Connections.php b/Zotlabs/Module/Settings/Connections.php index 361d86ccb..425409502 100644 --- a/Zotlabs/Module/Settings/Connections.php +++ b/Zotlabs/Module/Settings/Connections.php @@ -19,10 +19,12 @@ class Connections { function get() { $features = self::get_features(); + $rpath = (($_GET['rpath']) ? $_GET['rpath'] : ''); $tpl = get_markup_template("settings_module.tpl"); $o .= replace_macros($tpl, array( + '$rpath' => $rpath, '$action_url' => 'settings/connections', '$form_security_token' => get_form_security_token("settings_connections"), '$title' => t('Connections Settings'), diff --git a/Zotlabs/Module/Settings/Editor.php b/Zotlabs/Module/Settings/Editor.php new file mode 100644 index 000000000..a87f31fe7 --- /dev/null +++ b/Zotlabs/Module/Settings/Editor.php @@ -0,0 +1,120 @@ +<?php + +namespace Zotlabs\Module\Settings; + + +class Editor { + + function post() { + check_form_security_token_redirectOnErr('/settings/editor', 'settings_editor'); + + $features = self::get_features(); + + process_features_post(local_channel(), $features, $_POST); + + build_sync_packet(); + return; + } + + function get() { + + $features = self::get_features(); + $rpath = (($_GET['rpath']) ? $_GET['rpath'] : ''); + + $tpl = get_markup_template("settings_module.tpl"); + + $o .= replace_macros($tpl, array( + '$rpath' => $rpath, + '$action_url' => 'settings/editor', + '$form_security_token' => get_form_security_token("settings_editor"), + '$title' => t('Editor Settings'), + '$features' => process_features_get(local_channel(), $features), + '$submit' => t('Submit') + )); + + return $o; + } + + function get_features() { + $arr = [ + + [ + 'large_photos', + t('Large Photos'), + t('Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails'), + false, + get_config('feature_lock','large_photos'), + ], + + [ + //TODO: This should be its own app + 'channel_sources', + t('Channel Sources'), + t('Automatically import channel content from other channels or feeds'), + false, + get_config('feature_lock','channel_sources'), + ], + + [ + 'content_encrypt', + t('Even More Encryption'), + t('Allow optional encryption of content end-to-end with a shared secret key'), + false, + get_config('feature_lock','content_encrypt'), + ], + + [ + 'consensus_tools', + t('Enable Voting Tools'), + t('Provide a class of post which others can vote on'), + false, + get_config('feature_lock','consensus_tools'), + ], + + [ + 'disable_comments', + t('Disable Comments'), + t('Provide the option to disable comments for a post'), + false, + get_config('feature_lock','disable_comments'), + ], + + [ + 'delayed_posting', + t('Delayed Posting'), + t('Allow posts to be published at a later date'), + false, + get_config('feature_lock','delayed_posting'), + ], + + [ + 'content_expire', + t('Content Expiration'), + t('Remove posts/comments and/or private messages at a future time'), + false, + get_config('feature_lock','content_expire'), + ], + + [ + 'suppress_duplicates', + t('Suppress Duplicate Posts/Comments'), + t('Prevent posts with identical content to be published with less than two minutes in between submissions.'), + true, + get_config('feature_lock','suppress_duplicates'), + ], + + [ + 'auto_save_draft', + t('Auto-save drafts of posts and comments'), + t('Automatically saves post and comment drafts in local browser storage to help prevent accidental loss of compositions'), + true, + get_config('feature_lock','auto_save_draft'), + ] + + ]; + + return $arr; + + } + +} diff --git a/Zotlabs/Module/Settings/Network.php b/Zotlabs/Module/Settings/Network.php index 1e39121c8..a2e606565 100644 --- a/Zotlabs/Module/Settings/Network.php +++ b/Zotlabs/Module/Settings/Network.php @@ -19,10 +19,12 @@ class Network { function get() { $features = self::get_features(); + $rpath = (($_GET['rpath']) ? $_GET['rpath'] : ''); $tpl = get_markup_template("settings_module.tpl"); $o .= replace_macros($tpl, array( + '$rpath' => $rpath, '$action_url' => 'settings/network', '$form_security_token' => get_form_security_token("settings_network"), '$title' => t('Activity Settings'), diff --git a/include/features.php b/include/features.php index c3ef54945..460d2cb38 100644 --- a/include/features.php +++ b/include/features.php @@ -59,6 +59,8 @@ function process_features_post($uid, $features, $post_arr) { else set_pconfig($uid,'feature', $k, ''); } + if($post_arr['rpath']) + goaway($post_arr['rpath']); } function get_features($filtered = true, $level = (-1)) { diff --git a/view/css/conversation.css b/view/css/conversation.css index e6324b30d..f7804f5dd 100644 --- a/view/css/conversation.css +++ b/view/css/conversation.css @@ -31,10 +31,11 @@ position: relative; } -#profile-jot-reset { +#profile-jot-tools { position: absolute; top: 0px; right: 0px; + opacity: 0.7; } #profile-jot-text { diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index 0a879cb71..a9ea29ba1 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -1514,11 +1514,15 @@ blockquote { left: 0px; } - #nav-app-link-wrapper { + #nav-app-link-wrapper.has_location { min-width: 0; flex-basis: 25%; } + #nav-app-link-wrapper { + margin-right: 0.5rem; + } + #navbar-collapse-2 .navbar-app i { font-size: 1rem; margin-right: 0.5rem; diff --git a/view/theme/redbasic/js/redbasic.js b/view/theme/redbasic/js/redbasic.js index 70d196a02..688e92148 100644 --- a/view/theme/redbasic/js/redbasic.js +++ b/view/theme/redbasic/js/redbasic.js @@ -20,7 +20,8 @@ $(document).ready(function() { if($(window).width() >= 992) { $('#left_aside_wrapper, #right_aside_wrapper').stick_in_parent({ offset_top: parseInt($('aside').css('padding-top')), - parent: 'main' + parent: 'main', + spacer: '.aside_spacer' }); } @@ -42,7 +43,7 @@ $(document).ready(function() { }); - var right_aside_height = $('#rightt_aside_wrapper').height(); + var right_aside_height = $('#right_aside_wrapper').height(); $('#right_aside_wrapper').on('click', function() { if(right_aside_height != $('#right_aside_wrapper').height()) { diff --git a/view/tpl/admin_account_edit.tpl b/view/tpl/admin_account_edit.tpl index 239d9084a..3329c0025 100644 --- a/view/tpl/admin_account_edit.tpl +++ b/view/tpl/admin_account_edit.tpl @@ -13,6 +13,6 @@ {{include file="field_input.tpl" field=$service_class}} -<input type="submit" name="submit" value="{{$submit}}" /> +<input type="submit" name="submit" class="btn btn-primary" value="{{$submit}}" /> </form> diff --git a/view/tpl/admin_accounts.tpl b/view/tpl/admin_accounts.tpl index d6c9591fd..2dd56c8dc 100755 --- a/view/tpl/admin_accounts.tpl +++ b/view/tpl/admin_accounts.tpl @@ -33,15 +33,18 @@ <td class="email">{{$u.account_email}}</td> <td class="checkbox_bulkedit"><input type="checkbox" class="pending_ckbx" id="id_pending_{{$u.hash}}" name="pending[]" value="{{$u.hash}}"></td> <td class="tools"> - <a href="{{$baseurl}}/regmod/allow/{{$u.hash}}" class="btn btn-outline-secondary btn-sm" title="{{$approve}}"><i class="fa fa-thumbs-o-up admin-icons"></i></a> - <a href="{{$baseurl}}/regmod/deny/{{$u.hash}}" class="btn btn-outline-secondary btn-sm" title="{{$deny}}"><i class="fa fa-thumbs-o-down admin-icons"></i></a> + <a href="{{$baseurl}}/regmod/allow/{{$u.hash}}" class="btn btn-default btn-xs" title="{{$approve}}"><i class="fa fa-thumbs-o-up admin-icons"></i></a> + <a href="{{$baseurl}}/regmod/deny/{{$u.hash}}" class="btn btn-default btn-xs" title="{{$deny}}"><i class="fa fa-thumbs-o-down admin-icons"></i></a> </td> </tr> {{/foreach}} </tbody> </table> <div class="selectall"><a href="#" onclick="return toggle_selectall('pending_ckbx');">{{$select_all}}</a></div> - <div class="submit"><input type="submit" name="page_accounts_deny" value="{{$deny}}"> <input type="submit" name="page_accounts_approve" value="{{$approve}}"></div> + <div class="submit"> + <input type="submit" name="page_accounts_deny" class="btn btn-primary" value="{{$deny}}" /> + <input type="submit" name="page_accounts_approve" class="btn btn-primary" value="{{$approve}}" /> + </div> {{else}} <p>{{$no_pending}}</p> {{/if}} @@ -73,14 +76,18 @@ <td class="service_class">{{$u.account_service_class}}</td> <td class="checkbox_bulkedit"><input type="checkbox" class="users_ckbx" id="id_user_{{$u.account_id}}" name="user[]" value="{{$u.account_id}}"><input type="hidden" name="blocked[]" value="{{$u.blocked}}"></td> <td class="tools"> - <a href="{{$baseurl}}/admin/accounts/{{if ($u.blocked)}}un{{/if}}block/{{$u.account_id}}?t={{$form_security_token}}" class="btn btn-outline-secondary btn-sm" title='{{if ($u.blocked)}}{{$unblock}}{{else}}{{$block}}{{/if}}'><i class="fa fa-ban admin-icons{{if ($u.blocked)}} dim{{/if}}"></i></a><a href="{{$baseurl}}/admin/accounts/delete/{{$u.account_id}}?t={{$form_security_token}}" class="btn btn-outline-secondary btn-sm" title='{{$delete}}' onclick="return confirm_delete('{{$u.name}}')"><i class="fa fa-trash-o admin-icons"></i></a> + <a href="{{$baseurl}}/admin/accounts/{{if ($u.blocked)}}un{{/if}}block/{{$u.account_id}}?t={{$form_security_token}}" class="btn btn-default btn-xs" title='{{if ($u.blocked)}}{{$unblock}}{{else}}{{$block}}{{/if}}'><i class="fa fa-ban admin-icons{{if ($u.blocked)}} dim{{/if}}"></i></a> + <a href="{{$baseurl}}/admin/accounts/delete/{{$u.account_id}}?t={{$form_security_token}}" class="btn btn-default btn-xs" title='{{$delete}}' onclick="return confirm_delete('{{$u.name}}')"><i class="fa fa-trash-o admin-icons"></i></a> </td> </tr> {{/foreach}} </tbody> </table> <div class="selectall"><a href="#" onclick="return toggle_selectall('users_ckbx');">{{$select_all}}</a></div> - <div class="submit"><input type="submit" name="page_accounts_block" value="{{$block}}/{{$unblock}}"> <input type="submit" name="page_accounts_delete" value="{{$delete}}" onclick="return confirm_delete_multi()"></div> + <div class="submit"> + <input type="submit" name="page_accounts_block" class="btn btn-primary" value="{{$block}}/{{$unblock}}" /> + <input type="submit" name="page_accounts_delete" class="btn btn-primary" onclick="return confirm_delete_multi()" value="{{$delete}}" /> + </div> {{else}} NO USERS?!? {{/if}} diff --git a/view/tpl/admin_channels.tpl b/view/tpl/admin_channels.tpl index 452e0eeec..f8584c84a 100755 --- a/view/tpl/admin_channels.tpl +++ b/view/tpl/admin_channels.tpl @@ -43,7 +43,11 @@ </tbody> </table> <div class='selectall'><a href='#' onclick="return selectall('channels_ckbx');">{{$select_all}}</a></div> - <div class="submit"><input type="submit" name="page_channels_block" value="{{$block}}/{{$unblock}}" /> <input type="submit" name="page_channels_code" value="{{$code}}/{{$uncode}}" /> <input type="submit" name="page_channels_delete" value="{{$delete}}" onclick="return confirm_delete_multi()" /></div> + <div class="submit"> + <input type="submit" name="page_channels_block" class="btn btn-primary" value="{{$block}}/{{$unblock}}" /> + <input type="submit" name="page_channels_code" class="btn btn-primary" value="{{$code}}/{{$uncode}}" /> + <input type="submit" name="page_channels_delete" class="btn btn-primary" onclick="return confirm_delete_multi()" value="{{$delete}}" /> + </div> {{else}} NO CHANNELS?!? {{/if}} diff --git a/view/tpl/admin_logs.tpl b/view/tpl/admin_logs.tpl index 6d2d7834c..5643bb42f 100755 --- a/view/tpl/admin_logs.tpl +++ b/view/tpl/admin_logs.tpl @@ -2,13 +2,15 @@ <h1>{{$title}} - {{$page}}</h1> <form action="{{$baseurl}}/admin/logs" method="post"> - <input type='hidden' name='form_security_token' value='{{$form_security_token}}'> + <input type='hidden' name='form_security_token' value='{{$form_security_token}}' /> {{include file="field_checkbox.tpl" field=$debugging}} {{include file="field_input.tpl" field=$logfile}} {{include file="field_select.tpl" field=$loglevel}} - <div class="submit"><input type="submit" name="page_logs" value="{{$submit}}" /></div> + <div class="submit"> + <input type="submit" name="page_logs" class="btn btn-primary" value="{{$submit}}" /> + </div> </form> diff --git a/view/tpl/admin_profiles.tpl b/view/tpl/admin_profiles.tpl index e3a08449c..b3bb687c0 100644 --- a/view/tpl/admin_profiles.tpl +++ b/view/tpl/admin_profiles.tpl @@ -15,7 +15,7 @@ {{include file="field_textarea.tpl" field=$basic}} {{include file="field_textarea.tpl" field=$advanced}} -<input type="submit" name="submit" value="{{$submit}}" /> +<input type="submit" name="submit" class="btn btn-primary" value="{{$submit}}" /> </form> diff --git a/view/tpl/admin_security.tpl b/view/tpl/admin_security.tpl index 493707a7a..9a99c7456 100755 --- a/view/tpl/admin_security.tpl +++ b/view/tpl/admin_security.tpl @@ -26,8 +26,8 @@ {{include file="field_textarea.tpl" field=$embed_deny}} - <div class="admin-submit-wrapper" > - <input type="submit" name="submit" class="admin-submit" value="{{$submit}}" /> + <div class="admin-submit-wrapper"> + <input type="submit" name="submit" class="btn btn-primary" value="{{$submit}}" /> </div> </form> diff --git a/view/tpl/admin_site.tpl b/view/tpl/admin_site.tpl index 3288c2988..c3f8177c2 100755 --- a/view/tpl/admin_site.tpl +++ b/view/tpl/admin_site.tpl @@ -64,7 +64,9 @@ {{include file="field_select.tpl" field=$directory_server}} {{/if}} - <div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div> + <div class="submit"> + <input type="submit" name="page_site" class="btn btn-primary" value="{{$submit}}" /> + </div> <h3>{{$registration}}</h3> {{include file="field_input.tpl" field=$register_text}} @@ -77,7 +79,9 @@ {{include file="field_input.tpl" field=$sellpage}} {{include file="field_input.tpl" field=$first_page}} - <div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div> + <div class="submit"> + <input type="submit" name="page_site" class="btn btn-primary" value="{{$submit}}" /> + </div> <h3>{{$corporate}}</h3> {{include file="field_checkbox.tpl" field=$verify_email}} @@ -89,7 +93,9 @@ {{include file="field_textarea.tpl" field=$incl}} {{include file="field_textarea.tpl" field=$excl}} - <div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div> + <div class="submit"> + <input type="submit" name="page_site" class="btn btn-primary" value="{{$submit}}" /></div> + </div> <h3>{{$advanced}}</h3> {{include file="field_input.tpl" field=$imagick_path}} @@ -106,7 +112,9 @@ {{include file="field_input.tpl" field=$default_expire_days}} {{include file="field_input.tpl" field=$active_expire_days}} - <div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div> + <div class="submit"> + <input type="submit" name="page_site" class="btn btn-primary" value="{{$submit}}" /> + </div> </form> </div> diff --git a/view/tpl/app.tpl b/view/tpl/app.tpl index 042f48704..6013f9548 100644 --- a/view/tpl/app.tpl +++ b/view/tpl/app.tpl @@ -20,7 +20,7 @@ {{if $delete}}<button type="submit" name="delete" value="{{if $deleted}}{{$undelete}}{{else}}{{$delete}}{{/if}}" class="btn btn-outline-secondary btn-sm" title="{{if $deleted}}{{$undelete}}{{else}}{{$delete}}{{/if}}" ><i class="fa fa-fw fa-trash-o drop-icons"></i></button>{{/if}} {{if $feature}}<button type="submit" name="feature" value="nav_featured_app" class="btn btn-outline-secondary btn-sm" title="{{if $featured}}{{$remove}}{{else}}{{$add}}{{/if}}"><i class="fa fa-fw fa-star{{if $featured}} text-warning{{/if}}"></i></button>{{/if}} {{if $pin}}<button type="submit" name="pin" value="nav_pinned_app" class="btn btn-outline-secondary btn-sm" title="{{if $pinned}}{{$remove_nav}}{{else}}{{$add_nav}}{{/if}}"><i class="fa fa-fw fa-thumb-tack{{if $pinned}} text-success{{/if}}"></i></button>{{/if}} - {{if $settings_url}}<a href="{{$settings_url}}" class="btn btn-outline-secondary btn-sm"><i class="fa fa-fw fa-cog"></i></a>{{/if}} + {{if $settings_url}}<a href="{{$settings_url}}/?f=&rpath={{$rpath}}" class="btn btn-outline-secondary btn-sm"><i class="fa fa-fw fa-cog"></i></a>{{/if}} </form> </div> {{/if}} diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl index dd64c3454..be09fbebf 100755 --- a/view/tpl/jot-header.tpl +++ b/view/tpl/jot-header.tpl @@ -7,7 +7,7 @@ var pretext = '{{$pretext}}'; function initEditor(cb){ if(editor == false){ $("#profile-jot-text-loading").show(); - $("#profile-jot-reset").removeClass('d-none'); + $("#profile-jot-tools").removeClass('d-none'); {{$geotag}} if(plaintext == 'none') { $("#profile-jot-text-loading").hide(); @@ -308,7 +308,7 @@ var activeCommentText = ''; {{if $reset}} $(".jothidden").hide(); $("#profile-jot-text").removeClass('jot-expanded'); - $("#profile-jot-reset").addClass('d-none'); + $("#profile-jot-tools").addClass('d-none'); $("#jot-preview-content").html('').hide(); editor = false; {{else}} diff --git a/view/tpl/jot.tpl b/view/tpl/jot.tpl index 0d1b4bd0d..2137baf9b 100755 --- a/view/tpl/jot.tpl +++ b/view/tpl/jot.tpl @@ -42,11 +42,14 @@ </div> {{/if}} <div id="jot-text-wrap"> - {{if $reset}} - <button id="profile-jot-reset" class="btn btn-outline-secondary btn-sm d-none border-0" title="{{$reset}}" onclick="itemCancel(); return false;"> - <i class="fa fa-close"></i> - </button> - {{/if}} + <div id="profile-jot-tools" class="btn-group d-none"> + <a id="profile-jot-settings" class="btn btn-outline-secondary btn-sm border-0" href="/settings/editor/?f=&rpath=/{{$return_path}}"><i class="fa fa-cog"></i></a> + {{if $reset}} + <button id="profile-jot-reset" class="btn btn-outline-secondary btn-sm border-0" title="{{$reset}}" onclick="itemCancel(); return false;"> + <i class="fa fa-close"></i> + </button> + {{/if}} + </div> <textarea class="profile-jot-text" id="profile-jot-text" name="body" tabindex="2" placeholder="{{$placeholdtext}}" >{{$content}}</textarea> </div> {{if $attachment}} diff --git a/view/tpl/navbar_default.tpl b/view/tpl/navbar_default.tpl index a11b9b5ea..0c8be512d 100755 --- a/view/tpl/navbar_default.tpl +++ b/view/tpl/navbar_default.tpl @@ -63,7 +63,7 @@ {{/if}} </div> {{if $sel.name}} -<div id="nav-app-link-wrapper" class="navbar-nav mr-auto"> +<div id="nav-app-link-wrapper" class="navbar-nav{{if $sitelocation || ! $settings_url}} has_location mr-auto{{/if}}"> <a id="nav-app-link" href="{{$url}}" class="nav-link text-truncate"> {{$sel.name}} {{if $sitelocation}} @@ -74,7 +74,7 @@ </div> {{if $settings_url}} <div id="nav-app-settings-link-wrapper" class="navbar-nav mr-auto"> - <a id="nav-app-settings-link" href="{{$settings_url}}" class="nav-link"> + <a id="nav-app-settings-link" href="{{$settings_url}}/?f=&rpath={{$url}}" class="nav-link"> <i class="fa fa-fw fa-cog"></i> </a> </div> diff --git a/view/tpl/settings_module.tpl b/view/tpl/settings_module.tpl index b2ac5462f..cabefc3e5 100755 --- a/view/tpl/settings_module.tpl +++ b/view/tpl/settings_module.tpl @@ -5,6 +5,9 @@ <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}} |