Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/61: Рейтинг темы: голосов - 61, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 127
1

Старый-старый Web

09.05.2012, 18:01. Просмотров 11362. Ответов 12
Метки нет (Все метки)


Здравствуйте!
Стою на асфальте и лыжи не едут...

Столкнулся с необходимостью дописать старую библиотеку javascript. Но что-то не могу физически найти ее в дизайнере. На форме путь прописан
<script src=/Restr/SearchSprav_IE></script>. На сервере порылся в папках тоже не нашел.

Подскажите, где искать файл SearchSprav_IE? И каким образом скриптовые библиотеки подтягиваются на форму в вэбе?

Если не ошибаюсь, в xpages библиотеки содаются в дизайнере и потом подтягиваются, а это схемка не понятна.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2012, 18:01
Ответы с готовыми решениями:

Новые поля в доке, старый поля в доке ....
Всех с наступающим!!! Привет. Дело такое Есть форма в которой создаются новые поля, хотя в...

Новый сайт на старый домен или старый перекраивать ?
Пришел опытным путем к выводу, что один из сайтов надо тотально переделывать. Адреса страниц должны...

старый ПК
У друга есть старый компьютер intel core 2 duo 1.9 GHz 2gb DDR3 блок питания 800 Ват он купил он...

Старый джостик
Нашёл у себя старый джойстик с подключением к компу через Game-порт. Почитал в интернете, что можно...

12
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
09.05.2012, 20:39 2
<notesdata>/domino/html - базовый путь для веба

Добавлено: а ваще никто не отменял поиск файлов ;):
-никсы locate -i <часть имени>
-винда dir /s *<часть имени>*.*
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
09.05.2012, 23:27 3
скорее всего это тупо пейдж ;)

Добавлено: хотя вру ;)
учитывая путь /Restr/SearchSprav_IE
значит ищите вид Restr в нём должен светиться документ с ключом SearchSprav_IE
это обычный док

что характерно для сайта-конструктора под лотус
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 127
10.05.2012, 11:46 4
а если путь /Restr/Restr_IO.nsf/SearchSprav_IE?

Получается что берет из базы и искать все же стоит через дизайнер?
Может кто-то занимался более ранними разработками под вэб и знает как библиотеки javascript подгружаются к форме?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
10.05.2012, 12:37 5
первый слэш указывает на корень сайта...
и сразу идет имя скрипта , после первого имени
Т.о. - если нет редайректов для сайта - то читаем мой первый пост

Добавлено:


Цитата Сообщение от doka
а если путь /Restr/Restr_IO.nsf/SearchSprav_IE?

Получается что берет из базы и искать все же стоит через дизайнер?
Может кто-то занимался более ранними разработками под вэб и знает как библиотеки javascript подгружаются к форме?
если такой путь - берёт из базы, но опять - могут быть редайректы

Добавлено: в дополнение, могут быть определены:
-форма с таким именем
-вьюшка, а для неё темплэйт форма
-пэдж
... м.б. др. эелементы
при выводе этих элементов - тоже возможны "фокусы" с перенаправлением
возможен и агент (но тут не помню про ограничения, при вызове)
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 127
10.05.2012, 13:36 6
не, редиректов нет.

А сам принцип разъяните пожалуйста. Вот я в script libraries создал библиотеку с типом javascript, как она подгружается к форме? Просто в дизайнере нет элемента с именем или алиасом SearchSprav_IE, но есть библиотека "Web SearchSprav_IE" с типом javascript. Я понимаю что код берется оттуда, но не догоняю как.
0
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
10.05.2012, 14:12 7
посмотри в дизайнере в поле $TITLE алиасы у этой js либы.
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 127
10.05.2012, 16:11 8
;) гр...ный 8.5.3! ;)

Вопрос снят, всем спасибо за участие
0
0 / 0 / 0
Регистрация: 26.06.2006
Сообщений: 143
13.05.2012, 13:49 9
При работе с классическими веб приложениями на Лотусе (когда используются формы и агенты WeQueryOpen/WebQuerySave) иногда необходимо выяснить где (в каких формах, сабформах) используется какая-нибудь JavaScriptовая библиотека или функция из этой библиотеки.

Если библиотека вставлена в форму/сабформу как ресурс в onLoad/JS Header (или если в эти элементы вставлен JavaScript код), то стандартный поиск по базе ничего не найдет и помогает толька выгрузка всех элементов дизайна с помощью DXL, раскодирование данных в <rawitemdata> из Base64 и последующий поиск по содержимому файлов.

Вот код агента, экпортирующий элементы дизайна:


Код (C++):
import lotus.domino.*;
import java.io.*;
import sun.misc.BASE64Decoder;

public class JavaAgent extends AgentBase {

private final String exportDir = "c:\\dxl\\";
private final String serverName = "your_server_name";
private final String databaseName = "path_to_your_db";

private final boolean includeAcl = true;
private final boolean includeActions = true;
private final boolean includeAgents = true;
private final boolean includeDbScript = true;
private final boolean includeDocuments = true;
private final boolean includeFolders = true;
private final boolean includeForms = true;
private final boolean includeFramesets = true;
private final boolean includeHelpAbout = true;
private final boolean includeHelpIndex = true;
private final boolean includeHelpUsing = true;
private final boolean includeIcon = true;
private final boolean includeImageResources = true;
private final boolean includeJavaResources = true;
private final boolean includeMiscCode = true;
private final boolean includeMiscFormatElements = true;
private final boolean includeMiscIndexElements = true;
private final boolean includeNavigators = true;
private final boolean includeOutlines = true;
private final boolean includePages = true;
private final boolean includeProfiles = true;
private final boolean includeReplicationFormulas = true;
private final boolean includeSharedFields = true;
private final boolean includeStyleSheetResources = true;
private final boolean includeSubforms = true;
private final boolean includeScriptLibraries = true;
private final boolean includeViews = true;

private final String ELEMENT_TYPE_ACL = "Acl";
private final String ELEMENT_TYPE_ACTION = "Actions";
private final String ELEMENT_TYPE_AGENT = "Agents";
private final String ELEMENT_TYPE_DB_SCRIPT = "DatabaseScript";
private final String ELEMENT_TYPE_DOCUMENT = "Documents";
private final String ELEMENT_TYPE_FOLDER = "Folders";
private final String ELEMENT_TYPE_FORM = "Forms";
private final String ELEMENT_TYPE_FRAMESET = "Framsets";
private final String ELEMENT_TYPE_HELP_ABOUT = "HelpAbout";
private final String ELEMENT_TYPE_HELP_INDEX = "HelpIndex";
private final String ELEMENT_TYPE_HELP_USING = "HelpUsing";
private final String ELEMENT_TYPE_ICON = "Icon";
private final String ELEMENT_TYPE_IMAGE_RESOURCE = "ImageResources";
private final String ELEMENT_TYPE_JAVA_RESOURCE = "JavaResources";
private final String ELEMENT_TYPE_MISC_CODE = "MiscCode";
private final String ELEMENT_TYPE_MISC_FORMAT = "MiscFormat";
private final String ELEMENT_TYPE_MISC_INDEX = "MiscIndex";
private final String ELEMENT_TYPE_NAVIGATOR = "Navigator";
private final String ELEMENT_TYPE_OUTLINE = "Outlines";
private final String ELEMENT_TYPE_PAGE = "Pages";
private final String ELEMENT_TYPE_PROFILE = "Profiles";
private final String ELEMENT_TYPE_REP_FORMULA = "ReplicationFormulas";
private final String ELEMENT_TYPE_SHARED_FIELD = "SharedFields";
private final String ELEMENT_TYPE_STYLESHEET = "StyleSheets";
private final String ELEMENT_TYPE_SUBFORM = "Subforms";
private final String ELEMENT_TYPE_SCRIPT_LIBRARY = "ScriptLibraries";
private final String ELEMENT_TYPE_VIEW = "Views";

private Session session;
private Database db;
private DxlExporter exporter;

public void NotesMain() {

try {
session = getSession();
db = session.getDatabase(serverName, databaseName);
if (db == null) {
System.out.println("Cant open remote database");
return;
}

exporter = session.createDxlExporter();
exporter.setForceNoteFormat(true);

if (includeAcl) exportDesignElements(ELEMENT_TYPE_ACL);
if (includeActions) exportDesignElements(ELEMENT_TYPE_ACTION);
if (includeAgents) exportDesignElements(ELEMENT_TYPE_AGENT);
if (includeDbScript) exportDesignElements(ELEMENT_TYPE_DB_SCRIPT);
if (includeDocuments) exportDesignElements(ELEMENT_TYPE_DOCUMENT);
if (includeFolders) exportDesignElements(ELEMENT_TYPE_FOLDER);
if (includeForms) exportDesignElements(ELEMENT_TYPE_FORM);
if (includeFramesets) exportDesignElements(ELEMENT_TYPE_FRAMESET);
if (includeHelpAbout) exportDesignElements(ELEMENT_TYPE_HELP_ABOUT);
if (includeHelpIndex) exportDesignElements(ELEMENT_TYPE_HELP_INDEX);
if (includeHelpUsing) exportDesignElements(ELEMENT_TYPE_HELP_USING);
if (includeIcon) exportDesignElements(ELEMENT_TYPE_ICON);
if (includeImageResources) exportDesignElements(ELEMENT_TYPE_IMAGE_RESOURCE);
if (includeJavaResources) exportDesignElements(ELEMENT_TYPE_JAVA_RESOURCE);
if (includeMiscCode) exportDesignElements(ELEMENT_TYPE_MISC_CODE);
if (includeMiscFormatElements) exportDesignElements(ELEMENT_TYPE_MISC_FORMAT);
if (includeMiscIndexElements) exportDesignElements(ELEMENT_TYPE_MISC_INDEX);
if (includeNavigators) exportDesignElements(ELEMENT_TYPE_NAVIGATOR);
if (includeOutlines) exportDesignElements(ELEMENT_TYPE_OUTLINE);
if (includePages) exportDesignElements(ELEMENT_TYPE_PAGE);
if (includeProfiles) exportDesignElements(ELEMENT_TYPE_PROFILE);
if (includeReplicationFormulas) exportDesignElements(ELEMENT_TYPE_REP_FORMULA);
if (includeSharedFields) exportDesignElements(ELEMENT_TYPE_SHARED_FIELD);
if (includeStyleSheetResources) exportDesignElements(ELEMENT_TYPE_STYLESHEET);
if (includeScriptLibraries) exportDesignElements(ELEMENT_TYPE_SCRIPT_LIBRARY);
if (includeSubforms) exportDesignElements(ELEMENT_TYPE_SUBFORM);
if (includeViews) exportDesignElements(ELEMENT_TYPE_VIEW);

} catch(Exception e) {
e.printStackTrace();
}
}

// main export stub
public void exportDesignElements(String designElementType)
{
NoteCollection nc = null;

try {
nc = db.createNoteCollection(false);
if (designElementType == ELEMENT_TYPE_ACL) nc.setSelectAcl(true);
if (designElementType == ELEMENT_TYPE_ACTION) nc.setSelectActions(true);
if (designElementType == ELEMENT_TYPE_AGENT) nc.setSelectAgents(true);
if (designElementType == ELEMENT_TYPE_DB_SCRIPT) nc.setSelectDatabaseScript(true);
if (designElementType == ELEMENT_TYPE_DOCUMENT) nc.setSelectDocuments(true);
if (designElementType == ELEMENT_TYPE_FOLDER) nc.setSelectFolders(true);
if (designElementType == ELEMENT_TYPE_FORM) nc.setSelectForms(true);
if (designElementType == ELEMENT_TYPE_FRAMESET) nc.setSelectFramesets(true);
if (designElementType == ELEMENT_TYPE_HELP_ABOUT) nc.setSelectHelpAbout(true);
if (designElementType == ELEMENT_TYPE_HELP_INDEX) nc.setSelectHelpIndex(true);
if (designElementType == ELEMENT_TYPE_HELP_USING) nc.setSelectHelpUsing(true);
if (designElementType == ELEMENT_TYPE_ICON) nc.setSelectIcon(true);
if (designElementType == ELEMENT_TYPE_IMAGE_RESOURCE) nc.setSelectImageResources(true);
if (designElementType == ELEMENT_TYPE_JAVA_RESOURCE) nc.setSelectJavaResources(true);
if (designElementType == ELEMENT_TYPE_MISC_CODE) nc.setSelectMiscCodeElements(true);
if (designElementType == ELEMENT_TYPE_MISC_FORMAT) nc.setSelectMiscFormatElements(true);
if (designElementType == ELEMENT_TYPE_MISC_INDEX) nc.setSelectMiscIndexElements(true);
if (designElementType == ELEMENT_TYPE_NAVIGATOR) nc.setSelectNavigators(true);
if (designElementType == ELEMENT_TYPE_OUTLINE) nc.setSelectOutlines(true);
if (designElementType == ELEMENT_TYPE_PAGE) nc.setSelectPages(true);
if (designElementType == ELEMENT_TYPE_PROFILE) nc.setSelectProfiles(true);
if (designElementType == ELEMENT_TYPE_REP_FORMULA) nc.setSelectReplicationFormulas(true);
if (designElementType == ELEMENT_TYPE_SHARED_FIELD) nc.setSelectSharedFields(true);
if (designElementType == ELEMENT_TYPE_STYLESHEET) nc.setSelectStylesheetResources(true);
if (designElementType == ELEMENT_TYPE_SCRIPT_LIBRARY) nc.setSelectScriptLibraries(true);
if (designElementType == ELEMENT_TYPE_SUBFORM) nc.setSelectSubforms(true);
if (designElementType == ELEMENT_TYPE_VIEW) nc.setSelectViews(true);
nc.buildCollection();

int nDesignElements = nc.getCount();
System.out.println("Exporting " + designElementType + " (" + nDesignElements + " element(s))...");

int nNote = 1;
String noteId = nc.getFirstNoteID();
while (nNote <= nDesignElements)
{
System.out.print("Processing doc " + nNote + " of " + nDesignElements + " (NoteId: " + noteId + ")... ");

Document noteDoc = db.getDocumentByID(noteId);
if (noteDoc != null) {
String designElementName = getDesignElementName(noteDoc);
String originalFile = exportDir + "original\\" + designElementType + "\\" + designElementName + ".xml";
String decodedFile = exportDir + "decoded\\" + designElementType + "\\" + designElementName + ".txt";
String dxlData = exporter.exportDxl(noteDoc);
String decodedDxlData = decodeRawItemData(dxlData);
exportDataToFile(originalFile, dxlData);
exportDataToFile(decodedFile, decodedDxlData);
System.out.println("Done");
} else {
System.out.println("ERROR: Cant get document with NoteID " + noteId);
}
noteDoc.recycle();
nNote++;
noteId = nc.getNextNoteID(noteId);
}
nc.recycle();
} catch(Exception e) {
e.printStackTrace();
}
}

// finds and decodes text between <rawitemdata ...> and </rawitemdata>
public String decodeRawItemData(String fileContents)
{
int startPos = 0;

try {
while (fileContents.indexOf("<rawitemdata", startPos) != -1)
{
int rawItem_Start = fileContents.indexOf("<rawitemdata", startPos);
int encodedData_Start = fileContents.indexOf(">", rawItem_Start) + 1;
int encodedData_End = fileContents.indexOf("</rawitemdata", encodedData_Start);

String rawData = fileContents.substring(encodedData_Start, encodedData_End);

BASE64Decoder decoder = new BASE64Decoder();
byte[] bDecodedData = decoder.decodeBuffer(rawData);
String strDecodedData = new String(bDecodedData);

String strStart = fileContents.substring(0, encodedData_Start);
String strEnd = fileContents.substring(encodedData_End);
fileContents = strStart + strDecodedData + strEnd;

startPos = rawItem_Start + 1;
}
} catch (IOException e) {
e.printStackTrace();
}

return fileContents;
}

// create file name from title or documents UNID
public String getDesignElementName(Document noteDoc)
{
String elementName = "";

try {
if (noteDoc.hasItem("$Title")) {
// if title is available - use it as file name
elementName = noteDoc.getItemValueString("$Title");
// replace characters disallowed in file name
elementName = elementName.replaceAll("[\\\\|\\/:\"*?<>+|\n\r\t\f\0]", "");
} else {
// if title is unavailable - use UNID
elementName = noteDoc.getUniversalID();
}
} catch (NotesException e) {
e.printStackTrace();
}

return elementName;
}

// save data to file
public int exportDataToFile(String pathToFile, String dataToExport)
{
createDirectories(pathToFile);

int nWrittenBytes = 0;
Stream stream;

try {
stream = session.createStream();
if (stream.open(pathToFile)) {
stream.truncate();
nWrittenBytes = stream.writeText(dataToExport);
stream.close();
stream.recycle();
if (nWrittenBytes == 0) {
System.out.println("ERRROR: Zero bytes were written to file");
}
} else {
System.out.println("ERROR: Cant create file " + pathToFile);
}
} catch (NotesException e) {
e.printStackTrace();
}

return nWrittenBytes;
}

public void createDirectories(String pathToDir)
{
// get full path without file name
int lastSlashPos = pathToDir.lastIndexOf("\\");
if (lastSlashPos != -1)
{
String dirPath = pathToDir.substring(0, lastSlashPos);
File file = new File(dirPath);
if (!file.exists()) {
boolean isCreated = new File(dirPath).mkdirs();
if (isCreated == false) {
System.out.println("ERROR: Cant create required directory: " + dirPath);
}
}
}
}
}

В начале агента задается:

1. Директория, куда выгружаются данные (exportDir)
2. Имя сервера (serverName)
3. Имя базы (databaseName)
4. Желаемые для выгрузки элементы дизайна (include... = true/false)
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
13.05.2012, 19:27 10
а просто ЛС скриптом не проще? ;)
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
14.05.2012, 12:17 11
Цитата Сообщение от ToxaRat
а просто ЛС скриптом не проще? ;)
неа ;) - не проще
base64 глюкавый, ф-ционал языка часто ограничен...
и путь вендора (в ком это веке) стал просматриваться - аппсервер подняли, код можно писать "один" (а не отдельно для каждого устройства отображения), js фрэймворк...
т.е. - LS терь тока для поддержки старых приложений и тех кто не хочет перестраиваться
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
14.05.2012, 19:18 12
Цитата Сообщение от lmike
неа - не проще
base64 глюкавый, ф-ционал языка часто ограничен...
и путь вендора (в ком это веке) стал просматриваться - аппсервер подняли, код можно писать "один" (а не отдельно для каждого устройства отображения), js фрэймворк...
т.е. - LS терь тока для поддержки старых приложений и тех кто не хочет перестраиваться
а разве в DXML документ аттачи выплёвывает не в base64?
смысл вообще декодировать?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
15.05.2012, 14:00 13
Цитата Сообщение от ToxaRat
а разве в DXML документ аттачи выплёвывает не в base64?
смысл вообще декодировать?
в том и дело что кодированный, а цель - получение сорца (в данном случае - скрипта)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2012, 14:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Старый домен
Интересует такой вопрос - сегодня зарегил домен, который освобождался сегодняшним числом. В whois...

Старый мост
Ночь... даже Луна не рискует показаться на звездном небе... темно... и только слабый свет...

Старый биос
Не могу разобраться со старым биосом Pentium III, 2003 год. Как выставить приоритет загрузки с ...

Старый компьютер
На складе нашел старый компьютер. Проверил его подключив к сети, он загружается и работает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.