Subversion Repositories oidplus

Rev

Rev 393 | Go to most recent revision | View as "text/javascript" | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * OIDplus 2.0
  3.  * Copyright 2019 Daniel Marschall, ViaThinkSoft
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *     http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17.  
  18. function checkMissingOrDoubleASN1(oid) {
  19.         var suffix = (oid == '') ? '' : '_'+oid;
  20.  
  21.         //var curinput = $('#asn1ids'+suffix').value;
  22.         var curinput = $('input[id="asn1ids'+suffix+'"]')[0];
  23.  
  24.         if (curinput.value == '') {
  25.                 // TODO: maybe we should only warn if ASN.1, IRI and Comment are all null, not just ASN.1?
  26.                 if (!confirm(_L("Attention: You did not enter an ASN.1 identifier. Are you sure that you want to continue?"))) return false;
  27.         }
  28.  
  29.         var ary = curinput.value.split(',');
  30.  
  31.         for (var i=0; i<ary.length; i++) {
  32.                 var toCheck = ary[i];
  33.                 var bry = $('input[id^="asn1ids_"]');
  34.                 for (var j=0; j<bry.length; j++) {
  35.                         if (bry[j].id != 'asn1ids'+suffix) {
  36.                                 var cry = bry[j].value.split(',');
  37.                                 for (var k=0; k<cry.length; k++) {
  38.                                         var candidate = cry[k];
  39.                                         if (toCheck == candidate) {
  40.                                                 if (!confirm(_L("Warning! ASN.1 ID %1 is already used in another OID. Continue?", candidate))) return false;
  41.                                         }
  42.                                 }
  43.                         }
  44.                 }
  45.         }
  46.  
  47.         return true;
  48. }
  49.  
  50. function crudActionInsert(parent) {
  51.         if (parent.startsWith('oid:') && !checkMissingOrDoubleASN1('')) return;
  52.  
  53.         $.ajax({
  54.                 url:"ajax.php",
  55.                 method:"POST",
  56.                 data:{
  57.                         plugin:"1.3.6.1.4.1.37476.2.5.2.4.1.0",
  58.                         action:"Insert",
  59.                         id:document.getElementById('id').value,
  60.                         ra_email:document.getElementById('ra_email').value,
  61.                         comment:document.getElementById('comment').value,
  62.                         asn1ids:(document.getElementById('asn1ids') ? document.getElementById('asn1ids').value : null),
  63.                         iris:(document.getElementById('iris') ? document.getElementById('iris').value : null),
  64.                         confidential:(document.getElementById('hide') ? document.getElementById('hide').checked : null),
  65.                         weid:(document.getElementById('weid') ? document.getElementById('weid').checked : null),
  66.                         parent:parent
  67.                 },
  68.                 error:function(jqXHR, textStatus, errorThrown) {
  69.                         alert(_L("Error: %1",errorThrown));
  70.                 },
  71.                 success:function(data) {
  72.                         if ("error" in data) {
  73.                                 alert(_L("Error: %1",data.error));
  74.                         } else if (data.status >= 0) {
  75.                                 alert(data.status);
  76.  
  77.                                 if (data.status == 0/*OK*/) {
  78.                                         alert(_L("Insert OK"));
  79.                                 }
  80.  
  81.                                 if ((data.status & 1) == 1/*RaNotExisting*/) {
  82.                                         if (confirm(_L("Insert OK. However, the email address you have entered (%1) is not in our system. Do you want to send an invitation, so that the RA can register an account to manage their OIDs?",document.getElementById('ra_email_'+id).value))) {
  83.                                                 crudActionSendInvitation(parent, document.getElementById('ra_email_'+id).value);
  84.                                                 return;
  85.                                         }
  86.                                 }
  87.  
  88.                                 if ((data.status & 2) == 2/*RaNotExistingNoInvitation*/) {
  89.                                         alert(_L("Insert OK"));
  90.                                 }
  91.  
  92.                                 if ((data.status & 4) == 4/*IsWellKnownOID*/) {
  93.                                         alert(_L("Insert OK. However, the RA and the ASN.1 and IRI identifiers were overwritten, because this OID is a well-known OID."));
  94.                                 }
  95.  
  96.                                 // TODO: auf reloadContent() verzichten. stattdessen nur tree links aktualisieren, und rechts eine neue zeile zur tabelle hinzufügen
  97.                                 reloadContent();
  98.                         } else {
  99.                                 alert(_L("Error: %1",data));
  100.                         }
  101.                 }
  102.         });
  103. }
  104.  
  105. function crudActionUpdate(id, parent) {
  106.         if (id.startsWith('oid:') && !checkMissingOrDoubleASN1(id)) return;
  107.  
  108.         $.ajax({
  109.                 url:"ajax.php",
  110.                 method:"POST",
  111.                 data: {
  112.                         plugin:"1.3.6.1.4.1.37476.2.5.2.4.1.0",
  113.                         action:"Update",
  114.                         id:id,
  115.                         ra_email:document.getElementById('ra_email_'+id).value,
  116.                         comment:document.getElementById('comment_'+id).value,
  117.                         asn1ids:(document.getElementById('asn1ids_'+id) ? document.getElementById('asn1ids_'+id).value : null),
  118.                         iris:(document.getElementById('iris_'+id) ? document.getElementById('iris_'+id).value : null),
  119.                         confidential:(document.getElementById('hide_'+id) ? document.getElementById('hide_'+id).checked : null),
  120.                         parent:parent
  121.                 },
  122.                 error:function(jqXHR, textStatus, errorThrown) {
  123.                         alert(_L("Error: %1",errorThrown));
  124.                 },
  125.                 success:function(data) {
  126.                         if ("error" in data) {
  127.                                 alert(_L("Error: %1",data.error));
  128.                         } else if (data.status >= 0) {
  129.                                 if (data.status == 0/*OK*/) {
  130.                                         alert(_L("Update OK"));
  131.                                 }
  132.  
  133.                                 if ((data.status & 1) == 1/*RaNotExisting*/) {
  134.                                         if (confirm(_L("Update OK. However, the email address you have entered (%1) is not in our system. Do you want to send an invitation, so that the RA can register an account to manage their OIDs?",document.getElementById('ra_email_'+id).value))) {
  135.                                                 crudActionSendInvitation(parent, document.getElementById('ra_email_'+id).value);
  136.                                                 return;
  137.                                         }
  138.                                 }
  139.  
  140.                                 if ((data.status & 2) == 2/*RaNotExistingNoInvitation*/) {
  141.                                         alert(_L("Update OK"));
  142.                                 }
  143.  
  144.                                 if ((data.status & 4) == 4/*IsWellKnownOID*/) {
  145.                                         alert(_L("Update OK. However, the RA and the ASN.1 and IRI identifiers were overwritten, because this OID is a well-known OID."));
  146.                                 }
  147.  
  148.                                 // reloadContent();
  149.                                 $('#oidtree').jstree("refresh");
  150.                         } else {
  151.                                 alert(_L("Error: %1",data));
  152.                         }
  153.                 }
  154.         });
  155. }
  156.  
  157. function crudActionDelete(id, parent) {
  158.         if(!window.confirm(_L("Are you sure that you want to delete %1?",id))) return false;
  159.  
  160.         $.ajax({
  161.                 url:"ajax.php",
  162.                 method:"POST",
  163.                 data: {
  164.                         plugin:"1.3.6.1.4.1.37476.2.5.2.4.1.0",
  165.                         action:"Delete",
  166.                         id:id,
  167.                         parent:parent
  168.                 },
  169.                 error:function(jqXHR, textStatus, errorThrown) {
  170.                         alert(_L("Error: %1",errorThrown));
  171.                 },
  172.                 success:function(data) {
  173.                         if ("error" in data) {
  174.                                 alert(_L("Error: %1",data.error));
  175.                         } else if (data.status >= 0) {
  176.                                 reloadContent();
  177.                                 // TODO: auf reloadContent() verzichten. stattdessen nur tree links aktualisieren, und rechts die zeile aus der tabelle löschen
  178.                         } else {
  179.                                 alert(_L("Error: %1",data.error));
  180.                         }
  181.                 }
  182.         });
  183. }
  184.  
  185. function updateDesc() {
  186.         $.ajax({
  187.                 url:"ajax.php",
  188.                 method:"POST",
  189.                 data: {
  190.                         plugin:"1.3.6.1.4.1.37476.2.5.2.4.1.0",
  191.                         action:"Update2",
  192.                         id:current_node,
  193.                         title:(document.getElementById('titleedit') ? document.getElementById('titleedit').value : null),
  194.                         //description:(document.getElementById('description') ? document.getElementById('description').value : null)
  195.                         description:tinyMCE.get('description').getContent()
  196.                 },
  197.                 error:function(jqXHR, textStatus, errorThrown) {
  198.                         alert(_L("Error: %1",errorThrown));
  199.                 },
  200.                 success:function(data) {
  201.                         if ("error" in data) {
  202.                                 alert(_L("Error: %1",data.error));
  203.                         } else if (data.status >= 0) {
  204.                                 alert(_L("Update OK"));
  205.                                 //reloadContent();
  206.                                 $('#oidtree').jstree("refresh");
  207.                                 var h1s = document.getElementsByTagName("h1");
  208.                                 for (var i = 0; i < h1s.length; i++) {
  209.                                         var h1 = h1s[i];
  210.                                         h1.innerHTML = document.getElementById('titleedit').value.htmlentities();
  211.                                 }
  212.                                 document.title = combine_systemtitle_and_pagetitle(getOidPlusSystemTitle(), document.getElementById('titleedit').value);
  213.  
  214.                                 var mce = tinymce.get('description');
  215.                                 if (mce != null) mce.isNotDirty = 1;
  216.                         } else {
  217.                                 alert(_L("Error: %1",data.error));
  218.                         }
  219.                 }
  220.         });
  221. }
  222.  
  223. function crudActionSendInvitation(origin, email) {
  224.         // window.location.href = "?goto=oidplus:invite_ra$"+encodeURIComponent(email)+"$"+encodeURIComponent(origin);
  225.         openOidInPanel('oidplus:invite_ra$'+email+'$'+origin, false);
  226. }
  227.  
  228. function frdl_weid_change() {
  229.         var from_base = 36;
  230.         var from_control = "#weid";
  231.         var to_base = 10;
  232.         var to_control = "#id";
  233.  
  234.         var inp = $(from_control).val().trim();
  235.         if (inp == "") {
  236.                 $(to_control).val("");
  237.         } else {
  238.                 var x = BigNumber(inp, from_base);
  239.                 if (isNaN(x)) {
  240.                         $(to_control).val("");
  241.                 } else {
  242.                         $(to_control).val(x.toString(to_base));
  243.                 }
  244.         }
  245. }
  246.  
  247. function frdl_oidid_change() {
  248.         var from_base = 10;
  249.         var from_control = "#id";
  250.         var to_base = 36;
  251.         var to_control = "#weid";
  252.  
  253.         var inp = $(from_control).val().trim();
  254.         if (inp == "") {
  255.                 $(to_control).val("");
  256.         } else {
  257.                 var x = BigNumber(inp, from_base);
  258.                 if (isNaN(x)) {
  259.                         $(to_control).val("");
  260.                 } else {
  261.                         $(to_control).val(x.toString(to_base));
  262.                 }
  263.         }
  264. }
  265.