source: main/trunk/ibisph-view/src/main/webapp/xslt/html/query/definition/QueryDefinition.xslt @ 21167

Last change on this file since 21167 was 21167, checked in by GarthBraithwaite_STG, 7 weeks ago

view - temp commit to save QD save direct from result page.

File size: 11.2 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2
3<xsl:stylesheet version="3.0" 
4        xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" 
5        xmlns:ibis="http://www.ibisph.org"
6
7        exclude-result-prefixes="ibis"
8>
9
10        <ibis:doc>
11                <name>html/query/definition/QueryDefinition</name>
12                <summary>Basic params and HTML blocks used on saved query def pages.</summary>
13                <description>
14                </description>
15        </ibis:doc>
16
17
18        <xsl:param name="QueryDefinitions" 
19                ibis:doc="Main model XML for the index page requests (ie param not used
20                        for this).  This param and the code below to handle if ever injected."
21        />
22        <xsl:param name="QueryDefinition.queryDefinitions" 
23                select="if($QueryDefinitions instance of node())
24                        then $QueryDefinitions/QUERY_DEFINITIONS
25                        else /QUERY_DEFINITIONS"
26        />
27
28        <xsl:param name="QueryDefinition" 
29                ibis:doc="The QD is typically passed as a parameter.  Even in the QD detail
30                        the QM is the main XML.  Uses the same pattern as above QDs."
31        />
32        <xsl:param name="QueryDefinition.queryDefinition" 
33                select="if($QueryDefinition instance of node())
34                        then $QueryDefinition/QUERY_DEFINITION
35                        else /QUERY_DEFINITION" 
36                ibis:doc="current query def"
37        />
38        <xsl:param name="QueryDefinition.isBlankQueryDefinition" select="not($QueryDefinition.queryDefinition/NAME)"/>
39
40        <xsl:param name="QueryDefinition.isMyQueryDefinitions" select="
41                        boolean($ibis.userProfile) and
42                        ($QueryDefinition.queryDefinitions/NAME = $ibis.userProfile/ID)
43                "
44        />
45
46<xsl:param name="ApplyQueryDefinition" 
47        ibis:doc="injected param.  Typically injected for QM builder requests.
48                Put in here in case want to show on a QD page???"
49/>
50<xsl:param name="QueryDefinition.applyQueryDefinition" select="$ApplyQueryDefinition"/>
51
52
53        <xsl:param name="QueryDefinition.baseRequestPath" select="concat($ibis.baseRequestPath, 'query/definition/')" 
54                ibis:doc="ability to SS override the base request QD related requst URLs"
55        />
56
57
58        <!--
59                HAD CODE TO SUPPORT SECURE SAVED QUERIES:
60
61                <xsl:variable name="urlPrefix" select="
62                        if(string-length(REQUEST_PATH_PREFIX) != 0)
63                        then concat($ibis.baseRequestPath, REQUEST_PATH_PREFIX, '/')
64                        else ibis.baseRequestPath
65                "/>
66        --> 
67
68
69
70
71        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TEMPLATES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
72        <xsl:template name="QueryDefintion.editIdentityDialog">
73                <xsl:param name="queryModule"/>
74                <xsl:param name="request"       select="$queryModule/REQUEST"/>
75                <xsl:param name="configuration" select="$queryModule/CONFIGURATIONS/CONFIGURATION[NAME = $request/CONFIGURATION_NAME]"/>
76
77                <div id="queryDefinitionEditIdentityDialog" class="DialogContent">
78                        <div class="InnerCanvas">
79                                <xsl:call-template name="QueryDefintion.identityForm">
80                                        <xsl:with-param name="queryModule"   select="$queryModule"/>
81                                        <xsl:with-param name="request"       select="$request"/>
82                                        <xsl:with-param name="configuration" select="$configuration"/>
83                                </xsl:call-template>
84                        </div>
85                        <button type="button" onclick="saveDefinition();">Save</button>
86                        <button type="button" onclick="queryDefinitionEditIdentityDialog.close()" title="Closes the edit without saving.">Cancel</button>
87                </div>
88
89                <xsl:call-template name="QueryDefinition.specificScript"/>
90        </xsl:template> 
91
92
93        <xsl:template name="QueryDefintion.identityForm" 
94                ibis:doc="called from the detail page and when saving a new query def."
95        >
96<xsl:param name="queryModule" ibis:doc="Always have a QM - either current QM in the session or detail req loads it."/>
97<xsl:param name="request" select="$queryModule/REQUEST"/>
98                <xsl:param name="configuration" select="$queryModule/CONFIGURATIONS/CONFIGURATION[NAME = $request/CONFIGURATION_NAME]"/>
99                <form name="form" id="identityForm" method="post" action="{$QueryDefinition.baseRequestPath}save" autocomplete="on">
100                        <input type="hidden" id="requestBasePath"   name="requestBasePath" 
101                                value="{if( string-length($QueryDefinition.queryDefinition/REQUEST_PATH_PREFIX) != 0)
102                                        then $QueryDefinition.queryDefinition/REQUEST_PATH_PREFIX
103                                        else $QueryDefinition.baseRequestPath
104                                }"
105                        />
106
107                        <table class="Info" 
108                                summary="Query definition fields to edit.  Left column is the
109                                        label/title, right column contains associated input elements.
110                                "
111                                caption="Query definition properties to be edited/populated."
112                        >
113                                <tr>
114                                        <th scope="row" title="Unique identifier for this saved definition">
115                                                <label for="name">* Name:</label>
116                                                <xsl:call-template name="Help.popup">
117                                                        <xsl:with-param name="title"   select="'Name Field'"/>
118                                                        <xsl:with-param name="content" select="$HelpContent.queryDefinitionName"/>
119                                                        <xsl:with-param name="additionalClasses" select="'Inline'"/>
120                                                </xsl:call-template>
121                                        </th>
122                                        <td class="Title" title="unique name that identifies this saved definition">
123                                                <xsl:if test="$QueryDefinition.isBlankQueryDefinition">
124                                                <input id="name" name="name"  maxlength="180" type="text" 
125                                                        value="{concat(replace($request/CONFIGURATION_PATH, '/', '_'), '_', $queryModule/REQUEST/SERIAL_NUMBER)}" 
126                                                />
127                                                </xsl:if>
128                                                <xsl:if test="not($QueryDefinition.isBlankQueryDefinition)">
129                                                <input id="name" name="name" type="hidden" value="{$QueryDefinition.queryDefinition/NAME}"/>
130                                                <xsl:value-of select="$QueryDefinition.queryDefinition/NAME"/>
131                                                </xsl:if>
132                                        </td>
133                                </tr>
134
135                                <tr>
136                                        <th scope="row" title="This value is used as the main title for this query definiton.">
137                                                <label for="title">* Title:</label>
138                                                <xsl:call-template name="Help.popup">
139                                                        <xsl:with-param name="title" select="'Title Field'"/>
140                                                        <xsl:with-param name="content" select="$HelpContent.queryDefinitionTitle"/>
141                                                        <xsl:with-param name="additionalClasses" select="'Inline'"/>
142                                                </xsl:call-template>
143                                        </th>
144                                        <td  class="Title" title="Enter the main title for this query definition.">
145                                                <input id="title" name="title" maxlength="250" type="text"
146                                                        value="{
147                                                                if($QueryDefinition.isBlankQueryDefinition) 
148                                                                then concat($queryModule/TITLE, ' - ', $configuration/TITLE, ' (', $queryModule/REQUEST/SERIAL_NUMBER, ')')
149                                                                else $QueryDefinition.queryDefinition/TITLE
150                                                        }"
151                                                />
152                                        </td>
153                                </tr>
154
155                                <tr>
156                                        <th scope="row" title="This value is used as the user description for this query definiton.">
157                                                <label for="description">Description:</label>
158                                                <xsl:call-template name="Help.popup">
159                                                        <xsl:with-param name="title" select="'Description Field'"/>
160                                                        <xsl:with-param name="content" select="$HelpContent.queryDefinitionDescription"/>
161                                                        <xsl:with-param name="additionalClasses" select="'Inline'"/>
162                                                </xsl:call-template>
163                                        </th>
164                                        <td  class="Title" title="Enter the main title for this query definition.">
165                                                <textarea name="description" id="description" rows="5" cols="30">
166                                                        <xsl:value-of select="$QueryDefinition.queryDefinition/DESCRIPTION"/>
167                                                </textarea>
168                                        </td>
169                                </tr>
170
171                                <tr>
172                                        <th scope="row" title="check this if you want to keep your query definiton private.">
173                                                <label for="description">Keep Private:</label>
174                                                <xsl:call-template name="Help.popup">
175                                                        <xsl:with-param name="title" select="'Keep Definition Private Checkbox'"/>
176                                                        <xsl:with-param name="content" select="$HelpContent.queryDefinitionKeepPrivate"/>
177                                                        <xsl:with-param name="additionalClasses" select="'Inline'"/>
178                                                </xsl:call-template>
179                                        </th>
180                                        <td  class="Title" title="Enter the main title for this query definition.">
181                                                <input type="checkbox"  name="privateFlag" id="privateFlag" value="x">
182                                                        <xsl:if test="$QueryDefinition.queryDefinition/PRIVATE_FLAG">
183                                                                <xsl:attribute name="checked" select="'checked'"/>
184                                                        </xsl:if>
185                                                </input>
186                                        </td>
187                                </tr>
188
189                                <tr>
190                                        <th scope="row" title="Date this query definiton was created/last modified.">
191                                                Modified Date
192                                                <xsl:call-template name="Help.popup">
193                                                        <xsl:with-param name="title" select="'Last Modified Date'"/>
194                                                        <xsl:with-param name="content" select="$QueryDefinition.queryDefinition/MODIFIED_DATE"/>
195                                                        <xsl:with-param name="additionalClasses" select="'Inline'"/>
196                                                </xsl:call-template>
197                                        </th>
198                                        <td  class="Title" title="Enter the main title for this query definition.">
199                                                <xsl:value-of select="
200                                                        if($QueryDefinition.isBlankQueryDefinition) 
201                                                        then 'N/A - New Definition'
202                                                        else $QueryDefinition.queryDefinition/MODIFIED_DATE
203                                                "/>
204                                                <input id="modifiedDate" name="modifiedDate" type="hidden" value="{$QueryDefinition.queryDefinition/MODIFIED_DATE}"/>
205                                        </td>
206                                </tr>
207
208                        </table>
209                        <div class="Required">* = Required Input</div>
210                </form>
211        </xsl:template>
212
213
214        <xsl:template name="QueryDefinition.specificScript"
215                ibis:doc="Provides the javascript file links and submit related functions
216                        for the query module builder pages."
217        >
218                <script type="text/javascript">
219                        // <![CDATA[
220                        var queryDefinitionEditIdentityDialog = null;
221                        $(document).ready(function()
222                        {
223                                queryDefinitionEditIdentityDialog =
224                                        $("#queryDefinitionEditIdentityDialog").kendoWindow({
225                                                title: "Saved Query Definition"
226                                                ,visible: false
227                                                ,width: "800px"
228                                                ,resizable: true
229                                                ,modal: true
230                                        }).data("kendoWindow");
231
232                                $(function()
233                                {
234                                        $("#identityForm").submit(function(event)
235                                        {
236                                                event.preventDefault(); // Prevent the form from submitting via the browser
237                                                var form = $(this);
238                                                $.ajax
239                                                ({
240                                                        type:  form.attr("method")
241                                                        ,url:  form.attr("action")
242                                                        ,data: form.serialize()
243                                                        ,success: function(data) { alert("success!"); }
244                                                        ,error: function(data)
245                                                        {
246                                                                alert("Save Failed!");
247                                                                console.log("Query Definition Save Failed.  Data: ");
248                                                                console.log(data);
249                                                                console.log(data.responseText);
250                                                        }
251                                                });
252
253                                        });
254                                });
255
256                        }); //~~~~~~~~~~~~~~~~~~~~ End of Ready Function ~~~~~~~~~~~~~~~~~~~
257                        function showIdentityDialog()
258                        {
259                                queryDefinitionEditIdentityDialog.center().open();
260                                document.getElementById("name").focus();
261                        } //~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~
262
263                        var validNameCharactersRegEx = /^[a-z0-9_\-]+$/i; //    [A-Za-z0-9\-\_\.]*;
264                        function saveDefinition()
265                        {
266                                if(document.form.name.value.trim() < " ")
267                                {
268                                        alert("Name MUST be populated.  This value is the unique identifier that is used by the system to access this query definition.");
269                                        document.form.name.focus();
270                                        return(false);
271                                }
272                                else if(!validNameCharactersRegEx.test(document.form.name.value))
273                                {
274                                        alert("Name contains invalid characters.  Valid values are A-z, 0-9, '-', '_'");
275                                        document.form.name.focus();
276                                        return(false);
277                                }
278                                else if(document.form.title.value < " ")
279                                {
280                                        alert("Title MUST be populated.  This is the text you will see in your query definition selection list.");
281                                        document.form.title.focus();
282                                        return(false);
283                                }
284                                $("#identityForm").trigger("submit");
285                                queryDefinitionEditIdentityDialog.close();
286//                              location.reload();
287                        }
288                        // ]]>
289                </script>
290        </xsl:template>
291
292</xsl:stylesheet>
293<!-- ============================= End of File ============================= -->
294
Note: See TracBrowser for help on using the repository browser.