В случае, если такого файла на сервере нет либо дата его создания ранее даты внесения изенений в копируемом файле (например, файл уже после отправки на сервер снова редактировался на локальной машине), файл переписывается по новому адресу. Параллельно информация о скопированных файлах записывается в переменную copiedFiiesArr с тем, чтобы после окончания процесса выдать консолидированный отчет: сколько и каких файлов было скопировано: Поскольку операция ответственная, проверяем результат каждого копирования: если оно закончилось неудачей, устанавливаем признак проблемы copyOK=false.
Функция decodeURi () выполняет сразу две задачи: во-первых, она корректно обрабатывает специальные символы, знаки пробела и т. п., поскольку синтаксис путей к файлам имеет определенные ограничения. Во-вторых, она вычленяет из объекта File его путь (если использовать конструкцию
File. toString о, то потом бы пришлось производить замену обратных слэшей на двоеточия, принятые для обозначения пути на Macintosh (replace (// \/д,
^Листинг 11.22. Копирование ресурсов на сервер
function postToServer(){
MagazinelFolder = decodeURI(aD.filePath.name); serverFolder = MagazinelFolder + issueNumberFolder+'/1
iddAtHome = decodeURI( File(aD.fullName)) iddAtServer = serverFolder+decodeURI( aD.name)
if (!Folder(serverFolder).exists)
Folder(serverFolder).create();
for (myLinks = 0; myLinks < aD.links.length; myLinks++) ( myl = aD.links[myLinks]; if(myl.status != LinkStatus.linkMissing){ linkAtHome = decodeURI( File(myl.filePath))
linkAtServer = serverFolder + decodeURI( File(myl.filePath).name); ;
if (! File (linkAtServer) . exists ||
(File(linkAtServer).created.getTime() <
File(linkAtHome).modified.getTime() ) || (
File(linkAtServer).created.getTime() < 4?
File(linkAtHome).created.getTime() ) ){ f_src = File(linkAtHome); f_new = new File(linkAtServer); if (!File(f_src).copy(f_new)) copyOK = false; copiedFilesArr.push(decodeURI(File(f_new).name))
}
}
}
f_src = File(iddAtHome); f_new = new File(iddAtServer); if(!File(f_src).copy(f_new)) copyOK = false; В самом начале книги мы обсуждали выбор того или иного языка для скриптинга и остановились на JavaScript как идеальном кандидате на эту роль. Од нако традиционно издательские процессы строились на платформе Macintosh, в которой особую популярность имеет AppleScript- как полноценный язык программирования. Поэтому, хотя автор с данным языком не знаком, из уважения к достаточно многочисленному Мас-сообществу напишем несколько вставок, которые демонстрируют одно из многочисленных преимуществ (автор в этом твердо уверен!) альтернативной операционной.
Психологически человек устроен так, что все ответственные операции он склонен перепроверять. Все это в полной мере относится и к формированию конечного PDF для передачи в типографию. Если макетов рекламы много, человеку требуется дополнительный сигнал, что макет проверен и перепроверен и его можно включать в итоговый документ. Обычно для таких целей папки с содержимым рекламных макетов красят в зеленый цвет (color label, есть такая достаточно интересная возможность в Mac OS). Чтобы максимально автоматизировать процесс обработки рекламы, эту последнюю операцию также реализуем с помощью скрипта.