Вставить в Breeze функцию из другого шаблона ?

Добавление новых сайтов в Movienizer. Индивидуальная настройка программы.
Grotesque
Extra
Posts: 33
Joined: Fri Jan 15, 2016 11:47 am

Вставить в Breeze функцию из другого шаблона ?

Post by Grotesque » Wed Jan 20, 2016 6:52 pm

Хочу научить Breeze показывать флаги стран. В шаблоне Jef это есть. Хочу скопировать функцию из jef_program_variables в breeze_program_variables. Но при копировании этого куска Breeze более не запускается. Почему? Что можно сделать, чтобы адаптировать этот кусок?

Code: Select all

function GetFlagTag(Country: string): string;
var
	FlagTag, FlagName, ImgFileName: string;
begin
	FlagTag:='';
	FlagName:=Country;
	
	ImgFileName:=GetRscPath('flags\' +FlagName+ '.gif');
	if NOT (MyFileExists(ImgFileName)) then begin
		if (pos(FlagName,'Allemagne de l''Ouest')>0) then FlagName:='Germany'
		else if (pos(FlagName,'Grande-Bretagne,Angleterre')>0) then FlagName:='uk'
		else if (pos(Uppercase(FlagName),UpperCase('Etats-Unis'))>0) then FlagName:='usa'
		else if (pos(FlagName,'Italie')>0) then FlagName:='Italy'
		else if (pos(FlagName,'Japon')>0) then FlagName:='Japan';
	end;
	
	ImgFileName:=GetRscPath('flags\' +FlagName+ '.gif');
	if(MyFileExists(ImgFileName)) then
		FlagTag:=format('<img style="vertical-align:middle;" src="%s" height=17 border=0 alt="%s" />', [ImgFileName, Country]);
	result:=FlagTag;
end;

User avatar
Vlad
Developer
Posts: 2959
Joined: Wed Jan 23, 2008 11:37 am

Re: Вставить в Breeze функцию из другого шаблона ?

Post by Vlad » Thu Jan 21, 2016 1:59 pm

Скорее всего, такой функции в Breeze нет:

Code: Select all

GetRscPath
А она вызывается.

Ну и данная функция прописана для французского языка.
ImageImage

Grotesque
Extra
Posts: 33
Joined: Fri Jan 15, 2016 11:47 am

Re: Вставить в Breeze функцию из другого шаблона ?

Post by Grotesque » Thu Jan 21, 2016 8:36 pm

Ну а можно ли ее чем-то заменить?

TerribleFloater
Superstar
Posts: 1925
Joined: Thu Feb 28, 2008 4:20 pm

Re: Вставить в Breeze функцию из другого шаблона ?

Post by TerribleFloater » Fri Jan 22, 2016 9:34 pm

Аналогичной функцией GetImageFileName, наверное?
Хочу: чёрные списки, пол людей, пользовательские поля изданий.
Кинопоиск: Image ПлюсКинопоиск: Image

Grotesque
Extra
Posts: 33
Joined: Fri Jan 15, 2016 11:47 am

Re: Вставить в Breeze функцию из другого шаблона ?

Post by Grotesque » Wed Jan 27, 2016 2:09 pm

Спасибо! Так скрипт продолжает работать. Но возникло следующее затруднение. Теперь непосредственно с подстановкой GetFlagTag в таблицу, где название страны. Файл breeze_program_part2. Вот эти две строчки в середине (даже одну первую) из jef_program_getmovie он отказывается понимать. Почему?

//'Countries: '
ThisBlockCnt := ThisBlockCnt + 1;
if (ThisBlockCnt mod 2 = 1) then
border := bckgrnd
else
border := '';
all := all + Format('<tr><td class="small-table-name"%s>%s</td><!-- <td class="middle-cell"></td> --><td class="small-table-value"%s>', [border, GetLangStr(73), border]);
country := '';
for i:=1 to RecordCount do begin
s:=GetFlagTag(GetStringField('m.name'));
if (s>'') then country:=country+format('<a href="country:%d">',[GetIntegerField('m.code')])+s+'</a> ' ;

country:=country+format('<a href="country:%d">%s</a> / ', [GetIntegerField('m.code'), GetStringField('m.name')]);
GetNextRecord;
end;
country:=copy(country, 1, length(country)-3);
all:=all + country + '</td></tr>';
end;

User avatar
Vlad
Developer
Posts: 2959
Joined: Wed Jan 23, 2008 11:37 am

Re: Вставить в Breeze функцию из другого шаблона ?

Post by Vlad » Thu Jan 28, 2016 4:18 pm

А в каком файле находится функция GetFlagTag?
ImageImage

Grotesque
Extra
Posts: 33
Joined: Fri Jan 15, 2016 11:47 am

Re: Вставить в Breeze функцию из другого шаблона ?

Post by Grotesque » Thu Jan 28, 2016 5:18 pm

Эта функция находится в файле jef_program_variables. Я ее перенес в breeze_program_variables.

TerribleFloater
Superstar
Posts: 1925
Joined: Thu Feb 28, 2008 4:20 pm

Re: Вставить в Breeze функцию из другого шаблона ?

Post by TerribleFloater » Fri Jan 29, 2016 8:44 pm

Grotesque wrote:s:=GetFlagTag(GetStringField('m.name'));
У Джефа алиас m (для таблицы movies) где-то объявлен; в бризе — возможно, что и нет. Попробуйте заменить здесь и ниже "m." на "movies.", явно обратившись к этой таблице.
Хочу: чёрные списки, пол людей, пользовательские поля изданий.
Кинопоиск: Image ПлюсКинопоиск: Image

Grotesque
Extra
Posts: 33
Joined: Fri Jan 15, 2016 11:47 am

Re: Вставить в Breeze функцию из другого шаблона ?

Post by Grotesque » Fri Jan 29, 2016 9:33 pm

Ох, все гораздо хуже. Подстановка функции GetImageFileName на самом деле не помогла — скрипт продолжал брать данные из файла COMP, который я тогда забыл удалить. Так что перенос функции показа флагов от Джефа не получился. :(

Grotesque
Extra
Posts: 33
Joined: Fri Jan 15, 2016 11:47 am

Re: Вставить в Breeze функцию из другого шаблона ?

Post by Grotesque » Sun Jan 01, 2017 6:34 pm

Решил всё-таки вернуться к этой теме: я пытаюсь заставить Breeze показывать флаги стран, как это реализовано у Jef.

У Джефа я нашёл эту функцию в двух файлах: jef_program_variables.pas (собственно функция) и jef_program_getmovie.pas (активация этой функции на странице фильма). Стал переносить функции в breeze_program_variables.pas: поначалу ничего не запускалось, но в итоге удалось скопировать все функции, на которые ссылается данный процесс.

Это две функции: GetFlagTag и GetRscPath — добавлены в список функций breeze_program_variables.pas

Code: Select all

function GetRscPath(RscName: string): string;
begin
	if (jRscPath.IndexOfName(RscName)<>-1) 
		then result:=jRscPath.Values[RscName]
	else if MyFileExists(jThmCustomPath+RscName) then begin
		jRscPath.Values[RscName]:=jThmCustomPath+RscName;
		result:=jRscPath.Values[RscName];
	end
	else if MyFileExists(jThmPictPath+RscName) then begin
		jRscPath.Values[RscName]:=jThmPictPath+RscName;
		result:=jRscPath.Values[RscName];
	end
	else if MyFileExists(PicturesPath+'Themes\Original\img\'+RscName) then begin
		jRscPath.Values[RscName]:=jOriginalPictPath+RscName;
		result:=jRscPath.Values[RscName];
	end
	else if MyFileExists(PicturesPath+RscName) then begin
		jRscPath.Values[RscName]:=PicturesPath+RscName;
		result:=jRscPath.Values[RscName];
	end
	else result:='NotFound.png';
end;


function GetFlagTag(Country: string): string;
var
   FlagTag, FlagName, ImgFileName: string;
begin
   FlagTag:='';
   FlagName:=Country;
   
   ImgFileName:=GetRscPath('flags\' +FlagName+ '.gif');
   if NOT (MyFileExists(ImgFileName)) then begin
      if (pos(FlagName,'Allemagne de l''Ouest')>0) then FlagName:='Germany'
      else if (pos(FlagName,'Grande-Bretagne,Angleterre')>0) then FlagName:='uk'
      else if (pos(Uppercase(FlagName),UpperCase('Etats-Unis'))>0) then FlagName:='usa'
      else if (pos(FlagName,'Italie')>0) then FlagName:='Italy'
      else if (pos(FlagName,'Japon')>0) then FlagName:='Japan';
   end;
   
   ImgFileName:=GetRscPath('flags\' +FlagName+ '.gif');
   if(MyFileExists(ImgFileName)) then
      FlagTag:=format('<img style="vertical-align:middle;" src="%s" height=17 border=0 alt="%s" />', [ImgFileName, Country]);
   result:=FlagTag;
end;
В начале документа добавил ещё две строчки из файла Джефа:

Code: Select all

jOriginalThemePath, jOriginalPictPath, jThmPath, jThmPictPath, jThmCustomPath, jThmCssList, jEpRootDir: string;
jXFvars, jSqlStrings, jBuildPage, jFileList, jRscPath, jDialogs: TStringList;
После этого всё стало запускаться!

Затем в файл breeze_program_part2.pas добавил то, что у Джефа прописано в файле jef_program_getmovie.pas:
s:=GetFlagTag(GetStringField('m.name'));
if (s>'') then country:=country+format('<a href="country:%d">',[GetIntegerField('m.code')])+s+'</a> ' ; // 20090703-JeF

Получилось так:

Code: Select all

//countries
		with sl do begin
			Clear;
			Add('select m.code, m.name from movies_manuals mm');
			Add('join manuals m on m.code=mm.ref_code');//and m.reference=mm.reference надо ли???
			Add(format('where mm.movie=%d and m.reference=9', [MovieCode]));
			//Add('order by m.name');
		end;
		RecordCount:=ExecuteSQL(sl.text);

		if RecordCount>0 then begin
			//'Countries: '
			ThisBlockCnt := ThisBlockCnt + 1;
			if (ThisBlockCnt mod 2 = 1) then
				border := bckgrnd
			else
				border := '';
			all := all + Format('<tr><td class="small-table-name"%s>%s</td><!-- <td class="middle-cell"></td> --><td class="small-table-value"%s>', [border, GetLangStr(73), border]);
			country := '';
			for i:=1 to RecordCount do begin
s:=GetFlagTag(GetStringField('m.name'));
if (s>'') then 
country:=country+format('<a href="country:%d">',[GetIntegerField('m.code')])+s+'</a> ' ;    // 20090703-JeF
				country:=country+format('<a href="country:%d">%s</a> / ', [GetIntegerField('m.code'), GetStringField('m.name')]);
				GetNextRecord;
			end;
			country:=copy(country, 1, length(country)-3);
			all:=all + country + '</td></tr>';
		end;
По прежнему всё запускается, но нет никакого эффекта: никаких флагов не появилось, как будто ничего и не делалось. Что ещё можно предпринять, чтобы заставить это работать? Я очень слабо разбираюсь в этих вещах... но сделать хочется! Может, кому-то будет интересно разобраться...

В конце файла jef_program_getmovie.pas есть ещё такая строчка:

Code: Select all

else if (tag='country') and (country>'') then info:='<tr><td class="Name">'+GetLangStr(73)+'</td><td>'+copy(country,pos(':',country)+2,length(country))+'</td></tr>'
Но я не знаю как её адаптировать... и нужно ли?

Post Reply