Browse Source

Show portal hint when the upper page is exists

Sotaro KARASAWA 10 years ago
parent
commit
c51cc2aed8
4 changed files with 51 additions and 0 deletions
  1. 7 0
      lib/views/page.html
  2. 29 0
      lib/views/page_list.html
  3. 5 0
      resource/css/_portal.scss
  4. 10 0
      resource/js/crowi.js

+ 7 - 0
lib/views/page.html

@@ -216,6 +216,13 @@
 <div id="notifPageEdited" class="fk-hide fk-notif fk-notif-danger"><i class="fa fa-exclamation-triangle"></i> <span class="edited-user"></span>さんがこのページを編集しました。 <a href="javascript:location.reload();"><i class="fa fa-angle-double-right"></i> 最新版を読み込む</a></div>
 <div id="notifPageEdited" class="fk-hide fk-notif fk-notif-danger"><i class="fa fa-exclamation-triangle"></i> <span class="edited-user"></span>さんがこのページを編集しました。 <a href="javascript:location.reload();"><i class="fa fa-angle-double-right"></i> 最新版を読み込む</a></div>
 <div id="notifPageEditing" class="fk-hide fk-notif fk-notif-warning"><i class="fa fa-exclamation-triangle"></i> 他の人がこのページの編集を開始しました。</div>
 <div id="notifPageEditing" class="fk-hide fk-notif fk-notif-warning"><i class="fa fa-exclamation-triangle"></i> 他の人がこのページの編集を開始しました。</div>
 
 
+<div id="portal-warning-for-page" class="portal-warning-for-page alert alert-danger alert-dismissible" role="alert">
+  <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+
+  <strong>Warning!</strong> /user/hoge のページが存在します。このページをポータル化するには、/ に移動し、「ページを移動」させてください。<br>
+/ とは別に ポータル を作成する場合、このまま編集を続けて作成してください。
+</div>
+
 <script>
 <script>
   $(function() {
   $(function() {
     var me = {{ user|json|safe }};
     var me = {{ user|json|safe }};

+ 29 - 0
lib/views/page_list.html

@@ -31,6 +31,8 @@
 
 
 <div class="page-list content-main {% if req.body.pageForm %}on-edit{% endif %}"
 <div class="page-list content-main {% if req.body.pageForm %}on-edit{% endif %}"
   id="content-main"
   id="content-main"
+  data-path="{{ path }}"
+  data-path-shortname="{{ path|path2name }}"
   data-page-portal="{% if page and page.isPortal() %}1{% else %}0{% endif %}"
   data-page-portal="{% if page and page.isPortal() %}1{% else %}0{% endif %}"
   data-page-id="{% if page %}{{ page._id.toString() }}{% endif %}"
   data-page-id="{% if page %}{{ page._id.toString() }}{% endif %}"
   data-current-user="{% if user %}{{ user._id.toString() }}{% endif %}"
   data-current-user="{% if user %}{{ user._id.toString() }}{% endif %}"
@@ -174,3 +176,30 @@
 
 
 {% endblock %} {# side_header #}
 {% endblock %} {# side_header #}
 
 
+{% block body_end %}
+<div class="modal fade portal-warning-modal" id="portal-warning-modal">
+  <div class="modal-dialog">
+    <div class="modal-content">
+
+      <div class="modal-header">
+        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+        <h4 class="modal-title">ポータルに関するヒント</h4>
+      </div>
+      <div class="modal-body alert alert-danger">
+
+        <strong>Warning!</strong><br>
+
+        <p>既に <strong><a href="{{ path|removeLastSlash }}">{{ path|removeLastSlash }}</a></strong> のページが存在します。</p>
+
+        <p>
+          <a href="{{ path|removeLastSlash }}">{{ path|removeLastSlash }}</a> をポータル化するには、
+          <a href="{{ path|removeLastSlash }}">{{ path|removeLastSlash }}</a> に移動し、「ページを移動」させてください。<br>
+          <a href="{{ path|removeLastSlash }}">{{ path|removeLastSlash }}</a> とは別に、このページ(<code>{{ path }}</code>)にポータルを作成する場合、このまま編集を続けて作成してください。
+        </p>
+
+      </div>
+    </div>
+  </div>
+</div>
+</div>
+{% endblock %} {# body_end #}

+ 5 - 0
resource/css/_portal.scss

@@ -29,3 +29,8 @@
     text-align: center;
     text-align: center;
   }
   }
 } // .portal-side
 } // .portal-side
+
+
+.portal-warning-modal {
+  z-index: 1062;
+}

+ 10 - 0
resource/js/crowi.js

@@ -287,6 +287,16 @@ $(function() {
     $('.portal').removeClass('hide');
     $('.portal').removeClass('hide');
     $('.content-main').addClass('on-edit');
     $('.content-main').addClass('on-edit');
     $('.portal a[data-toggle="tab"][href="#edit-form"]').tab('show');
     $('.portal a[data-toggle="tab"][href="#edit-form"]').tab('show');
+
+    var path = $('.content-main').data('path');
+    if (path != '/' && $('.content-main').data('page-id') == '') {
+      var upperPage = path.substr(0, path.length - 1);
+      $.get('/_api/pages.get', {path: upperPage}, function(res) {
+        if (res.ok && res.page) {
+          $('#portal-warning-modal').modal('show');
+        }
+      });
+    }
   });
   });
   $('#portal-form-close').on('click', function(e) {
   $('#portal-form-close').on('click', function(e) {
     $('.portal').addClass('hide');
     $('.portal').addClass('hide');