Forum Discussion

ArchiveUser's avatar
ArchiveUser
Qrew Captain
9 years ago

automatically edit record after copyMasterDetail

So in a single form I have two fields worth mentioning.

a formula checkbox watching for "copy of" to appear it is true when present. and if opened in edit while true a rule will clear that field

and another formula text that contains this:

var text base = URLRoot() & "db/" & Dbid();

var text eAPI = $base & "?a=er&rid=" & [Record ID#]&"&ticket=" & [Ticket] & "&apptoken=" & [Token];

var text cJS="javascript:void(copyMasterDetailButtonHandler('&relfids=192,194,250&copyFid=327&destrid=0&sourcerid=" & [Record ID#] & "','"& Dbid()&"'))";

var text cop =  "<a id='userButton' class='Vibrant Primary' href=\"" &  $cJS &"\">Copy Detailed Quote</a>";

var text unl = "<a id='userButton' class='Vibrant Danger' href=" &$eAPI &"\">Unlock and edit this Quote</a>";

var text InnerText=

If([Clone Trigger]=true,$unl,$cop);

$InnerText

the second part of the button is currently a failsafe incase they back out of the record before saving. How would i modify this further to include a redirect to the edit record $eAPI Or set up a script to hijack the browser to redirect based on [Clone Tigger] true value by replacing $unl

3 Replies

  • well no one else helped me so I ended up doing this for the button code:



        var text base = URLRoot() & "db/" & Dbid();
        var text eAPI = $base & "?a=er&rid=" & [Quote ID#]&"&ticket=" & [Ticket] & "&apptoken=" & [Token];
        var text cJS ="javascript:void(copyMasterDetailButtonHandler('&relfids=192,194,250&copyFid=327&destrid=0&sourcerid=" & [Quote ID#] & "','"& Dbid()&"'))";
        var text cop = "<a id='userButton' class='Vibrant Primary' href=\"" & $cJS &"\">Copy Detailed Quote</a>";
        var text unl = "<a id='userButton' class='Vibrant Danger' href=" &$eAPI &"\">Click if not redirected to unlock and edit</a>";
        var text red =$unl &"<br>"&[iol]&"redirect.js"&[/iol];
        var text InnerText=
        If([Clone Trigger]=true,$red,$cop);

        $InnerText




    and in the script redirect.js:

        (function() {
          //get url string
          var str = window.location.href;
          //change view to edit
          String.prototype.replaceAt = function(str, character) {
            return this.substr(0, str) + character + this.substr(str + character.length);
          }
          str = str.replaceAt(49, "e");
          setTimeout(function() {
            window.location.href = str;
          }, 800);

        })();



    which just takes it from view to edit
    • RobertPratt's avatar
      RobertPratt
      Qrew Member
      One thing I did not take into account is the way XML uses the text, The following function was added and each text node was wrapped in the function.
      function escapeXml(unsafe) {    return unsafe.replace(/[<>&'"]/g, function (c) {
              switch (c) {
                  case '<': return '&lt;';
                  case '>': return '&gt;';
                  case '&': return '&amp;';
                  case '\'': return '&apos;';
                  case '"': return '&quot;';
              }
          });
      }

      And for clarification on why I have such a round about way is because we have looping relationships on the tables involved and the manager only wanted specific fields copied instead of all of them.