Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/10/2006, 14h44   #1
Membre du Club
 
Inscription : mai 2004
Messages : 143
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 143
Points : 45
Points : 45
Par défaut Liste de news par ordre de date

Bonjour,

J'aurais besoins de l'aide de pro en ASP pour m'aider à améliorer un script qui fonctionne déjà très bien.

Ce script met à jour une liste de news dans une colonne à droite de toutes les pages de news et met à jour la liste des 5 dernières nouvelles les plus récentes dans le home page et ceci autant en anglais qu'en français.

Mon problème est que le script ne prends pas en charges les caractères spéciaux comme un MD en exposant (français du TM) et d'autres caractères que je dois mettre en CSS pour être conforme à la sémantique d'un nom par exemple. Le script arrête d'inscrire le titre de la news dès qu'il rencontre une tag <sup> ou <span> ou une autre tag.

Il y a t-il moyen de faire accepter certaine tags ou qu'il accepte n'importe quoi tant qu'il ne rencontre pas sa propre tag de fermeture ou même une autre astuce ?

Voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
 
<% @language = Jscript %>
<!--#include virtual="/admin/includes/security.asp" -->
<%
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var arrNewsFolders = new Array();
var arrHomepageNews = new Array();
 
function getNewsFolders()
{
	var thisFolderPath = (oFSO.GetFile(Server.MapPath(Request.ServerVariables("PATH_INFO")))).parentfolder;
	var thisFolder = oFSO.getFolder(thisFolderPath);
	for (var e = new Enumerator(thisFolder.subFolders); !e.atEnd(); e.moveNext())
	{
		if (isValidYear(e.item().name))
		{
			arrNewsFolders[arrNewsFolders.length] = e.item();
		}
	}
	arrNewsFolders.sort();
	arrNewsFolders.reverse();
	for (i = 0; i< arrNewsFolders.length; i++)
	{
		getNewsFiles(arrNewsFolders[i]);
	}
}
 
function getNewsFiles(f)
{
	var arrNewsItems = new Array();
	var oFolder = oFSO.getFolder(f);
	//Response.write(oFolder);
	for (var e = new Enumerator(oFolder.Files); !e.atEnd(); e.moveNext())
	{
		if (isValidNewsFileName(e.item().name))
		{
			arrNewsItems[arrNewsItems.length] = e.item();
		}
	}
	arrNewsItems.sort()
	arrNewsItems.reverse()
	var arrNewsItemsData = new Array();
	for (var j = 0; j <  arrNewsItems.length; j++)
	{
		arrNewsItemsData[j] = new Array(5); /*strFileName, strTitle, intYear, intMonth, intDay,  */
		arrNewsItemsData[arrNewsItemsData.length-1][0] = arrNewsItems[j].name; //fileName
		arrNewsItemsData[arrNewsItemsData.length-1][1] = getNewsItemTitle(arrNewsItems[j]); //title
		var arrDate = getDateFromNewsItemFileName(arrNewsItems[j].name);
		arrNewsItemsData[arrNewsItemsData.length-1][2] = arrDate[1]; //year
		arrNewsItemsData[arrNewsItemsData.length-1][3] = arrDate[2]; //month
		arrNewsItemsData[arrNewsItemsData.length-1][4] = arrDate[3]; //day
	}
 
	var rgxToc = /<newstoc>[\W\w\s]*<\/newstoc>/;
	var strYears = generateOtherYearsLink();
	for (var j = 0; j <  arrNewsItemsData.length; j++)
	{
		oFile = oFSO.OpenTextFile(arrNewsItems[j].path, 1, false, 0);
		var strFile = new String(oFile.readAll());
		//Response.write('strFile.length:' + strFile.length + '<br />');
		oFile.close();
		var strNew = new String('');
		strNew += strYears;
		for (var k = 0 ; k < arrNewsItemsData.length; k++)
		{	
			strNew += '<p class="newsTocTitle"><img src="/images/icons/arrow_yellow.gif" width="12" height="12">'
			strNew += (k != j) ? '<a href="/fr/04/01/' + f.name + '/' + arrNewsItemsData[k][0] + '">' : '<i>';
			strNew += arrNewsItemsData[k][1];
			strNew += (k != j) ? '</a>' : '</i>';
			strNew += '<br/><span class="newsTocDate">' + arrNewsItemsData[k][4] + ' ' + monthToString(arrNewsItemsData[k][3]) + ' ' + arrNewsItemsData[k][2] + '</span></p>';
			if (arrHomepageNews.length < 5) 
			{
				arrHomepageNews[arrHomepageNews.length] = '<p class="newsTocTitle"><a href="/fr/04/01/' + f.name + '/' + arrNewsItemsData[k][0] + '">' + arrNewsItemsData[k][1] + '</a><br/><span class="newsTocDate">' + arrNewsItemsData[k][4] + ' ' + monthToString(arrNewsItemsData[k][3]) + ' ' + arrNewsItemsData[k][2] + '</span></p>';
			}
		}
		//Response.write(rgxToc.test(strFile) + '<br />')
		//Response.write('strNew.length:' + strNew.length + '<br />');
		oFile = oFSO.OpenTextFile(arrNewsItems[j].path, 2, false, 0);
		//Response.write(arrNewsItems[j].path + '<br />');
		strFile = strFile.replace(rgxToc, '<newstoc>' + strNew + '</newstoc>');
		//Response.write('strFile.length:' + strFile.length + '<hr />');
		oFile.Write(strFile);
		oFile.Close();
	}
	Response.write(f.path + '\\toc.asp' + '<br />')
	Response.write(oFolder.name + ' - ' + arrNewsItemsData.length + ' news files');
	Response.write('<hr>');
	//set toc.asp
	oFile = oFSO.OpenTextFile(f.path + '/default.asp', 2, true, 0);
	oFile.write('<');
	oFile.write('%');
	oFile.writeLine('response.redirect "' + arrNewsItemsData[0][0] + '"');
	oFile.write('%');
	oFile.write('>');
	oFile.close();
	if (i == 0) {
		oFile = oFSO.OpenTextFile(oFSO.GetParentFolderName(f) + '/default.asp', 2, true, 0);
		oFile.write('<');
		oFile.write('%');
		oFile.writeLine('response.redirect "' + oFolder.name + "/" + arrNewsItemsData[0][0] + '"');
		oFile.write('%');
		oFile.write('>');
		oFile.close();
	}
}
 
function generateOtherYearsLink()
{
	var strReturn = new String('<p>');
	for (var m = 0; m < arrNewsFolders.length; m++)
	{
		if (i==m) strReturn += '<span class="curentYear">' + arrNewsFolders[m].name + '</span> ';
		else strReturn += '<a href="/fr/04/01/' + arrNewsFolders[m].name + '">' + arrNewsFolders[m].name + '</a> ';
 
		if (m < arrNewsFolders.length-1) strReturn += '| ';
	}
	return strReturn;
}
 
function getNewsItemTitle(f)
{
	var strHTML = new String();
	strHTML = oFSO.OpenTextFile(f.path, 1, false, 0).ReadAll();
	var rgx = /<span class="newsTitle">([^<]+)/i;
	var arrTitle = rgx.exec(strHTML);
	if (arrTitle != null) return arrTitle[1];
	else return 'title';
}
 
function isValidYear(str)
{
	var rgx = /^\d{4}$/;
	return rgx.test(str);
}
 
function isValidNewsFileName(str)
{
	//	new_yyyymmdd-n.asp
	var rgx = /^news_\d{8}[-\w\d]*\.asp/i;
	return rgx.test(str);
}
 
function getDateFromNewsItemFileName(str) {
	var rgx = /(\d{4})(\d{2})(\d{2})/;
	return rgx.exec(str);
}
 
function monthToString(n)
{
	n = parseInt(n, 10);
	var mnts = new Array(null, 'janvier', 'f&eacute;vrier', 'mars', 'avril', 'mai', 'juin', 'juillet', 'ao&ucirc;t', 'septembre', 'octobre', 'novembre', 'd&eacute;cembre');
	return mnts[n];
}
 
function putHomepageNews()
{
	var rgxNews1 = /<news1>[\W\w]*<\/news1>/i;
	var rgxNews2 = /<news2>[\W\w]*<\/news2>/i;
	var rgxNews3 = /<news3>[\W\w]*<\/news3>/i;
	var rgxNews4 = /<news4>[\W\w]*<\/news4>/i;
	var rgxNews5 = /<news5>[\W\w]*<\/news5>/i;
	//clients
	var objHomepage = oFSO.OpenTextFile(Server.mappath('/fr/default.asp'), 1, false, 0)
	var strHomepage = objHomepage.ReadAll();
	objHomepage.Close();
	if (rgxNews1.test(strHomepage))
	{
		strHomepage = strHomepage.replace(rgxNews1, '<news1>'+arrHomepageNews[0]+'</news1>');
	}
	if (rgxNews2.test(strHomepage))
	{
		strHomepage = strHomepage.replace(rgxNews2, '<news2>'+arrHomepageNews[1]+'</news2>');
	}
	if (rgxNews3.test(strHomepage))
	{
		strHomepage = strHomepage.replace(rgxNews3, '<news3>'+arrHomepageNews[2]+'</news3>');
	}
	if (rgxNews4.test(strHomepage))
	{
		strHomepage = strHomepage.replace(rgxNews4, '<news4>'+arrHomepageNews[3]+'</news4>');
	}
	if (rgxNews5.test(strHomepage))
	{
		strHomepage = strHomepage.replace(rgxNews5, '<news5>'+arrHomepageNews[4]+'</news5>');
	}	
	objHomepage = oFSO.OpenTextFile(Server.mappath('/fr/default.asp'), 2, false, 0);
	objHomepage.Write(strHomepage);
	objHomepage.Close();
 
	//rep
	objHomepage = oFSO.OpenTextFile(Server.mappath('/fr/rep_home/default.asp'), 1, false, 0)
	strHomepage = objHomepage.ReadAll();
	objHomepage.Close();
	if (rgxNews1.test(strHomepage))
	{
		strHomepage = strHomepage.replace(rgxNews1, '<news1>'+arrHomepageNews[0]+'</news1>');
	}
	if (rgxNews2.test(strHomepage))
	{
		strHomepage = strHomepage.replace(rgxNews2, '<news2>'+arrHomepageNews[1]+'</news2>');
	}
	if (rgxNews3.test(strHomepage))
	{
		strHomepage = strHomepage.replace(rgxNews3, '<news3>'+arrHomepageNews[2]+'</news3>');
	}
	if (rgxNews4.test(strHomepage))
	{
		strHomepage = strHomepage.replace(rgxNews4, '<news4>'+arrHomepageNews[3]+'</news4>');
	}
	if (rgxNews5.test(strHomepage))
	{
		strHomepage = strHomepage.replace(rgxNews5, '<news5>'+arrHomepageNews[4]+'</news5>');
	}
	objHomepage = oFSO.OpenTextFile(Server.mappath('/fr/rep_home/default.asp'), 2, false, 0);
	objHomepage.Write(strHomepage);
	objHomepage.Close();
}
 
getNewsFolders();
putHomepageNews();
Response.write(arrHomepageNews[0]);
Response.write(arrHomepageNews[1]);
Response.write(arrHomepageNews[2]);
Response.write(arrHomepageNews[3]);
Response.write(arrHomepageNews[4]);
oFSO = null;
%>
SVP de l'aide ...
sperron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2006, 17h37   #2
Membre du Club
 
Inscription : mai 2004
Messages : 143
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 143
Points : 45
Points : 45

Il y a vraiment personne qui peut m'aider ?
sperron est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h06.


 
 
 
 
Partenaires

Hébergement Web