Ext.nd. Шо Це Таке?

Тема в разделе "Общие вопросы по лотус-технологиям", создана пользователем Eugen, 22 янв 2014.

  1. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    Всем здрасьте.

    Начальство поставило задачу разобраться с Ext.ND. Насколько я понимаю, это что-то похожее на Xpages, но менее мощное. Может кто подскажет где и что можно почитать про этого "зверя невиданного", желательно на русском. На openNTF скачал последнюю версию(beta4), но мануала так и не нашел. Кто-нибудь работал с этой штукой?
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
  3. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
  4. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    На форуме случайно нет раздела, посвященного этой теме?
     
  5. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Сомневаюсь... Слишком специфичная штука, но может кто использовал.
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    на ExtJS писал примерчик для нотусни (вебморду), не помню - выкладывал здесь или нет
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
  8. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    lmike, спасибо, поковыряю.
     
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    там чистый ExtJS, а не надстройка над ним (extND)
    вопрос к начальству - надо ли оно им? :please:

    Добавлено: как всегда - встанет вопрос парсинга данных и их отдача по хттп, у домины с этим... ну не очень :mellow:
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    и еще камент...
    для наколеночной реализации https://github.com/extnd/SDK/blob/extnd-for.../SearchView.lss
    нормально, но для проекта - уж очень топорно, притом вывод идет в ХМЛ, что потребует парсинга в JS (в отличии от JSON)
    ну и тамже - хардкоденные принты...
    я даже за 5-ть дней - не поленился сделать обертки :please:
    как класс отсутствует вывод ошибок в браузер
     
  11. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    пояснения для моей БД (для экономии времени)
    из JS дергаются агенты (order....)
    агенты используют либу orgPrice
    в orgPrice расширяется AgentBase, расширенный класс и используют агенты
    все данные вываливаются в ХМЛ (можно переопределить классы - будет JSON)
    код писан на java

    Добавлено: есть либа предобработки хттп, на LS <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"HttpProcessing"</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
    'encode возвращает вместо " " -> "+"
    'http://docs.oracle.com/javase/1.4.2/docs/api/java/net/URLEncoder.html
    Class HttpBase As ErrorHandlerWJ
    Private curdoc As NotesDocument
    Private ses As NotesSession
    Private isPrintedHeader As Boolean
    Private isPrintedEnd As Boolean
    Private decoderClass As JavaClass
    Private encoderClass As JavaClass
    Private encoderObj As JavaObject
    Private Contenttype As String
    Private msgList List As String
    Private msgCount As Long
    Private errList List As String
    Private errCount As Long
    Sub New()
    Set ses=New NotesSession
    Set curdoc=ses.DocumentContext
    Set encoderClass=jSession.Getclass({java/net/URLEncoder})
    Set decoderClass=jSession.Getclass({java/net/URLDecoder})
    Contenttype={text}
    End Sub

    Sub Delete
    Me.Close
    End Sub

    Property Get CGIvar(xName As String) As String
    CGIvar=curdoc.GetItemValue(xName)(0)
    End Property

    Private Property Set Content As String

    End Property

    Property Get GetRequestParams As Variant
    On Error Goto ErrH
    Dim s As String
    s=Fulltrim(GetRequestQuery)
    If Len(s)>0 Then
    GetRequestParams=Split(s,{&})
    Else
    s=Fulltrim(GetRequestPost)
    If Len(s)>0 Then GetRequestParams=Split(s,{&})
    End If
    Quit:
    Exit Property
    ErrH:
    Me.PrintError(Me.RaiseError)
    Resume Quit
    End Property

    Property Get GetRequestQuery As String
    On Error Goto ErrH
    'используется Query_String_Decoded - не чувствует разницы между "+" и " "
    'это поведение типично и потому "+" -> " "
    GetRequestQuery=curdoc.getItemValue("Query_String_Decoded")(0)
    Quit:
    Exit Property
    ErrH:
    Me.PrintError(Me.RaiseError)
    Resume Quit
    End Property

    Property Get GetRequestPost As String
    On Error Goto ErrH
    GetRequestPost=curdoc.getItemValue("Request_Content")(0)
    Quit:
    Exit Property
    ErrH:
    Me.PrintError(Me.RaiseError)
    Resume Quit
    End Property

    Property Get GetRequesPath As String
    GetRequesPath=curdoc.getItemValueString("Path_Info_Decoded")
    End Property

    Sub PrintMsg(msg As String)
    PrintHeader
    msgList({message_} &Cstr(msgCount))=msg
    msgCount=msgCount+1
    End Sub

    Function Decode(msg As String) As String
    Decode=decoderClass.decode(msg)
    End Function

    Function DecodeUTF8(msg As String) As String
    DecodeUTF8=decoderClass.decode(msg,{UTF-8})
    End Function

    Function DecodeCP1251(msg As String) As String
    DecodeCP1251=decoderClass.decode(msg, {Cp1251})
    End Function

    Function DecodeAll(msg As String, enc As String) As String
    DecodeAll=decoderClass.decode(msg, enc)
    End Function

    Function EncodeAll(msg As String, enc As String) As String
    EncodeAll=encoderClass.encode(msg, enc)
    End Function

    Function Encode(msg As String) As String
    Encode=encoderClass.encode(msg)
    End Function

    Sub PrintMsgEncoded(msg As String)
    PrintHeader
    msgList({messageEnc_} &Cstr(msgCount))=encoderClass.encode(msg)
    End Sub

    Private Function PrintHeader As Boolean
    On Error Goto ErrH
    If isPrintedHeader Then Exit Function
    'возвращаем результат в UTF-8
    Print {Content-Type: } &Contenttype &{; charset=UTF-8"} 'text/xml;application/xml;
    '       Print {Content-Type: } &Contenttype &{; charset=Windows-1251"
    }
    isPrintedHeader=True
    Me.PrintHeader=True
    Quit:
    Exit Function
    ErrH:
    Error Err, RaiseError
    End Function

    Private Function PrintEnd As Boolean
    If Not isPrintedHeader Then Exit Function
    If isPrintedEnd Then Exit Function
    isPrintedEnd=True
    Me.PrintEnd=True
    End Function

    Private Sub PrintError(msg As String)
    PrintHeader
    errList({error_} &Cstr(errCount))=msg
    errCount=errCount+1
    End Sub

    Sub Close
    PrintEnd
    End Sub
    End Class

    Class HttpBaseXML As HttpBase
    Function PrintHeader As Boolean
    Dim b As Boolean
    b=HttpBase..PrintHeader
    Me.PrintHeader=b
    If Not b Then Exit Function
    Print {<?xml version="1.0" encoding="UTF-8"?>}
    Print {<response>}
    End Function

    Sub New()
    Contenttype={text/xml}
    End Sub

    Sub PrintMsg(msg As String)
    PrintHeader
    Print {<message>} &msg &{</message>}
    End Sub

    Sub PrintMsgEncoded(msg As String)
    PrintHeader
    Print {<messageenc>} &encoderClass.encode(msg) &{</messageenc>}
    End Sub

    Function PrintEnd As Boolean
    Dim b As Boolean
    b=HttpBase..PrintEnd
    Me.PrintEnd=b
    If Not b Then Exit Function
    Print {</response>}
    End Function

    Sub PrintError(msg As String)
    Call HttpBase..PrintError(msg)
    Print {<error><object>} & Typename(Me) &{</object><message>} &msg &{</message></error>}
    End Sub
    End Class

    Class HttpBaseJSON As HttpBase
    Function PrintHeader As Boolean
    Dim b As Boolean
    b=HttpBase..PrintHeader
    Me.PrintHeader=b
    If Not b Then Exit Function
    '       Print |{"response":[|
    Print |{|
    End Function

    Sub New
    Contenttype="application/json"
    End Sub

    Function PrintEnd As Boolean
    Dim b As Boolean
    b=HttpBase..PrintEnd
    Me.PrintEnd=b
    If Not b Then Exit Function
    '       Print |"end":"end"]}|
    Print |"end":"end"}|'заглушка, чтобы не заморачиваться на оконечные запятые
    End Function

    '   Sub PrintMsg(msg As String)
    '       PrintHeader
    '       Print {"message":"} &msg &{",}
    '   End Sub

    '   Sub PrintMsgEncoded(msg As String)
    '       PrintHeader
    '       Print {"message_enc":"} &encoderClass.encode(msg) &{",}
    '   End Sub

    Sub PrintJSONvar(xName As String, xValue As String)
    PrintHeader
    Print {"} &xName &{":"} &xValue &{",}
    End Sub

    '   Sub PrintError(msg As String)
    '       Call HttpBase..PrintError(msg)
    '       Print |"error":{"object":"| & Typename(Me) &|", "message":"| &msg &|"},|
    '   End Sub

    Sub Close
    'разделим потоки ошибок и сообщений
    'выводим ошибки из буфера
    Print |errors:[|
    Forall e In errList
    Print |{"| & Listtag(e) & |":{"object":"| & Typename(Me) &|", "message":"| & e &|"}},|
    End Forall
    'если первым елементом - errors[0]=="end" - нет ошибок
    Print |"end"],| 'зглушка окончания списка ошибок
    'выаодим сообщения из буфера
    Print |messages:[|
    Forall m In msgList
    '           Print |{"| &Listtag(m) &|":"| &m &|"},|
    Print |"| &m &|",|
    End Forall
    'если первым елементом - messages[0]=="end" - нет сообщений
    Print |"end"],| 'заглушка окончания списка сообщений
    HttpBase..Close
    End Sub
    End Class

    Class HttpObj As HttpBaseJSON
    End Class
    она могет и ХМЛ и JSON, правила мои :please:
     
  12. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    все это я к тому, что не знаю как у них (extND) там с JS, но судя по куску LS - не очень старались над доминошной частью
    и брать эту либу как основу для проектов - яб еще раз цать подумал
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
Загрузка...

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