From f4f2862db708b6b0583679d6d3e30e299e7dbbbe Mon Sep 17 00:00:00 2001 From: Hugo Zilliox Date: Wed, 6 Dec 2023 13:35:29 +0100 Subject: [PATCH] json API fix, cleanURL added and history fix Removed usage of json API to check version, implemented @MayamaTakeshi cleanURL fix and chronological history order update --- assets/javascripts/issue_dynamic_edit.js | 85 +++++++++--------------- lib/details_issue_hooks.rb | 1 + 2 files changed, 34 insertions(+), 52 deletions(-) diff --git a/assets/javascripts/issue_dynamic_edit.js b/assets/javascripts/issue_dynamic_edit.js index 21bf318..b3fdcf5 100644 --- a/assets/javascripts/issue_dynamic_edit.js +++ b/assets/javascripts/issue_dynamic_edit.js @@ -24,7 +24,8 @@ const SVG_CANCEL = ' current_version){ + if(!document.querySelectorAll('#content .conflict').length){ + let msg = document.createElement('div'); + msg.classList.add('conflict'); + msg.innerHTML = `${_TXT_CONFLICT_TITLE} +
+
+

${_TXT_CONFLICT_LINK} ${_TXT_CONFLICT_TXT}

+
+
` + document.querySelector('#content').insertBefore(msg, document.querySelector('#content').firstChild); + } + } + if(callback) callback(distant_version); return distant_version; }).catch(err => { @@ -297,43 +309,6 @@ const getVersion = function(callback){ }); } -let loadedDate = new Date(); -const checkVersion = function(callback){ - - fetch(LOCATION_HREF + ".json", { - method: 'GET', - crossDomain: true, - }).then(res => res.text()).then(data => { - try { - const parsedData = JSON.parse(data); - const lastUpdate = new Date(parsedData.issue.updated_on); - if(lastUpdate > loadedDate){ - loadedDate = lastUpdate; - if(!document.querySelectorAll('#content .conflict').length){ - let msg = document.createElement('div'); - msg.classList.add('conflict'); - msg.innerHTML = `${_TXT_CONFLICT_TITLE} -
-
-

${_TXT_CONFLICT_LINK} ${_TXT_CONFLICT_TXT}

-
-
` - document.querySelector('#content').insertBefore(msg, document.querySelector('#content').firstChild); - } - if(callback) getVersion(callback); - } else { - if(callback) callback(parseInt(document.querySelector('#issue_lock_version').value)); - } - } catch (e) { - throw new Error('Error occured: ', e); - } - - }).catch(err => { - console.warn('Issue while trying to get version (avoiding conflict)'); - console.log(err); - }); -} - let checkVersionInterval = false; let setCheckVersionInterval = function(activate){ if(!_CONF_CHECK_ISSUE_UPDATE_CONFLICT) return false; @@ -406,12 +381,18 @@ let sendData = function(serialized_data){ if(document.querySelector("#errorExplanation")) document.querySelector("#errorExplanation").remove(); } - document.querySelector('form#issue-form').innerHTML = doc.querySelector('form#issue-form').innerHTML; - document.querySelector('#all_attributes').innerHTML = doc.querySelector('#all_attributes').innerHTML; - document.querySelector('div.issue.details').innerHTML = doc.querySelector('div.issue.details').innerHTML; - document.querySelector('#tab-content-history').appendChild(doc.querySelector('#history .journal.has-details:last-child')); - document.querySelector('#issue_lock_version').value = doc.querySelector("#issue_lock_version").value; - + if(document.querySelector('form#issue-form')) document.querySelector('form#issue-form').innerHTML = doc.querySelector('form#issue-form').innerHTML; + if(document.querySelector('#all_attributes')) document.querySelector('#all_attributes').innerHTML = doc.querySelector('#all_attributes').innerHTML; + if(document.querySelector('div.issue.details')) document.querySelector('div.issue.details').innerHTML = doc.querySelector('div.issue.details').innerHTML; + if(document.querySelector('#issue_lock_version')) document.querySelector('#issue_lock_version').value = doc.querySelector("#issue_lock_version").value; + if(document.querySelector('#tab-content-history')) { + if(_COMMENTS_IN_REVERSE_ORDER) { + document.querySelector('#tab-content-history').insertAdjacentElement('afterbegin', doc.querySelector('#history .journal.has-details:first-child')); + } else { + document.querySelector('#tab-content-history').appendChild(doc.querySelector('#history .journal.has-details:last-child')); + } + } + cloneEditForm(); //set datepicker fallback for input type date diff --git a/lib/details_issue_hooks.rb b/lib/details_issue_hooks.rb index bcab8bf..4d21b5e 100644 --- a/lib/details_issue_hooks.rb +++ b/lib/details_issue_hooks.rb @@ -31,6 +31,7 @@ class DetailsIssueHooks < Redmine::Hook::ViewListener content << " const _TXT_CONFLICT_TITLE = \"" + l(:ide_txt_notice_conflict_title) + "\";\n" content << " const _TXT_CONFLICT_TXT = \"" + l(:ide_txt_notice_conflict_text) + "\";\n" content << " const _TXT_CONFLICT_LINK = \"" + l(:ide_txt_notice_conflict_link) + "\";\n" + content << " const _COMMENTS_IN_REVERSE_ORDER = #{User.current.wants_comments_in_reverse_order? ? 'true' : 'false'};\n" content << "\n" content << "