Bug 31986: Add page-section to various administration pages
[srvgit] / koha-tmpl / intranet-tmpl / prog / en / modules / admin / classsources.tt
index 6779e43..c4d3381 100644 (file)
+[% USE raw %]
+[% USE Asset %]
+[% SET footerjs = 1 %]
 [% INCLUDE 'doc-head-open.inc' %]
-<title>Koha &rsaquo; Administration &rsaquo; Classification sources
-[% IF ( class_source_form ) %]
-&rsaquo; 
-    [% IF ( edit_class_source ) %]Modify classification source[% ELSE %]Add classification source[% END %]
-[% END %]
-[% IF ( sort_rule_form ) %]
-&rsaquo;
-    [% IF ( edit_sort_rule ) %]Modify filing rule[% ELSE %]Add filing rule[% END %]
-[% END %]
-[% IF ( delete_class_source_form ) %]
-  &rsaquo; Confirm deletion of classification source [% class_source %]
-[% ELSIF ( delete_sort_rule_form ) %]
-  &rsaquo; Confirm deletion of filing rule [% sort_rule %]
-[% ELSIF ( delete_sort_rule_impossible ) %]
-  &rsaquo; Cannot delete filing rule [% sort_rule %]
-[% END %]
+<title>
+[% IF op == 'add_source' %]
+    [% IF class_source %]
+        Modify classification source
+    [% ELSE %]
+        Add classification source
+    [% END %] &rsaquo; [% ELSIF op == 'add_sort_rule' %]
+    [% IF sort_rule %]
+        Modify filing rule
+    [% ELSE %]
+        Add filing rule
+    [% END %] &rsaquo; [% ELSIF op == 'add_split_rule' %]
+    [% IF split_rule %]
+        Modify splitting rule
+    [% ELSE %]
+        Add splitting rule
+    [% END %] &rsaquo; [% END %]
+Classification sources &rsaquo; Administration &rsaquo; Koha
 </title>
 [% INCLUDE 'doc-head-close.inc' %]
-
-<script type="text/javascript">
-//<![CDATA[
-
-function CheckSourceForm(f) {
-    var _alertString="";
-    var alertString2;
-    if (f.class_source.value.length==0) {
-        _alertString += "\n- " + _("Classification source code missing");
-    }
-    if (f.sort_rule.value.length==0) {
-        _alertString += "\n- " + _("Filing rule code missing");
-    }
-    if (f.description.value.length==0) {
-        _alertString += "\n- " + _("Description missing");
-    }
-    if (_alertString.length==0) {
-        document.Aform.submit();
-    } else {
-        alertString2  = _("Form not submitted because of the following problem(s)");
-        alertString2 += "\n------------------------------------------------------------------------------------\n";
-        alertString2 += _alertString;
-        alert(alertString2);
-    }
-}
-
-function CheckRuleForm(f) {
-    var _alertString="";
-    var alertString2;
-    if (f.sort_rule.value.length==0) {
-        _alertString += "\n- " + _("Filing rule code missing");
-    }
-    if (f.description.value.length==0) {
-        _alertString += "\n- " + _("Description missing");
+<style>
+    #button_add,
+    .split_regex,
+    .split_callnumber
+    {
+        padding-left: 10em;
     }
-    if (f.sort_routine.value.length==0) {
-        _alertString += "\n- " + _("Sort routine missing");
-    }
-    if (_alertString.length==0) {
-        document.Aform.submit();
-    } else {
-        alertString2  = _("Form not submitted because of the following problem(s)");
-        alertString2 += "\n------------------------------------------------------------------------------------\n";
-        alertString2 += _alertString;
-        alert(alertString2);
-    }
-}
-//]]>
-</script>
+</style>
 </head>
-<body id="admin_classsources" class="admin">
-[% INCLUDE 'header.inc' %]
-[% INCLUDE 'cat-search.inc' %]
 
-<div id="breadcrumbs">
-         <a href="/cgi-bin/koha/mainpage.pl">Home</a>
-&rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a>
-&rsaquo; <a href="/cgi-bin/koha/admin/classsources.pl">Classification sources</a>
-[% IF ( class_source_form ) %]
-&rsaquo; [% IF ( edit_class_source ) %]Modify classification source[% ELSE %]Add classification source[% END %]
+<body id="admin_classsources" class="admin">
+[% WRAPPER 'header.inc' %]
+    [% INCLUDE 'prefs-admin-search.inc' %]
 [% END %]
-[% IF ( sort_rule_form ) %]
-&rsaquo; [% IF ( edit_sort_rule ) %]Modify filing rule[% ELSE %]Add filing rule[% END %]
+
+[% WRAPPER 'sub-header.inc' %]
+<nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
+    <ol>
+        <li>
+            <a href="/cgi-bin/koha/mainpage.pl">Home</a>
+        </li>
+        <li>
+            <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a>
+        </li>
+
+        [% IF op == 'add_source' %]
+            <li>
+                <a href="/cgi-bin/koha/admin/classsources.pl">Classification sources</a>
+            </li>
+            <li>
+                <a href="#" aria-current="page">
+                    [% IF class_source %]
+                        Modify classification source
+                    [% ELSE %]
+                        Add classification source
+                    [% END %]
+                </a>
+            </li>
+
+        [% ELSIF op == 'add_sort_rule' %]
+            <li>
+                <a href="/cgi-bin/koha/admin/classsources.pl">Classification sources</a>
+            </li>
+            <li>
+                <a href="#" aria-current="page">
+                    [% IF sort_rule %]
+                        Modify filing rule
+                    [% ELSE %]
+                        Add filing rule
+                    [% END %]
+                </a>
+            </li>
+
+        [% ELSIF op == 'add_split_rule' %]
+            <li>
+                <a href="/cgi-bin/koha/admin/classsources.pl">Classification sources</a>
+            </li>
+            <li>
+                <a href="#" aria-current="page">
+                    [% IF split_rule %]
+                        Modify splitting rule
+                    [% ELSE %]
+                        Add splitting rule
+                    [% END %]
+                </a>
+            </li>
+
+        [% ELSE %]
+            <li>
+                <a href="#" aria-current="page">
+                    Classification sources
+                </a>
+            </li>
+        [% END %]
+
+    </ol>
+</nav>
 [% END %]
-[% IF ( delete_class_source_form ) %]
-&rsaquo; Confirm deletion of classification source <span class="ex">'[% class_source %]'</span>
-[% ELSIF ( delete_sort_rule_form ) %]
-&rsaquo; Confirm deletion of filing rule <span class="ex">'[% sort_rule %]'</span>
-[% ELSIF ( delete_sort_rule_impossible ) %]
-&rsaquo; Cannot delete filing rule <span class="ex">'[% sort_rule %]'</span>
+
+<div class="main container-fluid">
+    <div class="row">
+        <div class="col-sm-10 col-sm-push-2">
+            <main>
+
+[% FOR m IN messages %]
+    <div class="dialog [% m.type | html %]">
+        [% SWITCH m.code %]
+        [% CASE 'error_on_update_source' %]
+            <span>An error occurred when updating this classification source.</span>
+        [% CASE 'success_on_update_source' %]
+            <span>Classification source updated successfully.</span>
+        [% CASE 'error_on_insert_source' %]
+            <span>An error occurred when adding this classification source. Perhaps the code already exists?</span>
+        [% CASE 'success_on_insert_source' %]
+            <span>Classification source added successfully.</span>
+        [% CASE 'error_on_delete_source' %]
+            <span>An error occurred when deleting this classification source.</span>
+        [% CASE 'success_on_delete_source' %]
+            <span>Classification source deleted successfully.</span>
+        [% CASE 'error_on_update_sort_rule' %]
+            <span>An error occurred when updating this filing rule.</span>
+        [% CASE 'success_on_update_sort_rule' %]
+            <span>Filing rule updated successfully.</span>
+        [% CASE 'error_on_insert_sort_rule' %]
+            <span>An error occurred when adding this filing rule. Perhaps the code already exists?</span>
+        [% CASE 'success_on_insert_sort_rule' %]
+            <span>Filing rule added successfully.</span>
+        [% CASE 'error_on_delete_sort_rule' %]
+            <span>An error occurred when deleting this filing rule. Perhaps it is used by at least one classification source?</span>
+        [% CASE 'success_on_delete_sort_rule' %]
+            <span>Filing rule deleted successfully.</span>
+        [% CASE 'error_on_update_split_rule' %]
+            <span>An error occurred when updating this splitting rule.</span>
+        [% CASE 'success_on_update_split_rule' %]
+            <span>Splitting rule updated successfully.</span>
+        [% CASE 'error_on_insert_split_rule' %]
+            <span>An error occurred when adding this splitting rule. Perhaps the code already exists?</span>
+        [% CASE 'success_on_insert_split_rule' %]
+            <span>Splitting rule added successfully.</span>
+        [% CASE 'error_on_delete_split_rule' %]
+            <span>An error occurred when deleting this splitting rule. Perhaps it is used by at least one classification source?</span>
+        [% CASE 'success_on_delete_split_rule' %]
+            <span>Splitting rule deleted successfully.</span>
+        [% CASE %]
+            <span>[% m.code | html %]</span>
+        [% END %]
+    </div>
 [% END %]
-</div>
 
-<div id="doc3" class="yui-t2">
-  <div id="bd">
-    <div id="yui-main">
-      <div class="yui-b">
 
-[% IF ( class_source_form ) %]
-  [% IF ( edit_class_source ) %]
-<h2>Modify classification source</h2>
+[% IF op == 'add_source' %]
+  [% IF class_source %]
+<h1>Modify classification source</h1>
   [% ELSE %]
-<h2>Add classification source</h2>
+<h1>Add classification source</h1>
   [% END %]
-<form action="[% script_name %]" name="Aform" method="post">
-  <input type="hidden" name="op" value="[% confirm_op %]" />
+<form action="[% script_name | html %]" name="Aform" class="validated" method="post">
+  <input type="hidden" name="op" value="add_source_validate" />
   <fieldset class="rows">
     <ol>
       <li>
-          [% IF ( edit_class_source ) %]
-                 <span class="label">Classification source code: </span>
-            <input type="hidden" name="class_source" value="[% class_source %]" />
-            [% class_source %]
+          [% IF class_source %]
+            <span class="label">Classification source code: </span>
+            <input type="hidden" name="cn_source" value="[% class_source.cn_source | html %]" />
+            [% class_source.cn_source | html %]
           [% ELSE %]
-                 <label for="class_source">Classification source code: </label>
-            <input type="text" id="class_source" name="class_source"  size="10" maxlength="10" />
+              <label class="required" for="class_source">Classification source code: </label>
+              <input class="required focus" required="required" type="text" id="class_source" name="cn_source"  size="10" maxlength="10" />
+              <span class="required">Required</span>
           [% END %]
        </li>
-       <li><label for="description">Description: </label>
-           <input type="text" id="description" name="description" size="50" maxlength="250" 
-                  value="[% description |html %]" />
+       <li><label class="required" for="description">Description: </label>
+           <input class="required" required="required" type="text" id="description" name="description" size="50" maxlength="250" value="[% class_source.description | html %]" />
+           <span class="required">Required</span>
        </li>
        <li><label for="used">Source in use?</label>
-           [% IF ( used ) %]<input type="checkbox" id="used" name="used" value="used" checked="checked" />[% ELSE %]
-                 <input type="checkbox" id="used" name="used" value="used" />[% END %]
+           [% IF ( class_source.used ) %]<input type="checkbox" id="used" name="used" value="used" checked="checked" />[% ELSE %]
+           <input type="checkbox" id="used" name="used" value="used" />[% END %]
        </li>
-       <li><label for="sort_rule">Filing rule: </label>
-           <select id="sort_rule" name="sort_rule">
-           [% FOREACH rules_dropdow IN rules_dropdown %]
-             [% IF ( rules_dropdow.selected ) %]
-             <option value="[% rules_dropdow.rule %]" selected="selected">[% rules_dropdow.description %] ([% rules_dropdow.rule %])</option>
-             [% ELSE %]
-             <option value="[% rules_dropdow.rule %]">[% rules_dropdow.description %] ([% rules_dropdow.rule %])</option>
-             [% END %]
-           [% END %]
-           </select>
-       </li>    
+        <li>
+            <label class="required" for="class_sort_rule">Filing rule: </label>
+            <select class="required" required="required" id="class_sort_rule" name="class_sort_rule">
+                [% FOREACH r IN sort_rules %]
+                    [% IF class_source.class_sort_rule == r.class_sort_rule %]
+                        <option value="[% r.class_sort_rule | html %]" selected="selected">[% r.description | html %] ([% r.class_sort_rule | html %])</option>
+                    [% ELSE %]
+                        <option value="[% r.class_sort_rule | html %]">[% r.description | html %] ([% r.class_sort_rule | html %])</option>
+                    [% END %]
+                [% END %]
+            </select>
+            <span class="required">Required</span>
+        </li>
+        <li>
+            <label class="required" for="class_split_rule">Splitting rule: </label>
+            <select class="required" required="required" id="split_rule" name="class_split_rule">
+                [% FOREACH r IN split_rules %]
+                    [% IF class_source.class_split_rule == r.class_split_rule %]
+                        <option value="[% r.class_split_rule | html %]" selected="selected">[% r.description | html %] ([% r.class_split_rule | html %])</option>
+                    [% ELSE %]
+                        <option value="[% r.class_split_rule | html %]">[% r.description | html %] ([% r.class_split_rule | html %])</option>
+                    [% END %]
+                [% END %]
+            </select>
+            <span class="required">Required</span>
+        </li>
     </ol>
   </fieldset>
   <fieldset class="action">
-    <input type="button" value="Save" onclick="CheckSourceForm(this.form)" />
+    <input type="submit" value="Save" />
     <a class="cancel" href="/cgi-bin/koha/admin/classsources.pl">Cancel</a>
   </fieldset>
 </form>
 [% END %]
 
-[% IF ( sort_rule_form ) %]
-  [% IF ( edit_sort_rule ) %]
-<h2>Modify filing rule</h2>
+[% IF op == 'add_sort_rule' %]
+  [% IF sort_rule %]
+<h1>Modify filing rule</h1>
   [% ELSE %]
-<h2>Add filing rule</h2>
+<h1>Add filing rule</h1>
   [% END %]
-<form action="[% script_name %]" name="Aform" method="post">
-  <input type="hidden" name="op" value="[% confirm_op %]" />
+<form action="[% script_name | html %]" name="Aform" class="validated" method="post">
+  <input type="hidden" name="op" value="add_sort_rule_validate" />
   <fieldset class="rows">
     <ol>
       <li>
-          [% IF ( edit_sort_rule ) %]
-                 <span class="label">Filing rule code: </span>
-            <input type="hidden" name="sort_rule" value="[% sort_rule %]" />
-            [% sort_rule %]
+          [% IF sort_rule %]
+          <span class="label">Filing rule code: </span>
+            <input type="hidden" name="class_sort_rule" value="[% sort_rule.class_sort_rule | html %]" />
+            [% sort_rule.class_sort_rule | html %]
           [% ELSE %]
-                 <label for="sort_rule">Filing rule code: </label>
-            <input type="text" id="sort_rule" name="sort_rule"  size="10" maxlength="10" />
+              <label for="class_sort_rule" class="required">Filing rule code: </label>
+              <input class="required focus" required="required" type="text" id="class_sort_rule" name="class_sort_rule"  size="10" maxlength="10" />
+              <span class="required">Required</span>
           [% END %]
        </li>
-       <li><label for="description">Description: </label>
-           <input type="text" id="description" name="description" size="50" maxlength="250" 
-                  value="[% description |html %]" />
+       <li><label for="description" class="required">Description: </label>
+           <input class="required" required="required" type="text" id="description" name="description" size="50" maxlength="250" value="[% sort_rule.description | html %]" />
+           <span class="required">Required</span>
        </li>
-       <li><label for="sort_routine">Filing routine: </label>
-           <select id="sort_routine" name="sort_routine">
-           [% FOREACH routines_dropdow IN routines_dropdown %]
-             [% IF ( routines_dropdow.selected ) %]
-             <option value="[% routines_dropdow.routine %]" selected="selected">[% routines_dropdow.routine %]</option>
+       <li><label for="sort_routine" class="required">Filing routine: </label>
+           <select class="required" required="required" id="sort_routine" name="sort_routine">
+           [% FOREACH routine_name IN sort_routines %]
+             [% IF routine_name == sort_rule.sort_routine %]
+                 <option value="[% routine_name | html %]" selected="selected">[% routine_name | html %]</option>
              [% ELSE %]
-             <option value="[% routines_dropdow.routine %]">[% routines_dropdow.routine %]</option>
+                 <option value="[% routine_name | html %]">[% routine_name | html %]</option>
              [% END %]
            [% END %]
            </select>
+           <span class="required">Required</span>
        </li>
     </ol>
   </fieldset>
     <fieldset class="action">
-        <input type="button" value="Save" onclick="CheckRuleForm(this.form)" />
+        <input type="submit" value="Save" />
         <a class="cancel" href="/cgi-bin/koha/admin/classsources.pl">Cancel</a>
     </fieldset>
 </form>
 [% END %]
 
-[% IF ( delete_class_source_form ) %]
-    <div class="dialog alert">
-        <h3>Confirm deletion of classification source <span class="ex">'[% class_source %]'</span>?</h3>
-        <form action="[% script_name %]" name="Aform" method="post">
-            <input type="hidden" name="op" value="[% confirm_op %]" />
-            <input type="hidden" name="class_source" value="[% class_source %]" />
-            <button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> Yes, delete classification source</button>
-        </form>
-        <form action="[% script_name %]" method="get">
-            <button type="submit" class="deny"><i class="fa fa-fw fa-remove"></i> No, do not delete</button>
-        </form>
-    </div>
-[% END %]
-
-[% IF ( delete_sort_rule_form ) %]
-    <div class="dialog alert">
-        <h3>Confirm deletion of filing rule <span class="ex">'[% sort_rule %]'</span>?</h3>
-        <form action="[% script_name %]" name="Aform" method="post">
-            <input type="hidden" name="op" value="[% confirm_op %]" />
-            <input type="hidden" name="sort_rule" value="[% sort_rule %]" />
-            <button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> Yes, delete filing rule</button>
-        </form>
-        <form action="[% script_name %]" method="get">
-            <button type="submit" class="deny"><i class="fa fa-fw fa-remove"></i> No, do not delete</button>
-        </form>
-    </div>
-[% END %]
-
-[% IF ( delete_sort_rule_impossible ) %]
-<div class="dialog alert"><h3>Cannot delete filing rule <span class="ex">'[% sort_rule %]'</span></h3>
-    <p>The filing rule [% sort_rule %] is used by at least one classification source.  Please
-    remove it from all classification source definitions before trying again.
-    </p>
-    <form action="[% script_name %]" method="get">
-          <button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> OK</button>
-    </form>
-</div>
+[% IF op == 'add_split_rule' %]
+  [% IF split_rule %]
+<h1>Modify splitting rule</h1>
+  [% ELSE %]
+<h1>Add splitting rule</h1>
+  [% END %]
+<form action="[% script_name | html %]" name="Aform" class="validated" method="post">
+  <input type="hidden" name="op" value="add_split_rule_validate" />
+  <fieldset class="rows">
+    <ol>
+      <li>
+          [% IF split_rule %]
+            <span class="label">Splitting rule code: </span>
+            <input type="hidden" name="class_split_rule" value="[% split_rule.class_split_rule | html %]" />
+            [% split_rule.class_split_rule | html %]
+          [% ELSE %]
+              <label for="class_split_rule" class="required">Splitting rule code: </label>
+              <input class="required focus" required="required" type="text" id="class_split_rule" name="class_split_rule"  size="10" maxlength="10" />
+              <span class="required">Required</span>
+          [% END %]
+       </li>
+       <li><label for="description" class="required">Description: </label>
+           <input class="required" required="required" type="text" id="description" name="description" size="50" maxlength="250" value="[% split_rule.description | html %]" />
+           <span class="required">Required</span>
+       </li>
+       <li><label for="split_routine" class="required">Splitting routine: </label>
+           <select class="required" required="required" id="split_routine" name="split_routine">
+            [% FOREACH routine_name IN split_routines %]
+                [% IF routine_name == split_rule.split_routine %]
+                    <option value="[% routine_name | html %]" selected="selected">[% routine_name | html %]</option>
+                [% ELSE %]
+                    <option value="[% routine_name | html %]">[% routine_name | html %]</option>
+                [% END %]
+            [% END %]
+           </select>
+           <span class="required">Required</span>
+       </li>
+        <li id="regex_block">
+            <label for="split_regex" class="required">Regular expression: </label>
+            <div>
+                [% IF split_rule AND split_rule.regexs.size %]
+                    [% FOR re IN split_rule.regexs %]
+                        <div class="split_regex">
+                            <input type="text" name="split_regex" id="split_regex" value="[% re | html %]" />
+                            <a href="#" title="Delete" class="del_regex"><i class="fa fa-fw fa-trash"></i>Delete</a>
+                        </div>
+                    [% END %]
+                [% ELSE %]
+                    <div class="split_regex">
+                        <input type="text" name="split_regex" id="split_regex" value="" />
+                        <a href="#" title="Delete" class="del_regex"><i class="fa fa-fw fa-trash"></i>Delete</a>
+                    </div>
+                [% END %]
+            </div>
+            <div id="button_add">
+                <a href="#" class="add_regex" title="Add a new regular expression"><i class="fa fa-fw fa-plus"></i> New</a>
+                <span class="required">Required</span>
+            </div>
+            <label for="callnumbers">Test the regular expressions:</label>
+            <div id="test_split">
+                <textarea name="callnumbers"></textarea>
+                <button name="test_split_cns">Test</button>
+                <div id="result_split_callnumbers"></div>
+            </div>
+        </li>
+    </ol>
+  </fieldset>
+    <fieldset class="action">
+        <input type="submit" value="Save" />
+        <a class="cancel" href="/cgi-bin/koha/admin/classsources.pl">Cancel</a>
+    </fieldset>
+</form>
 [% END %]
 
-[% IF ( display_lists ) %]
+[% IF op == 'list' %]
 
 <div id="toolbar" class="btn-toolbar">
-    <a class="btn btn-small" id="newsource" href="[% script_name %]?op=add_source"><i class="fa fa-plus"></i> New classification source</a>
-    <a class="btn btn-small" id="newrule" href="[% script_name %]?op=add_sort_rule"><i class="fa fa-plus"></i> New filing rule</a>
+    <a class="btn btn-default" id="newsource" href="[% script_name | url %]?op=add_source"><i class="fa fa-plus"></i> New classification source</a>
+    <a class="btn btn-default" id="newrule" href="[% script_name | url %]?op=add_sort_rule"><i class="fa fa-plus"></i> New filing rule</a>
+    <a class="btn btn-default" id="newrule" href="[% script_name | url %]?op=add_split_rule"><i class="fa fa-plus"></i> New splitting rule</a>
 </div>
-
+<h1>Classification configuration</h1>
+<div class="page-section">
 <h2>Classification sources</h2>
-[% IF ( added_source ) %]
-<div class="dialog message">Added classification source [% added_source %]</div>
-[% END %]
-[% IF ( edited_source ) %]
-<div class="dialog message">Modified classification source [% edited_source %]</div>
-[% END %]
-[% IF ( deleted_source ) %]
-<div class="dialog message">Deleted classification source [% deleted_source %]</div>
-[% END %]
 <table>
   <tr>
     <th>Code</th>
     <th>Description</th>
     <th>In use</th>
     <th>Filing rule</th>
-    <th>Actions</th>
+    <th>Splitting rule</th>
+    <th class="noExport">Actions</th>
   </tr>
   [% FOREACH class_source IN class_sources %]
   <tr>
-    <td>[% class_source.code %]</td>
-    <td>[% class_source.description %]</td>
+    <td>[% class_source.cn_source | html %]</td>
+    <td>[% class_source.description |html | html %]</td>
     <td>[% IF ( class_source.used ) %]Yes[% ELSE %]No[% END %]</td>
-    <td>[% class_source.sortrule %]</td>
+    <td>[% class_source.class_sort_rule | html %]</td>
+    <td>[% class_source.class_split_rule | html %]</td>
     <td class="actions">
-      <a class="btn btn-mini" href="[% class_source.script_name %]?op=edit_source&amp;class_source=[% class_source.code |html %]"><i class="fa fa-pencil"></i> Edit</a>
-      <a class="btn btn-mini" href="[% class_source.script_name %]?op=delete_source&amp;class_source=[% class_source.code |html %]"><i class="fa fa-trash"></i> Delete</a>
+      <a class="btn btn-default btn-xs" href="[% script_name | url %]?op=add_source&amp;cn_source=[% class_source.cn_source | uri %]"><i class="fa fa-pencil"></i> Edit</a>
+      <a class="btn btn-default btn-xs delete_class_source" href="[% script_name | url %]?op=delete_source_confirmed&amp;cn_source=[% class_source.cn_source | uri%]"><i class="fa fa-trash"></i> Delete</a>
     </td>
   </tr>
   [% END %]
 </table>
+</div> <!-- /.page-section -->
 
+<div class="page-section">
 <h2>Classification filing rules</h2>
-[% IF ( added_rule ) %]
-<div class="dialog message">Added filing rule [% added_rule %]</div>
-[% END %]
-[% IF ( edited_rule ) %]
-<div class="dialog message">Modified filing rule [% edited_rule %]</div>
-[% END %]
-[% IF ( deleted_rule ) %]
-<div class="dialog message">Deleted filing rule [% deleted_rule %]</div>
-[% END %]
 <table>
   <tr>
     <th>Code</th>
     <th>Description</th>
     <th>Sorting routine</th>
-    <th>Actions</th>
+    <th class="noExport">Actions</th>
   </tr>
-  [% FOREACH class_sort_rule IN class_sort_rules %]
+  [% FOREACH rule IN sort_rules %]
   <tr>
-    <td>[% class_sort_rule.rule %]</td>
-    <td>[% class_sort_rule.description %]</td>
-    <td>[% class_sort_rule.sort_routine %]</td>
+    <td>[% rule.class_sort_rule | html %]</td>
+    <td>[% rule.description |html | html %]</td>
+    <td>[% rule.sort_routine | html %]</td>
     <td class="actions">
-      <a class="btn btn-mini" href="[% class_sort_rule.script_name %]?op=edit_sort_rule&amp;sort_rule=[% class_sort_rule.rule |html %]"><i class="fa fa-pencil"></i> Edit</a>
-      <a class="btn btn-mini" href="[% class_sort_rule.script_name %]?op=delete_sort_rule&amp;sort_rule=[% class_sort_rule.rule |html %]"><i class="fa fa-trash"></i> Delete</a>
+      <a class="btn btn-default btn-xs" href="[% script_name | html %]?op=add_sort_rule&amp;class_sort_rule=[% rule.class_sort_rule |url %]"><i class="fa fa-pencil"></i> Edit</a>
+      <a class="btn btn-default btn-xs delete_sort_rule" href="[% script_name | html %]?op=delete_sort_rule&amp;class_sort_rule=[% rule.class_sort_rule |url %]"><i class="fa fa-trash"></i> Delete</a>
     </td>
   </tr>
   [% END %]
 </table>
+</div> <!-- /.page-section -->
+
+<div class="page-section">
+<h2>Classification splitting rules</h2>
+<table>
+  <tr>
+    <th>Code</th>
+    <th>Description</th>
+    <th>Splitting routine</th>
+    <th class="noExport">Actions</th>
+  </tr>
+  [% FOREACH rule IN split_rules %]
+  <tr>
+    <td>[% rule.class_split_rule | html %]</td>
+    <td>[% rule.description | html %]</td>
+    <td>[% rule.split_routine | html %]</td>
+    <td class="actions">
+      <a class="btn btn-default btn-xs" href="[% script_name | url %]?op=add_split_rule&amp;class_split_rule=[% rule.class_split_rule | uri %]"><i class="fa fa-pencil"></i> Edit</a>
+      <a class="btn btn-default btn-xs delete_split_rule" href="[% script_name | url %]?op=delete_split_rule&amp;class_split_rule=[% rule.class_split_rule | uri %]"><i class="fa fa-trash"></i> Delete</a>
+    </td>
+  </tr>
+  [% END %]
+</table>
+</div> <!-- /.page-section -->
+
 
 [% END %]
 
-      </div>
-    </div>
-<div class="yui-b">
-[% INCLUDE 'admin-menu.inc' %]
-  </div>
-</div>
+            </main>
+        </div> <!-- /.col-sm-10.col-sm-push-2 -->
+
+        <div class="col-sm-2 col-sm-pull-10">
+            <aside>
+                [% INCLUDE 'admin-menu.inc' %]
+            </aside>
+        </div> <!-- /.col-sm-2.col-sm-pull-10 -->
+     </div> <!-- /.row -->
+
+[% MACRO jsinclude BLOCK %]
+    [% Asset.js("js/admin-menu.js") | $raw %]
+
+    <script>
+        function update_regex_block(){
+            if ( $("#split_routine option:selected").val() == 'RegEx' ) {
+                $("#regex_block").show();
+                $("#split_regex").attr('required', 'required');
+            } else {
+                $("#regex_block").hide();
+                $("#split_regex").removeAttr('required');
+            }
+        };
+        function update_delete_links_visibility() {
+            if( $("div.split_regex").length > 1 ) {
+                $("div.split_regex").find('a.del_regex').show();
+            } else {
+                $("div.split_regex").find('a.del_regex').hide();
+            }
+        }
+
+        function add_regex() {
+            var div_node = $("div.split_regex:last");
+            var div_clone = $(div_node).clone(true);
+            $(div_clone).find("input").val("");
+            $(div_node).after(div_clone);
+            update_delete_links_visibility();
+        }
+        function del_regex(a_node) {
+            $(a_node).parent('div').remove();
+            update_delete_links_visibility();
+        }
+
+        $(document).ready(function(){
+            update_regex_block();
+            update_delete_links_visibility();
+            $("#split_routine").on("change", function(){
+                update_regex_block();
+            });
+
+            $(".delete_class_source").on("click", function(e){
+                return confirm(_("Are you sure you want to delete this class source?"));
+            });
+            $(".delete_sort_rule").on("click", function(e){
+                return confirm(_("Are you sure you want to delete this filing rule?"));
+            });
+            $(".delete_split_rule").on("click", function(e){
+                return confirm(_("Are you sure you want to delete this splitting rule?"));
+            });
+
+            $(".add_regex").on("click", function(e){
+                e.preventDefault();
+                add_regex();
+            });
+            $(".del_regex").on("click", function(e){
+                e.preventDefault();
+                del_regex(this);
+            });
+
+            $("button[name='test_split_cns']").on("click", function(e){
+                e.preventDefault();
+                var regexs = [];
+                $("input[name='split_regex']").each(function(){
+                    regexs.push($(this).val());
+                });
+                var callnumbers = $("textarea[name='callnumbers']").val();
+                $.getJSON('/cgi-bin/koha/svc/split_callnumbers', {regexs: JSON.stringify(regexs), callnumbers: callnumbers}, function(answer){
+                    var callnumbers = answer['split_callnumbers'];
+                    $("#result_split_callnumbers").html('');
+                    var list_node = $('<ol></ol>');
+                    $(callnumbers).each(function(){
+                        var split_cn = this['split'].join('<br/>');
+                        var li_node = $('<li><label>'+this['inline']+'</label><div class="split_callnumber">'+split_cn+'</div></li>');
+                        $(list_node).append(li_node);
+                    });
+                    $("#result_split_callnumbers").append(list_node);
+                }).fail(function(){alert("Something went wrong.")});
+            });
+        });
+
+    </script>
+[% END %]
 [% INCLUDE 'intranet-bottom.inc' %]