1{*
2 * $Revision: 17380 $
3 * Read this before changing templates!  http://codex.gallery2.org/Gallery2:Editing_Templates
4 *}
5<div class="{$class}">
6{if isset($message)}
7  <p class="giDescription"> {$message} </p>
8{/if}
9
10{include file="gallery:modules/core/templates/JavaScriptWarning.tpl"}
11
12{if isset($ThemeSettingsForm.customTemplate)}
13  {include file="gallery:`$ThemeSettingsForm.customTemplate`" l10Domain=$ThemeSettingsForm.theme.l10Domain}
14{/if}
15
16{if !empty($ThemeSettingsForm.settings)}
17  <table class="gbDataTable"><tr>
18    <th> {g->text text="Setting"} </th>
19    <th> {g->text text="Value"} </th>
20    <th> {g->text text="Use Global"} </th>
21  </tr>
22
23  {foreach from=$ThemeSettingsForm.settings item=setting}
24    {assign var="settingKey" value=$setting.key}
25    <tr class="{cycle values="gbEven,gbOdd"}">
26      <td>
27	{$setting.name}
28      </td><td>
29	{if ($setting.type == 'text-field')}
30	  <input type="text" size="{$setting.typeParams.size|default:6}"
31		 onchange="changeSetting('{$settingKey}')"
32		 name="{g->formVar var="form[key][$settingKey]"}" value="{$form.key.$settingKey}"/>
33	{elseif ($setting.type == 'textarea')}
34	  <textarea style="width:{$setting.typeParams.width|default:'400px'};height:{$setting.typeParams.height|default:'75px'};"
35	   name="{g->formVar var="form[key][$settingKey]"}">{$form.key[$settingKey]}</textarea>
36	{elseif ($setting.type == 'single-select')}
37	  <select name="{g->formVar var="form[key][$settingKey]"}"
38		  onchange="changeSetting('{$settingKey}')">
39	    {html_options options=$setting.choices selected=$form.key.$settingKey}
40	  </select>
41	{elseif ($setting.type == 'checkbox')}
42	  <input type="checkbox" onclick="changeSetting('{$settingKey}')"
43		 name="{g->formVar var="form[key][$settingKey]"}"
44	   {if !empty($form.key.$settingKey)} checked="checked"{/if}/>
45	{elseif ($setting.type == 'block-list')}
46	    <table>
47	      <tr>
48		<td style="text-align: right;">
49		  {g->text text="Available"}
50		</td>
51		<td>
52		  <select id="blocksAvailableList_{$setting.key}"
53		    onchange="bsw_selectToUse('{$setting.key}');">
54		    <option value="">{g->text text="Choose a block"}</option>
55		  </select>
56		</td>
57		<td class="bsw_BlockCommands">
58		  <span id="bsw_AddButton_{$setting.key}" onclick="bsw_addBlock('{$setting.key}');"
59		    class="bsw_ButtonDisabled">
60		    {g->text text="Add"}
61		  </span>
62		</td>
63	      </tr>
64
65	      <tr>
66		<td style="text-align: right; vertical-align: top;">
67		  {g->text text="Selected"}
68		</td>
69		<td id="bsw_UsedBlockList_{$setting.key}">
70		  <select id="blocksUsedList_{$setting.key}" size="10"
71		    onchange="bsw_selectToChange('{$setting.key}');">
72		    <option value=""></option> {* Dummy option so xhtml validates *}
73		  </select>
74		</td>
75		<td class="bsw_BlockCommands">
76		  <span style="display: block"
77		    id="bsw_RemoveButton_{$setting.key}"
78		    onclick="bsw_removeBlock('{$setting.key}');"
79		    class="bsw_ButtonDisabled">
80		    {g->text text="Remove"}
81		  </span>
82
83		  <span style="display: block"
84		    id="bsw_MoveUpButton_{$setting.key}"
85		    onclick="bsw_moveUp('{$setting.key}');"
86		    class="bsw_ButtonDisabled">
87		    {g->text text="Move Up"}
88		  </span>
89
90		  <span style="display: block"
91		    id="bsw_MoveDownButton_{$setting.key}"
92		    onclick="bsw_moveDown('{$setting.key}');"
93		    class="bsw_ButtonDisabled">
94		    {g->text text="Move Down"}
95		  </span>
96		</td>
97	      </tr>
98	      <tr>
99		<td id="bsw_BlockOptions_{$setting.key}" colspan="3">
100		</td>
101	      </tr>
102	    </table>
103
104	    <input type="hidden"
105		   onchange="changeSetting('{$settingKey}'); bsw_reInitAdminForm('{$settingKey}');"
106		   id="albumBlockValue_{$setting.key}" size="60"
107		   name="{g->formVar var="form[key][$settingKey]"}"
108		   value="{$form.key.$settingKey|replace:'"':'&quot;'}"/>
109
110	    <script type="text/javascript">
111	      // <![CDATA[
112	      var block;
113	      var tmp;
114	      {foreach from=$ThemeSettingsForm.availableBlocks key=moduleId item=blocks}
115		{foreach from=$blocks key=blockName item=block}
116		  block = bsw_addAvailableBlock("{$setting.key}", "{$moduleId}.{$blockName}",
117			  "{g->text text=$block.description l10Domain="modules_$moduleId" forJavascript=true}");
118		  {if !empty($block.vars)}
119		    {foreach from=$block.vars key=varKey item=varInfo}
120		      tmp = new Array();
121		      {if ($varInfo.type == 'choice')}
122			{foreach from=$varInfo.choices key=choiceKey item=choiceValue}
123			  tmp["{$choiceKey}"] = "{g->text text=$choiceValue
124							  l10Domain="modules_$moduleId" forJavascript=true}";
125			{/foreach}
126		      {/if}
127		      block.addVariable("{$varKey}", "{$varInfo.default}",
128			"{g->text text=$varInfo.description l10Domain="modules_$moduleId" forJavascript=true}",
129			"{$varInfo.type}", tmp);
130		      {if !empty($varInfo.overrides)}
131		      {foreach from=$varInfo.overrides item=override}
132		      block.addVariableOverride("{$varKey}", "{$override}");
133		      {/foreach}
134		      {/if}
135		    {/foreach}
136		  {/if}
137		{/foreach}
138	      {/foreach}
139	      {* Now initialize the form with the album block values *}
140	      bsw_initAdminForm("{$setting.key}", "{g->text text="Parameter" forJavascript=true}",
141						  "{g->text text="Value" forJavascript=true}");
142	      // ]]>
143	    </script>
144	{/if}
145      </td>
146
147      <td align="center">
148	<input type="checkbox" onclick="toggleGlobal('{$settingKey}');"
149	       name="{g->formVar var="form[useGlobal][$settingKey]"}"
150	 {if (!isset($ThemeSettingsForm.globalParams.$settingKey))}
151	   disabled="disabled"
152	 {elseif (!empty($form.useGlobal.$settingKey))}
153	   checked="checked"
154	 {/if}/>
155      </td>
156    </tr>
157
158    {if isset($form.error.key.$settingKey.invalid)}
159    <tr>
160      <td colspan="2" class="giError">
161	{$form.errorMessage.$settingKey}
162      </td>
163    </tr>
164    {/if}
165  {/foreach}
166  </table>
167{elseif !isset($ThemeSettingsForm.customTemplate)}
168  <b> {g->text text="There are no settings for this theme"} </b>
169{/if}
170</div>
171
172<script type="text/javascript">
173  // <![CDATA[
174  var isSaved = new Array;
175  var savedValues = new Array;
176  var globalValues = new Array;
177
178  {*
179   * Convert " to &quot; so that Javascript can parse embedded quotes in the
180   * the data.  Convert \ to \\ so that when we move this value around the
181   * backslash is preserved (else \" turns into ").
182   *}
183  {foreach from=$ThemeSettingsForm.globalParams key=key item=value}
184    globalValues['{$key}'] = "{$value|replace:'"':'&quot;'|replace:'\\':'\\\\'}";
185  {/foreach}
186
187  {* Undo the quotes coercion here in Javascript so that we have the correct data *}
188  globalValues['albumBlocks'] = globalValues['albumBlocks'].replace(/&quot;/g, '"');
189  globalValues['photoBlocks'] = globalValues['photoBlocks'].replace(/&quot;/g, '"');
190  globalValues['sidebarBlocks'] = globalValues['sidebarBlocks'].replace(/&quot;/g, '"');
191
192  function toggleGlobal(key) {ldelim}
193    var frm = document.getElementById('{$formId}');
194    inputWidget = frm.elements['{g->formVar var="form[key]["}' + key + ']'];
195    toggleWidget = frm.elements['{g->formVar var="form[useGlobal]["}' + key + ']'];
196    {literal}
197    if (toggleWidget.checked) {
198      savedValues[key] = inputWidget.value;
199      isSaved[key] = true;
200      if (inputWidget.type == 'checkbox') {
201	if (globalValues[key] != 0) {
202	  inputWidget.checked = 'checked';
203	} else {
204	  inputWidget.checked = null;
205	}
206      } else {
207	inputWidget.value = globalValues[key];
208      }
209    } else {
210      if (inputWidget.type == 'checkbox') {
211	if (globalValues[key] == 0) {
212	  inputWidget.checked = 'checked';
213	} else {
214	  inputWidget.checked = null;
215	}
216      } else if (isSaved[key]) {
217	inputWidget.value = savedValues[key];
218      }
219    }
220    if (inputWidget.type != 'checkbox') inputWidget.onchange();
221    bsw_showBlockOptions(key);
222  }
223
224  function changeSetting(key) {
225    {/literal}
226    var frm = document.getElementById('{$formId}');
227    inputWidget = frm.elements['{g->formVar var="form[key]["}' + key + ']'];
228    toggleWidget = frm.elements['{g->formVar var="form[useGlobal]["}' + key + ']'];
229    {literal}
230    if (inputWidget.type == 'checkbox') {
231      toggleWidget.checked = ((globalValues[key] == 0 && !inputWidget.checked) ||
232			      (globalValues[key] == 1 && inputWidget.checked));
233    } else {
234      toggleWidget.checked = (inputWidget.value == globalValues[key]);
235    }
236  }
237  {/literal}
238  // ]]>
239</script>
240