Recreating Multiline Text field with Append Changes without SP Versions…

Forums Dynamic Forms for SharePoint Recreating Multiline Text field with Append Changes without SP Versions…

This topic contains 7 replies, has 3 voices, and was last updated by  Alexander Bautz 4 months, 2 weeks ago.

  • Author
    Posts
  • #10250

    BenR
    Participant

    Alexander, savvy users,

    I am trying to create a “log” multiline text field that has the features of the SharePoint “Append Changes to Existing Text,” but is not reliant on SharePoint’s versioning (which have many disadvantages).

    In my scenario, I have a two multiline text fields, [Log] and [LogHistory], both plain text only. I would like to use the Set Field for [LogHistory] to a value of “prepend:{timestamp} – {currentUser}: \n{Log}\n************\n”, and when applied to a “The form is saved” rule, it is lovely.

    However, if the user DOES NOT ENTER a value into the [Log] field, the {timestamp} – {currentUser} is prepended to the [LogHistory] field with no [Log] value – which I would like to avoid.

    I have very limited coding skills. Can anyone recommend a methodology to check that [Log] has some characters before prepending to the [LogHistory] field? I cannot use a DFFS Rule to check the contents of a multiline text field…

    Any input is appreciated!

    R’grds – Ben.
    My Environment: SharePoint 2013, dffs_min – v3.352, spjs-utility – v1.257, jquery-1.10.2.min

  • #10273

    Alexander Bautz
    Keymaster

    Hi,
    You can use two rules to check if the field is empty, but it’s probably cleaner to use this custom function in the Custom JS – and trigger it from the “The form is saved” rule (in the “Run these functions / trigger these rules” section).

    function logHistory(){
    	var a = getFieldValue("Log"), b = getFieldValue("LogHistory"), c, d = spjs.utility.userInfo(spjs.dffs.data.currUserID);
    	if(a !== ""){
    		c = new Date().toLocaleString(_spPageContextInfo.currentCultureName);
    		setFieldValue("LogHistory",c+" - "+d.Title+"\n"+a+(b!==""?"\n"+b:""));
    		// Clear the Log field
    		setFieldValue("Log","");
    	}
    }

    Let me know how this works out.

    Alexander

  • #10294

    BenR
    Participant

    Alexander,

    Unfortunately, I am at dffs_min – v3.352, where [The form is saved] trigger only executes the [Set field value] section, and does not executes [Run these functions].

    You mention that two rules could accomplish the same (though not as cleanly), but I don’t see how as a rule cannot be created for a [Multiple Lines of Text] field. Can you guide me to the less-clean solution?

    Greatly appreciate your effort! R’grds – Ben.
    My Environment: SharePoint 2013, dffs_min – v3.352, spjs-utility – v1.257, jquery-1.10.2.min

  • #10308

    Alexander Bautz
    Keymaster

    No problem, just skip the rule, and change the function name to “dffs_PreSaveAction” like this:

    function dffs_PreSaveAction(){
    	var a = getFieldValue("Log"), b = getFieldValue("LogHistory"), c, d = spjs.utility.userInfo(spjs.dffs.data.currUserID);
    	if(a !== ""){
    		c = new Date().toLocaleString(_spPageContextInfo.currentCultureName);
    		setFieldValue("LogHistory",c+" - "+d.Title+"\n"+a+(b!==""?"\n"+b:""));
    		setFieldValue("Log","");
    	}
    	return true;
    }

    DFFS will automatically trigger this function on save.

    Alexander

  • #10340

    BenR
    Participant

    Alexander,

    Perfect! Thank you for solving my problem!

    R’grds – Ben.

  • #21128

    Phil Grant
    Participant

    Hi,
    I’ve tried this in my DFFS but I keep getting a Javascript error, not sure why, I’ve tried using field names and internal field names but both cause the error, any ideas what I’m doing wrong? thanks

    
    function logHistory(){
    var a = getFieldValue("Additional CCB Comments"), b = getFieldValue("CCB Comments"), c, d = spjs.utility.userInfo(spjs.dffs.data.currUserID);
    if(a !== ""){
    c = new Date().toLocaleString(_spPageContextInfo.currentCultureName);
    setFieldValue("CCB Comments" c+" - "+d.Title+"\n"+a+(b!==""?"\n"+b:""));
    // Clear the Log field
    setFieldValue("Additional CCB Comments","");
    }
    }
    • This reply was modified 4 months, 2 weeks ago by  Phil Grant.
    • This reply was modified 4 months, 2 weeks ago by  Phil Grant.
  • #21132

    Phil Grant
    Participant

    Never mind, found there was a comma missing in your setFieldValue statement.

  • #21136

    Alexander Bautz
    Keymaster

    I’m glad you figured it out.

    Alexander

You must be logged in to reply to this topic.