|
Название | LinkPath |
Имя файла (*.txt) | LinkPath.txt |
Описание | Помещает в буфер ссылку на заданный файл относительно текущего пути |
Автор | Вахмурка |
Параметры | "%P", "%T", "%M" |
Вызываемые плагины | miscplugin, clip |
Иконка | |
Версия | 2.0 |
Дата обновления | 26.01.2006 |
args P, T, M local Result, i, BegP, BegT local Bef = "<a href=" local Aft = "></a>" if(P == T) do Result = Bef ++ M ++ Aft clip.set(Result) quit endif ;Sub_ParsePath - имя скрипта ParsePath local SourceDepth = runfile.Subs\Sub_ParsePath(P, "") local TargetDepth = runfile.Subs\Sub_ParsePath(T, "") if(index(P, T) != 0) do Result = Bef ++ repeat("../", SourceDepth - TargetDepth) ++ M ++ Aft clip.set(Result) quit endif if(index(T, P) != 0) do Result = Bef ++ select(T, length(P) - length(T)) ++ M ++ Aft clip.set(Result) quit endif local Lim = min(SourceDepth, TargetDepth) local Counter = 0 for(i = 1; i <= Lim; i = i + 1) Result = BegP BegP = runfile.Subs\Sub_ParsePath(P, i - SourceDepth) BegT = runfile.Subs\Sub_ParsePath(T, i - TargetDepth) if(BegP == "" || BegT == "") break if(BegP == BegT) do Counter = Counter + 1 else break endif endfor if(Counter == 0) do local mpDlgCaption = "LinkPath Script" local mpIcon = "WARNING" local mpDlgText = "Source path is " ++ P ++ "\nTarget file is " ++ T ++ M mpDlgText = mpDlgText ++ "\nThey seem to be on different logical disks!" miscplugin.messagebox(1, "&OK") quit endif Result = repeat("../", SourceDepth - Counter) Result = Result ++ runfile.Subs\Sub_ParsePath(T, TargetDepth - Counter) ++ "/" Result = Bef ++ replacechars(Result, "\", "/") ++ M ++ Aft clip.set(Result)
Скрипт может оказаться полезным для веб-дизайнеров, которым приходится вставлять в странички ссылки на файлы, находящиеся в различных директориях относительно текущей.
Здесь и далее предполагается, что черновик веб-странички находится в текущей директории на активной панели. В противоположной панели нужно установить курсор на файл, ссылку на который необходимо получить ("целевой файл"). Разумеется, после этого курсор следует вернуть в исходную панель.
Пусть веб-страничка имеет следующее полное имя:
c:\One\Two\Three\Source.html
Помещаемые в буфер обмена ссылкы при различных путях целевого файла Target.html представлены в таблице:
Полный путь целевого файла | Результат |
c:\One\Target.html | <a href=../../Target.html></a> |
c:\One\Two\Three\Target.html | <a href=Target.html></a> |
c:\Four\Five\Six\Target.html | <a href=../../../Four/Five/Six/Target.html></a> |
d:\Seven\Eight\Target.html | Ошибка! |
Ошибка в последнем случае вызвана тем, что страничка и целевой файл находятся на разных логических дисках.
После запуска скрипта необходимо перейти в редактор веб-странички и вставить туда содержимое буфера.
Обратим внимание на то, что ссылка является относительной, а не абсолютной. Это значит, что, сохраняя структуру директорий, мы можем записать оба файла (веб-страничку и целевой файл) куда угодно, и ссылка будет работать всегда.
Внимание! В скрипте использовано ключевое слово args, введенное в PowerPro 4.4! В более ранних версиях PowerPro скрипт будет выдавать сообщение об ошибке. Если вы по каким-либо причинам не хотите устанавливать версию 4.4, первую строку скрипта следует заменить на 3 строки:
local P = arg(1)
local T = arg(2)
local M = arg(3)
На главную | Все о Total Commander | PowerPro | Все скрипты |