1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<!--
3 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
4 * Copyright (C) 2003-2007 Frederico Caldeira Knabben
5 *
6 * == BEGIN LICENSE ==
7 *
8 * Licensed under the terms of any of the following licenses at your
9 * choice:
10 *
11 *  - GNU General Public License Version 2 or later (the "GPL")
12 *    http://www.gnu.org/licenses/gpl.html
13 *
14 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
15 *    http://www.gnu.org/licenses/lgpl.html
16 *
17 *  - Mozilla Public License Version 1.1 or later (the "MPL")
18 *    http://www.mozilla.org/MPL/MPL-1.1.html
19 *
20 * == END LICENSE ==
21 *
22 * Template selection dialog window.
23-->
24<html xmlns="http://www.w3.org/1999/xhtml">
25<head>
26	<title></title>
27	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
28	<meta name="robots" content="noindex, nofollow" />
29	<style type="text/css">
30			.TplList
31			{
32				border: #dcdcdc 2px solid;
33				background-color: #ffffff;
34				overflow: auto;
35				width: 90%;
36			}
37
38			.TplItem
39			{
40				margin: 5px;
41				padding: 7px;
42				border: #eeeeee 1px solid;
43			}
44
45			.TplItem TABLE
46			{
47				display: inline;
48			}
49
50			.TplTitle
51			{
52				font-weight: bold;
53			}
54		</style>
55	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
56	<script type="text/javascript">
57
58var oEditor		= window.parent.InnerDialogLoaded() ;
59var FCK			= oEditor.FCK ;
60var FCKLang		= oEditor.FCKLang ;
61var FCKConfig	= oEditor.FCKConfig ;
62
63window.onload = function()
64{
65	// Set the right box height (browser dependent).
66	GetE('eList').style.height = document.all ? '100%' : '295px' ;
67
68	// Translate the dialog box texts.
69	oEditor.FCKLanguageManager.TranslatePage(document) ;
70
71	GetE('xChkReplaceAll').checked = ( FCKConfig.TemplateReplaceAll !== false ) ;
72
73	if ( FCKConfig.TemplateReplaceCheckbox !== false )
74		GetE('xReplaceBlock').style.display = '' ;
75
76	window.parent.SetAutoSize( true ) ;
77
78	LoadTemplatesXml() ;
79}
80
81function LoadTemplatesXml()
82{
83	var oTemplate ;
84
85	if ( !FCK._Templates )
86	{
87		GetE('eLoading').style.display = '' ;
88
89		// Create the Templates array.
90		FCK._Templates = new Array() ;
91
92		// Load the XML file.
93		var oXml = new oEditor.FCKXml() ;
94		oXml.LoadUrl( FCKConfig.TemplatesXmlPath ) ;
95
96		// Get the Images Base Path.
97		var oAtt = oXml.SelectSingleNode( 'Templates/@imagesBasePath' ) ;
98		var sImagesBasePath = oAtt ? oAtt.value : '' ;
99
100		// Get the "Template" nodes defined in the XML file.
101		var aTplNodes = oXml.SelectNodes( 'Templates/Template' ) ;
102
103		for ( var i = 0 ; i < aTplNodes.length ; i++ )
104		{
105			var oNode = aTplNodes[i] ;
106
107			oTemplate = new Object() ;
108
109			var oPart ;
110
111			// Get the Template Title.
112			if ( (oPart = oNode.attributes.getNamedItem('title')) )
113				oTemplate.Title = oPart.value ;
114			else
115				oTemplate.Title = 'Template ' + ( i + 1 ) ;
116
117			// Get the Template Description.
118			if ( (oPart = oXml.SelectSingleNode( 'Description', oNode )) )
119				oTemplate.Description = oPart.text ? oPart.text : oPart.textContent ;
120
121			// Get the Template Image.
122			if ( (oPart = oNode.attributes.getNamedItem('image')) )
123				oTemplate.Image = sImagesBasePath + oPart.value ;
124
125			// Get the Template HTML.
126			if ( (oPart = oXml.SelectSingleNode( 'Html', oNode )) )
127				oTemplate.Html = oPart.text ? oPart.text : oPart.textContent ;
128			else
129			{
130				alert( 'No HTML defined for template index ' + i + '. Please review the "' + FCKConfig.TemplatesXmlPath + '" file.' ) ;
131				continue ;
132			}
133
134			FCK._Templates[ FCK._Templates.length ] = oTemplate ;
135		}
136
137		GetE('eLoading').style.display = 'none' ;
138	}
139
140	if ( FCK._Templates.length == 0 )
141		GetE('eEmpty').style.display = '' ;
142	else
143	{
144		for ( var j = 0 ; j < FCK._Templates.length ; j++ )
145		{
146			oTemplate = FCK._Templates[j] ;
147
148			var oItemDiv = GetE('eList').appendChild( document.createElement( 'DIV' ) ) ;
149			oItemDiv.TplIndex = j ;
150			oItemDiv.className = 'TplItem' ;
151
152			// Build the inner HTML of our new item DIV.
153			var sInner = '<table><tr>' ;
154
155			if ( oTemplate.Image )
156				sInner += '<td valign="top"><img src="' + oTemplate.Image + '"><\/td>' ;
157
158			sInner += '<td valign="top"><div class="TplTitle">' + oTemplate.Title + '<\/div>' ;
159
160			if ( oTemplate.Description )
161				sInner += '<div>' + oTemplate.Description + '<\/div>' ;
162
163			sInner += '<\/td><\/tr><\/table>' ;
164
165			oItemDiv.innerHTML = sInner ;
166
167			oItemDiv.onmouseover = ItemDiv_OnMouseOver ;
168			oItemDiv.onmouseout = ItemDiv_OnMouseOut ;
169			oItemDiv.onclick = ItemDiv_OnClick ;
170		}
171	}
172}
173
174function ItemDiv_OnMouseOver()
175{
176	this.className += ' PopupSelectionBox' ;
177}
178
179function ItemDiv_OnMouseOut()
180{
181	this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ;
182}
183
184function ItemDiv_OnClick()
185{
186	SelectTemplate( this.TplIndex ) ;
187}
188
189function SelectTemplate( index )
190{
191	oEditor.FCKUndo.SaveUndoStep() ;
192
193	if ( GetE('xChkReplaceAll').checked )
194		FCK.SetData( FCK._Templates[index].Html ) ;
195	else
196		FCK.InsertHtml( FCK._Templates[index].Html ) ;
197
198	window.parent.Cancel( true ) ;
199}
200
201	</script>
202</head>
203<body style="overflow: hidden">
204	<table width="100%" style="height: 100%">
205		<tr>
206			<td align="center">
207				<span fcklang="DlgTemplatesSelMsg">Please select the template to open in the editor<br />
208					(the actual contents will be lost):</span>
209			</td>
210		</tr>
211		<tr>
212			<td height="100%" align="center">
213				<div id="eList" align="left" class="TplList">
214					<div id="eLoading" align="center" style="display: none">
215						<br />
216						<span fcklang="DlgTemplatesLoading">Loading templates list. Please wait...</span>
217					</div>
218					<div id="eEmpty" align="center" style="display: none">
219						<br />
220						<span fcklang="DlgTemplatesNoTpl">(No templates defined)</span>
221					</div>
222				</div>
223			</td>
224		</tr>
225		<tr id="xReplaceBlock" style="display: none">
226			<td>
227				<table cellpadding="0" cellspacing="0">
228					<tr>
229						<td>
230							<input id="xChkReplaceAll" type="checkbox" /></td>
231						<td>
232							&nbsp;</td>
233						<td>
234							<label for="xChkReplaceAll" fcklang="DlgTemplatesReplace">
235								Replace actual contents</label></td>
236					</tr>
237				</table>
238			</td>
239		</tr>
240	</table>
241</body>
242</html>
243