Lotusscript -> Javascript

Тема в разделе "Lotus - Программирование", создана пользователем Nonlim, 23 июл 2012.

  1. Nonlim

    Nonlim Гость

    Имеется простенький поиск на lotusscript, который берет из бд строки с именами пользователей и ищет конкретного (простым вводом символов в строку поиска и нажатием кнопки).
    Как можно реализовать этот поиск с использованием Javascript (необходимо для WEB-интерфейса)?

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    Sub Click(Source As Button)
    On Error Goto errh


    Dim sw As Switchboard
    Dim w As New notesuiworkspace      
    Dim col As notesdocumentcollection     
    Dim uidoc As notesuidocument
    Dim doc As notesdocument
    Dim note As notesdocument
    Dim keys() As String
    Dim result() As String
    Dim resultID() As Integer
    Dim sel As Variant
    Dim i As Integer
    Dim isPost As Boolean  

    Dim Person_Name As Variant
    Dim Person_Notes As Variant
    Dim Dialog_Post As Variant
    Dim Dialog_Dep As Variant
    Dim site As String

    Set uidoc = w.CurrentDocument
    Set doc = uidoc.Document
    If doc.GetItemValue("Dialog_Search")(0) = "" Then Exit Sub

    If doc.GetItemValue("Dialog_Search")(0) = searchKey And wasFound = True Then
    w.RefreshParentNote
    uidoc.Close
    Exit Sub
    End If

    searchKey = doc.GetItemValue("Dialog_Search")(0)
    site = doc.GetItemValue("Dialog_Site")(0)

    If searchView Is Nothing Then
    Set sw = New SwitchBoard
    Set itstaff = sw.getdatabase("ITStaffManager") 
    If doc.GetItemValue("Dialog_Role")(0) <> "" Then
    If doc.Dialog_NoUser(0) = "1" Then
    Set searchView = itstaff.GetView("PLPeopleByRolesAll")                 
    Else
    Set searchView = itstaff.GetView("PLPeopleByRoles")
    End If         
    Else
    If site = "" Then
    Set searchView = itstaff.GetView("AllUser")        
    Else
    Set searchView = itstaff.GetView("PLPeopleBySite")         
    End If
    End If     
    End If

    If doc.GetItemValue("Dialog_Role")(0) <> "" Then       
    Redim keys(1)
    keys(0) = doc.GetItemValue("Dialog_Role")(0)
    keys(1) = Fulltrim(searchKey)
    Else       
    Redim keys(0)
    keys(0) = Fulltrim(searchKey)
    End If     

    If site <> "" Then
    keys(0) = site & "~#" & keys(0)
    End If

    Set col = searchView.GetAllDocumentsByKey(keys)
    If col.Count = 0 Then
    Print "Соответствий не найдено"
    Exit Sub
    End If

    Redim result(col.Count - 1)
    Redim resultID(col.Count - 1)
    Set note = col.GetFirstDocument
    Do Until note Is Nothing       
    resultID(i) = i
    If note.GetItemValue("Form")(0) = "Post" Then isPost = True Else isPost = False

    If isPost = False Then
    result(i) = note.GetItemValue("Person_Name")(0)        
    If note.GetItemValue("Person_Post")(0) <> "" Then
    result(i) = result(i) & " - " & note.GetItemValue("Person_Post")(0)
    End If
    Else
    result(i) = note.GetItemValue("Post_Owner")(0)
    If note.GetItemValue("Post_Name")(0) <> "" Then
    result(i) = result(i) & " - " & note.GetItemValue("Post_Name")(0)
    End If     
    result(i) = result(i) & " (совместитель)"
    End If

    i = i + 1
    Set note = col.GetNextDocument(note)
    Loop

    If i = 1 Then
    Set note = col.GetFirstDocument
    Else
    sort result, resultID
    sel = w.Prompt(4,"Поиск","Выберите:",result(0),result)
    If Isempty(sel) Then Exit Sub
    i = Arraygetindex(result, sel)
    Set note = col.GetNthDocument(resultID(i) + 1)     
    End If

    If note Is Nothing Then Exit Sub

    If Isnull(Arraygetindex(doc.Dialog_ID, note.UniversalID)) Then
    Person_Name=Evaluate({@Trim(@Right(PROPERTIES;"[NAME]"))}, note)
    Person_Notes=Evaluate({tmp:=@Trim(@Right(PROPERTIES;"[NTSN]"));@If(tmp="";"-";tmp)}, note)
    Dialog_Post=Evaluate({tmp:=@Trim(@Right(PROPERTIES;"[POST]"));@If(tmp="";"-";tmp)+@If(Form="Post";" (совместитель)";"")}, note)
    Dialog_Dep=Evaluate({ref:=@Trim(@Right(PROPERTIES;"[$REF]"));
    @While(ref!="";dev:=@Implode(@Trim(@GetDocField(ref;"Abbreviation"):dev);"/");
    ref:=@Trim(@Right(@GetDocField(ref;"PROPERTIES");"[$REF]")));dev}, note)

    If doc.Dialog_Multi(0)="" Then
    doc.Dialog_Names = Person_Name 
    doc.Dialog_Notes = Person_Notes
    doc.Dialog_ID = note.UniversalID   
    doc.Dialog_Post = Dialog_Post  
    doc.Dialog_Dep = Dialog_Dep
    doc.Dialog_Types = "0"
    Else
    doc.Dialog_Names = Fulltrim(Arrayappend(doc.Dialog_Names, Person_Name))    
    doc.Dialog_Notes = Fulltrim(Arrayappend(doc.Dialog_Notes, Person_Notes))       
    doc.Dialog_ID = Fulltrim(Arrayappend(doc.Dialog_ID, note.UniversalID))     
    doc.Dialog_Post = Fulltrim(Arrayappend(doc.Dialog_Post, Dialog_Post))      
    doc.Dialog_Dep = Fulltrim(Arrayappend(doc.Dialog_Dep, Dialog_Dep))     
    doc.Dialog_Types = Fulltrim(Arrayappend(doc.Dialog_Types, "0"))
    End If
    Call uidoc.Refresh

    wasFound = True    
    End If

    Exit Sub

    errh:
    Msgbox Error & " в строке " & Erl, 16, "Ошибка"
    Exit Sub
    End Sub

    P.S.-знаю, я - неумный. Но всё же?
     
  2. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    WEB-морда на чем писана?
     
  3. Nonlim

    Nonlim Гость

    WEB-интерфейс висит под Drupal, открываться будет через IE6.


    P.S.-в морде мешанина из JS, php и xHTML. Нужен только код JS для аналогичного приведенному в первом сообщении коду OnClick'a.
     
  4. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Смотрите в сторону ajax запросов.
     
  5. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Стесняюсь спросить... а каким местом Drupal к Lotus?
    Смотри примеры, например такие
     
  6. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Код (Text):
    Set itstaff = sw.getdatabase("ITStaffManager")
    Похоже это IT-шный продукт перепиливается.. может к ним обратиться? Может это где-то уже есть в базе и просто надо найти нужный элемент дизайна.
     
  7. Nonlim

    Nonlim Гость

    Есть СЭД, основанная на Lotus и есть портал под Drupal. На портале есть "уголок" СЭД. Задача - вывести на страницу портала поиск, желательно подключиться через JS из Lotus 7.
    Поиск берет из БД список пользователей СЭД, а потом простым перебором формирует уже список по ФИО в зависимости от вводимых символов: смысл действа - в быстром (за 4-5 нажатий на клавиатуре) поиске конкретного пользователя. Готовые просмотр документов (связанных между собой и/или пользователем) и фильтры есть, на поиск юзера готовых шаблонов не нашел.

    P.S.-в кодинге новичок, прошу шибко не пинать.
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну собственно вопрос не в той ветке.
    Вопросы интеграции чего-то с Lotus - это не тут.
    Проше всего - настроить синхронизацию Domino и базы Drupal и писать на чем умеешь
     
  9. Nonlim

    Nonlim Гость

    А тот же код, но на JS - можно? :blush:
     
  10. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Нельзя.
    Нужно писать другой агент который будет выдвать нужные данные по ajax запросу.
     
Загрузка...
Похожие Темы - Lotusscript Javascript
  1. Cleric-Lviv
    Ответов:
    3
    Просмотров:
    1.486
  2. seoman2
    Ответов:
    9
    Просмотров:
    358
  3. stranik
    Ответов:
    8
    Просмотров:
    843
  4. erhe
    Ответов:
    22
    Просмотров:
    1.274
  5. lmike
    Ответов:
    4
    Просмотров:
    761

Поделиться этой страницей