Просмотр исходного кода

Merge pull request #1019 from weseek/Internal-implementation

Internal implementation
Yuki Takei 6 лет назад
Родитель
Сommit
2f16f3981a

+ 1 - 0
src/server/form/admin/customfeatures.js

@@ -4,6 +4,7 @@ const field = form.field;
 
 module.exports = form(
   field('settingForm[customize:isEnabledTimeline]').trim().toBooleanStrict(),
+  field('settingForm[customize:isEnabledDeleteCompletely]').trim().toBooleanStrict(),
   field('settingForm[customize:isSavedStatesOfTabChanges]').trim().toBooleanStrict(),
   field('settingForm[customize:isEnabledAttachTitleHeader]').trim().toBooleanStrict(),
   field('settingForm[customize:showRecentCreatedNumber]').trim().toInt(),

+ 1 - 0
src/server/form/admin/securityGeneral.js

@@ -12,4 +12,5 @@ module.exports = form(
   field('settingForm[security:registrationWhiteList]').custom(normalizeCRLF).custom(stringToArray),
   field('settingForm[security:list-policy:hideRestrictedByOwner]').trim().toBooleanStrict(),
   field('settingForm[security:list-policy:hideRestrictedByGroup]').trim().toBooleanStrict(),
+  field('settingForm[security:isEnabledDeleteCompletely]').trim().toBooleanStrict(),
 );

+ 1 - 0
src/server/models/config.js

@@ -64,6 +64,7 @@ module.exports = function(crowi) {
 
       'security:list-policy:hideRestrictedByOwner' : false,
       'security:list-policy:hideRestrictedByGroup' : false,
+      'security:isEnabledDeleteCompletely' : false,
 
       'security:isEnabledPassport' : false,
       'security:passport-ldap:isEnabled' : false,

+ 21 - 0
src/server/views/admin/security.html

@@ -136,6 +136,27 @@
             </div>
           </div>
 
+          <!-- GC-1755 Change Sentence -->
+          <div class="form-group">
+            {% set configName = 'settingForm[security:isEnabledDeleteCompletely]' %}
+            {% set configValue = getConfig('crowi','security:isEnabledDeleteCompletely') %}
+            <label for="{{configName}}" class="col-xs-3 control-label">ページを完全削除できるユーザーを制限する</label>
+            <div class="col-xs-9">
+              <div class="btn-group btn-toggle" data-toggle="buttons">
+                <label class="btn btn-default btn-rounded btn-outline {% if configValue %}active{% endif %}" data-active-class="primary">
+                  <input name="{{configName}}" value="true" type="radio" {% if configValue %}checked{% endif %}> ON
+                </label>
+                <label class="btn btn-default btn-rounded btn-outline {% if !configValue %}active{% endif %}" data-active-class="default">
+                  <input name="{{configName}}" value="false" type="radio" {% if !configValue %}checked{% endif %}> OFF
+                </label>
+              </div>
+
+              <p class="help-block small">
+                ページを完全削除できるユーザーを管理者のみに制限します。
+              </p>
+            </div>
+          </div>
+
           <div class="form-group">
             <div class="col-xs-offset-3 col-xs-6">
               <input type="hidden" name="_csrf" value="{{ csrf() }}">

+ 7 - 5
src/server/views/modal/delete.html

@@ -28,14 +28,16 @@
             <p class="help-block"> {{ t('modal_delete.help.recursively', page.path) }}
             </p>
           </div>
-          {% if not page.isDeleted() and user.canDeleteCompletely(user) %}
           <div class="checkbox checkbox-danger">
-            <input name="completely" id="cbDeleteCompletely" value="1"  type="checkbox">
+          <input name="completely" id="cbDeleteCompletely" {% if not page.isDeleted() and !user.canDeleteCompletely(user) %} disabled="disabled" {% endif %} value="1"  type="checkbox">
               <label for="cbDeleteCompletely" class="text-danger">{{ t('modal_delete.label.Delete completely') }}</label>
-              <p class="help-block"> {{ t('modal_delete.help.completely') }}
-              </p>
+              <!-- GC-1755 Change Sentence -->
+              {% if not page.isDeleted() and !user.canDeleteCompletely(user) %}
+                <p class="bg-danger text-white p-2 mt-2"> <i class="icon-ban" ></i> 完全削除の権限がありません </p>
+              {% else %}
+                <p class="help-block"> {{ t('modal_delete.help.completely') }}</p>
+              {% endif %}
           </div>
-          {% endif %}
         </div>
         <div class="modal-footer">
           <div class="d-flex justify-content-between">

+ 2 - 4
src/server/views/widget/page_alerts.html

@@ -24,13 +24,11 @@
       {% if page.isDeleted() and user %}
       <ul class="list-inline">
         <li>
-          <a href="#" class="btn btn-default btn-rounded btn-sm" data-target="#putBackPage" data-toggle="modal"><i class="icon-action-undo" aria-hidden="true"></i> {{ t('Put Back') }}</a>
+          <button href="#" class="btn btn-default btn-rounded btn-sm" data-target="#putBackPage" data-toggle="modal"><i class="icon-action-undo" aria-hidden="true"></i> {{ t('Put Back') }}</button>
         </li>
-        {% if user.canDeleteCompletely(user) %}
         <li>
-          <a href="#" class="btn btn-danger btn-rounded btn-sm" data-target="#deletePage" data-toggle="modal"><i class="icon-fire" aria-hidden="true"></i> {{ t('Delete Completely') }}</a>
+            <button href="#" class="btn btn-danger btn-rounded btn-sm" {% if !user.canDeleteCompletely(user) %} disabled="disabled" {% endif %} data-target="#deletePage" data-toggle="modal"><i class="icon-fire" aria-hidden="true"></i> {{ t('Delete Completely') }}</button>
         </li>
-        {% endif %}
       </ul>{# /.pull-right #}
       {% endif %}
     </div>