Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • First edit button, we call it "ApproveDEV" has the following settings

    Visible to only "devs" user group and hidden if already approved

  • Second edit button, we call it "ApprovePM" has the following settings

    Visible to only "pm" group and hidden when the following condition is met: 

    Code Block
    approvedByFin:true OR approvedByPM:true OR approvedByDevs:false

    Explanation: Button will be hidden when it already approved by PMs, or not approved yet by DEVs, or already approved by FINANCE

  • Third edit button, we call it "ApproveFIN" has the following settings

    Visible to only users in "fin" user group and hidden when the following condition is met: 

    Code Block
    approvedByFin:true OR approvedByPM:false OR approvedByDevs:false

    Explanation: Button will be hidden when it already approved by FINANCE, or not approved yet by PMs or not yet approved by DEVs

    Full storage format for this list view is listed below

    Code Block
    <ac:structured-macro ac:macro-id="96b70748-706b-4115-aaf2-5b9ae013b151" ac:name="confiform-list"
                                               ac:schema-version="1">
    <ac:parameter ac:name="formName">proposals</ac:parameter>
    <ac:rich-text-body>
      <h3>Proposal:</h3>
      <p>
        <ac:structured-macro ac:macro-id="ab7fd363-7416-40c7-b9fa-58d253f49c81" ac:name="confiform-field"
                             ac:schema-version="1">
          <ac:parameter ac:name="fieldName">proposaltext</ac:parameter>
        </ac:structured-macro>
      </p>
      <p>
        <strong>
          <ac:structured-macro ac:macro-id="cf8c064e-18f4-48ea-922c-18b9b348f13d" ac:name="confiform-field"
                               ac:schema-version="1">
            <ac:parameter ac:name="fieldName">statelabel</ac:parameter>
          </ac:structured-macro>
        </strong>
        <ac:structured-macro ac:macro-id="f04196d7-d5fe-49ed-a347-7a7234fe1b96" ac:name="confiform-entry-edit"
                             ac:schema-version="1">
          <ac:parameter ac:name="restrictions">devs</ac:parameter>
          <ac:parameter ac:name="showBoth">false</ac:parameter>
          <ac:parameter ac:name="hideIfMatches">approvedByDevs:true</ac:parameter>
          <ac:parameter ac:name="updateMessage">Approved</ac:parameter>
          <ac:parameter ac:name="editButtonLabel">ApproveDEV</ac:parameter>
        </ac:structured-macro>
        <ac:structured-macro ac:macro-id="c69b2a2c-b742-448d-be62-118d36680eb3" ac:name="confiform-entry-edit"
                             ac:schema-version="1">
          <ac:parameter ac:name="restrictions">pm</ac:parameter>
          <ac:parameter ac:name="showBoth">false</ac:parameter>
          <ac:parameter ac:name="hideIfMatches">approvedByFin:true OR approvedByPM:true OR approvedByDevs:false
          </ac:parameter>
          <ac:parameter ac:name="updateMessage">Approved</ac:parameter>
          <ac:parameter ac:name="editButtonLabel">ApprovePM</ac:parameter>
        </ac:structured-macro>
        <ac:structured-macro ac:macro-id="4ae8ce8d-066b-40b4-a74a-a564f58dc03a" ac:name="confiform-entry-edit"
                             ac:schema-version="1">
          <ac:parameter ac:name="restrictions">fin</ac:parameter>
          <ac:parameter ac:name="showBoth">false</ac:parameter>
          <ac:parameter ac:name="hideIfMatches">approvedByFin:true OR approvedByPM:false OR approvedByDevs:false
          </ac:parameter>
          <ac:parameter ac:name="updateMessage">Approved</ac:parameter>
          <ac:parameter ac:name="editButtonLabel">ApproveFIN</ac:parameter>
        </ac:structured-macro>
      </p>
      <p>&nbsp;</p>
    </ac:rich-text-body>
    </ac:structured-macro>

    And this is how the form looks like in Confluence view mode:


    This is how it is seeing by FINANCE team




    Info

    Final note: the solution presented here is just one way of implementing such requirements. As ConfiForms is very flexible and powerful in terms of how you can do things and what you can do.

    More ideas on how it can be implemented:

    - instead of using "Formula" field to track visual representation of current approval state you can employ a "readonly" field which will be updated using by defining "Set Value" Field rules for each checkbox field. Meaning that you just define a ConfiForms Field Definition Rules macro for each checkbox field and use a "Set Value" action to set the value (caption) for "readonly field"

    - also, instead of using "readonly" field you can use any field type which you actually want, a status field might be a good choice. In our example above we have just showed that you can use "formula" fields to track the status "automatically".

    If you are curious then here is the storage format for another solution

    Expand

     

    Image Added

    3 more rules for Field definitions (for each checkbox). The rule basically just sets/updates the value for readonly field (statelabel)

     

    Code Block
    <h1>Office proposals</h1>
    <p>&nbsp;</p><ac:structured-macro ac:macro-id="81b6f18d-2cd2-4604-b9f3-7a3ea40d77fd" ac:name="confiform"
                                      ac:schema-version="1">
    <ac:parameter ac:name="additionalFormAdmins">devs,pm,fin</ac:parameter>
    <ac:parameter ac:name="formName">proposals</ac:parameter>
    <ac:parameter ac:name="saveButtonLabel">Register proposal</ac:parameter>
    <ac:parameter ac:name="registrationFormTitle">Register</ac:parameter>
    <ac:rich-text-body>
      <p>
        <ac:structured-macro ac:macro-id="bff7604a-060d-4767-9827-ae7f353d0ba1" ac:name="confiform-field-definition"
                             ac:schema-version="1">
          <ac:parameter ac:name="fieldName">proposaltext</ac:parameter>
          <ac:parameter ac:name="fieldLabel">Proposal text</ac:parameter>
          <ac:parameter ac:name="type">textarea</ac:parameter>
        </ac:structured-macro>
      </p>
      <p>
        <ac:structured-macro ac:macro-id="ba577edf-0564-466e-bc96-3e6b007993df" ac:name="confiform-field-definition"
                             ac:schema-version="1">
          <ac:parameter ac:name="fieldName">statelabel</ac:parameter>
          <ac:parameter ac:name="fieldLabel">State</ac:parameter>
          <ac:parameter ac:name="values">Created</ac:parameter>
          <ac:parameter ac:name="extras">IF(&quot;[entry.approvedByFin]&quot;, &quot;Approved By Finance&quot;, IF(&quot;[entry.approvedByPM]&quot;,
            &quot;Approved By PMs&quot;, IF(NOT(&quot;[entry.approvedByDevs]&quot;), &quot;Created&quot;, &quot;Approved By
            Devs&quot;)))
          </ac:parameter>
          <ac:parameter ac:name="type">read_only</ac:parameter>
        </ac:structured-macro>
      </p>
      <p>
        <ac:structured-macro ac:macro-id="24f69607-5f98-4d6c-919b-dfc38800110a" ac:name="confiform-field-definition"
                             ac:schema-version="1">
          <ac:parameter ac:name="editRestrictions">devs</ac:parameter>
          <ac:parameter ac:name="fieldName">approvedByDevs</ac:parameter>
          <ac:parameter ac:name="fieldLabel">Approved (Devs)</ac:parameter>
          <ac:parameter ac:name="restrictions">devs</ac:parameter>
          <ac:parameter ac:name="type">checkbox</ac:parameter>
        </ac:structured-macro>
      </p>
      <ac:structured-macro ac:macro-id="f4c64953-1d5d-4451-a7f5-c26a1f7e4374" ac:name="confiform-field-definition"
                           ac:schema-version="1">
        <ac:parameter ac:name="editRestrictions">pm</ac:parameter>
        <ac:parameter ac:name="fieldName">approvedByPM</ac:parameter>
        <ac:parameter ac:name="fieldLabel">Approved By (PMs)</ac:parameter>
        <ac:parameter ac:name="restrictions">pm</ac:parameter>
        <ac:parameter ac:name="type">checkbox</ac:parameter>
      </ac:structured-macro>
      <p>
        <ac:structured-macro ac:macro-id="9ef48024-74de-4948-936b-c41e933653e5" ac:name="confiform-field-definition"
                             ac:schema-version="1">
          <ac:parameter ac:name="editRestrictions">fin</ac:parameter>
          <ac:parameter ac:name="fieldName">approvedByFin</ac:parameter>
          <ac:parameter ac:name="fieldLabel">Approved By (Finance)</ac:parameter>
          <ac:parameter ac:name="restrictions">fin</ac:parameter>
          <ac:parameter ac:name="type">checkbox</ac:parameter>
        </ac:structured-macro>
        <ac:structured-macro ac:macro-id="8b010d6b-4154-454c-9ba4-cf034159d1dc" ac:name="confiform-entry-register"
                             ac:schema-version="1">
          <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
          <ac:rich-text-body>
            <p>&nbsp;</p>
          </ac:rich-text-body>
        </ac:structured-macro>
        <ac:structured-macro ac:macro-id="dc812989-906a-443a-a79e-4048c901e5aa" ac:name="confiform-field-definition-rules"
                             ac:schema-version="1">
          <ac:parameter ac:name="condition">id:</ac:parameter>
          <ac:parameter ac:name="fieldName">approvedByDevs,approvedByPM,approvedByFin</ac:parameter>
          <ac:parameter ac:name="action">Hide field</ac:parameter>
          <ac:parameter ac:name="actionFieldName">statelabel</ac:parameter>
        </ac:structured-macro>
      </p>
      <p>
        <ac:structured-macro ac:macro-id="db643f2f-a932-4326-a451-6881aa826d5d" ac:name="confiform-field-definition-rules"
                             ac:schema-version="1">
          <ac:parameter ac:name="condition">approvedByDevs:true</ac:parameter>
          <ac:parameter ac:name="values">statelabel=Approved By Devs</ac:parameter>
          <ac:parameter ac:name="action">Set value</ac:parameter>
          <ac:parameter ac:name="actionFieldName">approvedByDevs</ac:parameter>
        </ac:structured-macro>
      </p>
      <p>
        <ac:structured-macro ac:macro-id="cb5b6bd1-2f26-4cee-b4ef-cf90a2c79468" ac:name="confiform-field-definition-rules"
                             ac:schema-version="1">
          <ac:parameter ac:name="condition">approvedByPM:true</ac:parameter>
          <ac:parameter ac:name="values">statelabel=Approved By PM</ac:parameter>
          <ac:parameter ac:name="action">Set value</ac:parameter>
          <ac:parameter ac:name="actionFieldName">approvedByDevs</ac:parameter>
        </ac:structured-macro>
      </p>
      <p>
        <ac:structured-macro ac:macro-id="d0bb80ef-6740-474b-b0a2-32201ba4d355" ac:name="confiform-field-definition-rules"
                             ac:schema-version="1">
          <ac:parameter ac:name="condition">approvedByFin:true</ac:parameter>
          <ac:parameter ac:name="values">statelabel=Approved By FIN</ac:parameter>
          <ac:parameter ac:name="action">Set value</ac:parameter>
          <ac:parameter ac:name="actionFieldName">approvedByDevs</ac:parameter>
        </ac:structured-macro>
      </p>
    </ac:rich-text-body>
    </ac:structured-macro><ac:structured-macro ac:macro-id="96b70748-706b-4115-aaf2-5b9ae013b151" ac:name="confiform-list"
                                               ac:schema-version="1">
    <ac:parameter ac:name="formName">proposals</ac:parameter>
    <ac:rich-text-body>
      <h3>Proposal:</h3>
      <p>
        <ac:structured-macro ac:macro-id="adaa1e2d-a0ad-4288-b002-58d72f04c1f0" ac:name="confiform-field"
                             ac:schema-version="1">
          <ac:parameter ac:name="fieldName">proposaltext</ac:parameter>
        </ac:structured-macro>
      </p>
      <p>
        <strong>
          <ac:structured-macro ac:macro-id="99a0aead-71b2-411d-bc20-07c3ee5f4241" ac:name="confiform-field"
                               ac:schema-version="1">
            <ac:parameter ac:name="fieldName">statelabel</ac:parameter>
          </ac:structured-macro>
        </strong>
        <ac:structured-macro ac:macro-id="66d4b31c-c95c-45d4-be41-16f93ef6e020" ac:name="confiform-entry-edit"
                             ac:schema-version="1">
          <ac:parameter ac:name="restrictions">devs</ac:parameter>
          <ac:parameter ac:name="showBoth">false</ac:parameter>
          <ac:parameter ac:name="hideIfMatches">approvedByDevs:true</ac:parameter>
          <ac:parameter ac:name="updateMessage">Approved</ac:parameter>
          <ac:parameter ac:name="editButtonLabel">ApproveDEV</ac:parameter>
        </ac:structured-macro>
        <ac:structured-macro ac:macro-id="ebea2fa1-9182-4af7-afb7-e0f21e8ee631" ac:name="confiform-entry-edit"
                             ac:schema-version="1">
          <ac:parameter ac:name="restrictions">pm</ac:parameter>
          <ac:parameter ac:name="showBoth">false</ac:parameter>
          <ac:parameter ac:name="hideIfMatches">approvedByFin:true OR approvedByPM:true OR approvedByDevs:false
          </ac:parameter>
          <ac:parameter ac:name="updateMessage">Approved</ac:parameter>
          <ac:parameter ac:name="editButtonLabel">ApprovePM</ac:parameter>
        </ac:structured-macro>
        <ac:structured-macro ac:macro-id="c2f7f948-402b-4beb-8bdd-83aa31b04cda" ac:name="confiform-entry-edit"
                             ac:schema-version="1">
          <ac:parameter ac:name="restrictions">fin</ac:parameter>
          <ac:parameter ac:name="showBoth">false</ac:parameter>
          <ac:parameter ac:name="hideIfMatches">approvedByFin:true OR approvedByPM:false OR approvedByDevs:false
          </ac:parameter>
          <ac:parameter ac:name="updateMessage">Approved</ac:parameter>
          <ac:parameter ac:name="editButtonLabel">ApproveFIN</ac:parameter>
        </ac:structured-macro>
      </p>
      <p>&nbsp;</p>
    </ac:rich-text-body>
    </ac:structured-macro>

     

     

...