Avatar billede InboundCPH Novice
22. april 2004 - 12:02 Der er 23 kommentarer og
3 løsninger

Notes Designer - Default field value as image resource

Kan dette lade sig gøre?
Avatar billede mmmtm Nybegynder
22. april 2004 - 12:36 #1
Du vil have et billede som feltindhold - rigtig forstået ? Klient eller web ?
Avatar billede jogii Nybegynder
22. april 2004 - 13:42 #2
Der er forskellige muligheder, men vigtigst er først det som mmmtm spørger om.
Avatar billede InboundCPH Novice
22. april 2004 - 13:45 #3
Det er et redigerbart rich text felt. Ideen er at der som default er et billede f.eks hvor der står "billede på vej". Så kan man gå i edit mode og ændre det.
Avatar billede jogii Nybegynder
22. april 2004 - 13:47 #4
Klient: Notes eller Browser
Avatar billede InboundCPH Novice
22. april 2004 - 13:49 #5
Notes Klient
Avatar billede jogii Nybegynder
22. april 2004 - 14:14 #6
Du kunne vises "Billede er på vej"-resourcen som en fast del af formularen, sålænge der ikke er indsat et billede i dokumentet.

Umiddelbar er jeg ikke stødt på en formel til at placere en ImageResource programmatisk i et RT-felt. Men hvis det var en ekstern resource, så er det nemt nok. Jeg har lavet f.eks. lavet det med HTML-import.

En anden mulighed er at have et dokument med noget RT, som indeholder din billedresource. Med DBLookup kan du hente indholdet fra et andet RT-felt (dog max 64KB). Men da det drejer sig om en reference til en database-intern resource så fylder den nok ikke så meget.

Der er andre muligheder, men det er primært brugsmønstret af applikationen der er afgørende for hvad der er bedst.
Avatar billede cdelicht Nybegynder
23. april 2004 - 08:11 #7
Hvilken version af Notes klienten?
Avatar billede InboundCPH Novice
23. april 2004 - 08:46 #8
Det er 6.x
Avatar billede cdelicht Nybegynder
23. april 2004 - 13:30 #9
Svaret er "JA" ved hjælp af DXL.
Når du opretter dit dokument kan du indsætte et imageresource i feltet med
<richtext>
    <pardef id='1'/>
    <par def='1'>
        <picture width='50px' height='40px'>
            <imageref name='happyface.gif'/>
        </picture>
    </par>
</richtext>
Kræver blot du kun opretter dokumentet via en knap/agent
Avatar billede jogii Nybegynder
23. april 2004 - 16:03 #10
Hej cdelicht, det lyder spændende. Skal det være "Default Value" for RT-feltet du definierer sådan?
Avatar billede mmmtm Nybegynder
23. april 2004 - 17:55 #11
Kan det egenligt ikke klares med NotesUIdocument.Import ?
Avatar billede jogii Nybegynder
23. april 2004 - 22:52 #12
> mmmtm: jo, det ville have været min løsning, men ved at ligge som en ImageResource så kan man spare diskplads og performance.
Avatar billede mmmtm Nybegynder
23. april 2004 - 23:15 #13
>jogii: klart - glemte at den selvfølgelig henter lokalt ved import. Men kan man ikke luske sig til at den hentes fra serverens imageressourses ? Om ikke andet kan den vel hentes fra et fællesdrev (dersom det findes) så betyder det ikke noget med diskpladsen (dog blir det lidt ustruktureret, rent notesmæssigt..)
Har det nogen praktisk betydning for performance, når det kommer til stykket ?
Jeg ville nok hoppe på din hide/when - det er hurtigt at lave og gør det det skal.
Avatar billede jogii Nybegynder
24. april 2004 - 08:46 #14
ImageResources skulle efter sigende være rethurtige, fordi de er en del afdesignet. Serveren skal ikke lede særlig længe efter dem og de skal nok heller ikke fortolkes så meget (er hurtige at hente ud). HideWhen er den løsning der ville give mest systematik, mens det som cheeso ønsker giver mest fleksibilitet.
Avatar billede mmmtm Nybegynder
24. april 2004 - 11:28 #15
Hvad "ufleksibelt" er der ved hide/when ?
Avatar billede jogii Nybegynder
24. april 2004 - 16:12 #16
Fleksibilitet i placering og roller.
Hvis det ligger inde som en del af formularen, er det kun designeren der kan ændre layout. Hvis det ligger som en del af et RT-felt, så kan alle med forfatterrettigheder flytte det, f.eks. placere det i en tabel, eller fjerne det.
Det var derfor jeg nævnte brugsmønstret tidligere.
Avatar billede pr0gm4n Nybegynder
26. april 2004 - 16:34 #17
Et lidt anden indgangsvinkel som jeg har testet og som virker er, at tage udgangpunkt i brugen af RenderToRTItem(rtitem), en funktionalitet man kan lave mange smarte hack's med.

Jeg har lavet en form, hvorpå det billede der skal indsættes er indsat (fra en image ressource).

Dernæst oprettes det nye dokument fra en action i et view via et script a'la nedenstående:
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim docImg As NotesDocument   
Dim rtitem As NotesRichTextItem
Dim success As Variant
   
Set db = session.CurrentDatabase
Dim doc As New NotesDocument(db)
Set docImg = db.GetDocumentByID( "00000159E")
If docImg Is Nothing Then
Messagebox("Doh - Hvor er dok?")
End If
   
doc.form="RTF med billede" 'formular med billedet der skal indsættes
Set rtitem = New NotesRichTextItem( doc, "Body" )
Call doc.Save( True, True )
success = docImg.RenderToRTItem( rtitem )
Call doc.Save( True, True )
Call ws.EditDocument(True, doc)

Det springende punkt er at få fat i formularen. Jeg benytter her NoteID, det vil nok være smartere at benyde UNID eller tage fat i formularen via navn. (Men det her var hurtigst til proof of concept).

På formularen er der som nævnt indsat et billede, som er en imageressource, dette betyder at billedet, der bliver indsat automatisk bliver opdateret såfrem imageressourcen ændres.
Avatar billede pr0gm4n Nybegynder
26. april 2004 - 16:49 #18
De to gange "Call doc.Save( True, True )" bør udelades.
Avatar billede cdelicht Nybegynder
26. april 2004 - 18:09 #19
exporter dit dokument i DXM - ret feltet som jeg beskrev i den fremkomne xml fil
lav derneæst en agent/knap i script der genererer hele dokumentet inkl. RT feltet. Ex.:
Dim stream As NotesStream
Set stream = session.CreateStream
'.....
stream.WriteText {<?xml version='1.0' encoding='utf-8' ?>
<database xmlns='http://www.lotus.com/dxl' version='6.0'>
    <document form='DlgURLList2'>
        <item name='SaveOptions'>
            <formula>"0"</formula>
        </item>
            <item name='billedeTest'>
                <richtext>
            <pardef id='1'/>
                <par def='1'>
                    <picture width='50px' height='40px'>
                        <imageref name='happyface.gif'/>
                    </picture>
                </par>
            </richtext>
            </item>
    </document>
</database>}
Dim dmp As NotesDXLImporter
Set dmp = session.CreateDXLIMporter(stream, db)
dmp.Process
Avatar billede cdelicht Nybegynder
26. april 2004 - 18:12 #20
resualtat: du har nu et nyt dokument baseret på din form (her: DlgURLList2) som er oprettet i databasen men endnu ikke vist. Din agent skal derfor endvidere "fange" dette dokuemnt og bringe dete op i UI i edit mode mv.
Avatar billede pr0gm4n Nybegynder
26. april 2004 - 19:31 #21
--> cdelicht
Den 'xml' kode var jeg også kommet frem til. Håbede at du havde en smart måde at få en handle til dokumentet på
Avatar billede InboundCPH Novice
27. april 2004 - 08:40 #22
Tak for Jeres svar, men jeg tror der er lidt misforståelse omkring spørgsmålet. Der er ikke noget med at oprette et dokument - dokumentet eksisterer. Det skal bruges til en personale database. Oplysninger om personen hvor man kan paste et billede ind. Men istedet for at der bare er et tomt felt som udgangspunkt ville jeg sætte et billede ind af et kamera eller lign. Dette skal ligge som en image rescource, og kunne udskiftes således at når dokumentet gemmes har man det nye billede. Det kan være det kan løses ret simpelt ved at man har en knap - hvis man klikker på denne kan man skifte billedet ud - så skal man bare sørge for at billederne ligger som image rescources. Nogen der ved hvordan dette kan gøres, eller har en bedre ide?
Avatar billede pr0gm4n Nybegynder
27. april 2004 - 10:27 #23
Hvis du med det sidste du skriver mener at alle medarbejdernes billeder skal ligge som image-ressources. Så er det en dum ide. De enkelte medarbejderbilleder i personaledatabasen skal (helst) ligge på det enkelte medarbejderdokument.

Hvad angår at dokumentet allerede eksistere, så kan den løsning jeg har skitseret ovenfor snildt ændres til at sætte 'billedet-kommer-snart'-billedet ind.

Istedet for at oprette et nyt dokument "Dim doc As New NotesDocument(db)" så skal du løbe alle de dokumenter igennem og dem der ikke er indsat billede på, skal du så lave ovenstående øvelse med.
Avatar billede jogii Nybegynder
27. april 2004 - 19:24 #24
-pr0gm4n - Det er nok ikke det som cheesomatrix mener. Det er kun selve "fotograf undervejs" billedet, som evt. ligger på 10-20% af personerne i personaledb, der skal være en ImageResource.
Så vil jeg vende tilbage til forslaget om at embedde IR på formularen med en passende HideWhen formel. Umiddelbart kan denne HideWhen-formel være svær at fastlægge, da det ikke er supernemt at se om et RT-felt indeholder et billede eller ej. Jeg plejer dog at snyde lidt ved at anvende @DocSize. Hvis det tal der afleveres er > f.eks. 5000, så er der vist nok et billede på medarbejderdokumentet. Den holder ikke altid, men er nem at implenentere, og det er nogle gange det det handler om :-)
Avatar billede pr0gm4n Nybegynder
17. maj 2004 - 11:23 #25
--> cheesomatrix
Hva' sker der med det her spg.? Har du fundet en løsning? Plz luk spg. enten ved at dele point ud eller ved at konkludere at du ikke har fået svar.
Avatar billede InboundCPH Novice
17. maj 2004 - 13:01 #26
Har desværre ikke haft tid til at kigge på det, men er siker på at Jeres svar kan bruges! - tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester