<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://frp.sage.fr/wiki1000/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://frp.sage.fr/wiki1000/index.php?action=history&amp;feed=atom&amp;title=Export_Netvibes_%28source%29</id>
		<title>Export Netvibes (source) - Historique des versions</title>
		<link rel="self" type="application/atom+xml" href="https://frp.sage.fr/wiki1000/index.php?action=history&amp;feed=atom&amp;title=Export_Netvibes_%28source%29"/>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php?title=Export_Netvibes_(source)&amp;action=history"/>
		<updated>2026-04-26T06:48:59Z</updated>
		<subtitle>Historique pour cette page sur le wiki</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php?title=Export_Netvibes_(source)&amp;diff=2692&amp;oldid=prev</id>
		<title>Syfre : Nouvelle page : Cette procédure construit le Widget Netvibes :  &lt;source lang='delphi'&gt; const   netvibes_widget= '&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml...</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php?title=Export_Netvibes_(source)&amp;diff=2692&amp;oldid=prev"/>
				<updated>2009-12-02T09:07:34Z</updated>
		
		<summary type="html">&lt;p&gt;Nouvelle page : Cette procédure construit le Widget Netvibes :  &amp;lt;source lang=&amp;#039;delphi&amp;#039;&amp;gt; const   netvibes_widget= &amp;#039;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Cette procédure construit le Widget Netvibes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;&lt;br /&gt;
const&lt;br /&gt;
  netvibes_widget=&lt;br /&gt;
'&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xmlns:widget=&amp;quot;http://www.netvibes.com/ns/&amp;quot;&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;head&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;title&amp;gt;Sage France&amp;lt;/title&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot; /&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;meta name=&amp;quot;author&amp;quot; content=&amp;quot;Sage France&amp;quot; /&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;meta name=&amp;quot;description&amp;quot; content=&amp;quot;&amp;quot; /&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;meta name=&amp;quot;apiVersion&amp;quot; content=&amp;quot;1.0&amp;quot; /&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;meta name=&amp;quot;debugMode&amp;quot; content=&amp;quot;false&amp;quot; /&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;widget:preferences&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;/widget:preferences&amp;gt;'#13#10+&lt;br /&gt;
//'&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;http://www.netvibes.com/themes/uwa/style.css&amp;quot;/&amp;gt;'#13#10+&lt;br /&gt;
//'&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://www.netvibes.com/js/UWA/load.js.php?env=Standalone&amp;quot;&amp;gt;$BUG&amp;lt;/script&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;![CDATA['#13#10+&lt;br /&gt;
'var SageUTILS={};'#13#10+&lt;br /&gt;
'SageUTILS.setFrameProperties=function(f) {'#13#10+&lt;br /&gt;
'  f.border=&amp;quot;0&amp;quot;; f.frameBorder=&amp;quot;0&amp;quot;; f.scrolling=&amp;quot;no&amp;quot;;'#13#10+&lt;br /&gt;
'  with (f.style) { border=&amp;quot;0px&amp;quot;; margin=&amp;quot;0px&amp;quot;; padding=&amp;quot;0px&amp;quot;; width=&amp;quot;100%&amp;quot;; display=&amp;quot;block&amp;quot;;}'#13#10+&lt;br /&gt;
'};'#13#10+&lt;br /&gt;
'SageUTILS.extractInt=function(s) {'#13#10+&lt;br /&gt;
'   if (!(s) ||  (s ==&amp;quot;&amp;quot;)) return &amp;quot;&amp;quot;;'#13#10+&lt;br /&gt;
'   var i=s.indexOf(&amp;quot;%&amp;quot;);'#13#10+&lt;br /&gt;
'   if (i &amp;gt; 0) return &amp;quot;&amp;quot;;'#13#10+&lt;br /&gt;
'   i=s.indexOf(&amp;quot;px&amp;quot;);'#13#10+&lt;br /&gt;
'   if (i &amp;gt; 0) s=s.substr(0, i);'#13#10+&lt;br /&gt;
'   return s;'#13#10+&lt;br /&gt;
'};'#13#10+&lt;br /&gt;
'SageUTILS.createFrameContent=function() {'#13#10+&lt;br /&gt;
'  var f=widget.createElement(&amp;quot;iframe&amp;quot;);'#13#10+&lt;br /&gt;
'  f.id=&amp;quot;frame_&amp;quot;+widget.id;'#13#10+&lt;br /&gt;
'  var s=SageUTILS.extractInt(widget.getValue(&amp;quot;height&amp;quot;));'#13#10+&lt;br /&gt;
'  SageUTILS.setFrameProperties(f);'#13#10+&lt;br /&gt;
'  if (s !=&amp;quot;&amp;quot;) {f.height=s; f.style.height=s+&amp;quot;px&amp;quot;;}'#13#10+&lt;br /&gt;
'  widget.setBody(f);'#13#10+&lt;br /&gt;
'  var fsrc=&amp;quot;$URL&amp;quot;$URLPARAMS;'#13#10+&lt;br /&gt;
'  fsrc=fsrc+&amp;quot;&amp;amp;rfid=&amp;quot;+widget.id;'#13#10+&lt;br /&gt;
'  f.src=fsrc;'#13#10+&lt;br /&gt;
'};'#13#10+&lt;br /&gt;
'widget.onLoad=function() {'#13#10+&lt;br /&gt;
'  SageUTILS.createFrameContent();'#13#10+&lt;br /&gt;
'};'#13#10+&lt;br /&gt;
'//]]&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;/script&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;/head&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;body&amp;gt;'#13#10+&lt;br /&gt;
'  &amp;lt;p&amp;gt;Sage Module is loading ...&amp;lt;/p&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;/body&amp;gt;'#13#10+&lt;br /&gt;
'&amp;lt;/html&amp;gt;';&lt;br /&gt;
&lt;br /&gt;
class procedure TXMLRpcPortalServer.createNetvibesParams(iSender, iTarget: Tobject; var iStrParams: String; var index: integer);&lt;br /&gt;
var p: TxmlItem;  param: TModuleParam; itm, ci, ni: TxmlItem;&lt;br /&gt;
    var s1, s2, s3: String; idy: integer;&lt;br /&gt;
begin&lt;br /&gt;
  p := TxmlItem(iTarget);&lt;br /&gt;
  param := TModuleParam(iSender);&lt;br /&gt;
  if not TXMLRpcPortalServer.canShowParam(param, true) then Exit;&lt;br /&gt;
  s1 := Format('+&amp;quot;&amp;amp;p[%d].name=%s&amp;quot;',[index, THtmlUtility.HTTPEncode(param.ParamName)]);&lt;br /&gt;
  s2 := Format('+&amp;quot;&amp;amp;p[%d].value=&amp;quot;+encodeURIComponent(widget.getValue(&amp;quot;%s&amp;quot;))', [index, THtmlUtility.HTTPEncode(param.ParamName)]);&lt;br /&gt;
  s3 := '';&lt;br /&gt;
  //tjBoolean, tjNumber, tjDateTime,, tjEnum, tjObject, tjArray&lt;br /&gt;
  if (param.ParamType = tjString) or (param.ParamType = tjInt)&lt;br /&gt;
    or (param.ParamType = tjNumber) or (param.ParamType = tjMemo)&lt;br /&gt;
    or (param.ParamType = tjDateTime) or (param.ParamType = tjObject)&lt;br /&gt;
    or (param.ParamType = tjArray)or (param.Title = '') or (param.ParamType = tjBoolean)&lt;br /&gt;
  then&lt;br /&gt;
  begin&lt;br /&gt;
    itm := TxmlItem.Create(p,'preference');&lt;br /&gt;
    itm.AttributesValue['name']:=param.ParamName;&lt;br /&gt;
    if( param.Title = '') or  not TXMLRpcPortalServer.canShowParam(param, false)  then&lt;br /&gt;
    begin&lt;br /&gt;
      itm.AttributesValue['type']:='hidden';&lt;br /&gt;
    end else&lt;br /&gt;
    begin&lt;br /&gt;
      if param.ParamType = tjBoolean then&lt;br /&gt;
        itm.AttributesValue['type']:='boolean'&lt;br /&gt;
      else&lt;br /&gt;
        itm.AttributesValue['type']:='text';&lt;br /&gt;
    end;&lt;br /&gt;
    itm.AttributesValue['defaultValue']:=param.ParamValue;&lt;br /&gt;
  end else if (param.ParamType = tjEnum) then&lt;br /&gt;
  begin&lt;br /&gt;
    itm := TxmlItem.Create(p,'preference');&lt;br /&gt;
    itm.AttributesValue['name']:=param.ParamName;&lt;br /&gt;
    itm.AttributesValue['type']:='list';&lt;br /&gt;
    itm.AttributesValue['label']:=param.Title;&lt;br /&gt;
    itm.AttributesValue['defaultValue']:=param.ParamValue;&lt;br /&gt;
    for idy := 0 to param.Count - 1 do&lt;br /&gt;
    begin&lt;br /&gt;
      ci := param[idy];&lt;br /&gt;
      if SameText(ci.ItemName, 'enum') then&lt;br /&gt;
      begin&lt;br /&gt;
        ni := TxmlItem.Create(itm, 'option');&lt;br /&gt;
        ni.AddAttribute('value', ci.AttributesValue['value']);&lt;br /&gt;
        ni.AddAttribute('label', ci.AttributesValue['display']);&lt;br /&gt;
      end;&lt;br /&gt;
    end;&lt;br /&gt;
  end;&lt;br /&gt;
  if (param.ParamType = tjBoolean) then&lt;br /&gt;
    s3 := Format('+&amp;quot;&amp;amp;p[%d].paramtype=bool&amp;quot;', [Index])&lt;br /&gt;
  else if (param.ParamType = tjInt) then&lt;br /&gt;
    s3 := Format('+&amp;quot;&amp;amp;p[%d].paramtype=int&amp;quot;', [Index]);&lt;br /&gt;
  iStrParams := iStrParams + s1 + s2 + s3;&lt;br /&gt;
  inc(Index);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
class function TXMLRpcPortalServer.ProduceNetvibesModule(iRequest: TXmlRpcCall;&lt;br /&gt;
  iHttpRequest: TxmlDocument; var info: String;&lt;br /&gt;
  iFormat: TXmlResponseFormatType): TObject;&lt;br /&gt;
var&lt;br /&gt;
  doc : TxmlDocument; iResInfo: TXmlWebResponseInfo;&lt;br /&gt;
  iurl, ititle, s: String;&lt;br /&gt;
  modid, iconfirm: String;&lt;br /&gt;
  iapp: TApplicationItem; m: TModuleItem;&lt;br /&gt;
  iroot, itm, pref: TxmlItem;&lt;br /&gt;
  idx, index : integer; isError, igetURL:boolean;&lt;br /&gt;
  mn: String; ss : TxmlRpcStruct;&lt;br /&gt;
  canConfirm: boolean;   ph: TModuleParam;&lt;br /&gt;
begin&lt;br /&gt;
  iconfirm := '';&lt;br /&gt;
  canConfirm:= true;&lt;br /&gt;
  isError := false;&lt;br /&gt;
  Result := nil;&lt;br /&gt;
  ititle := _TP('Sage Module');&lt;br /&gt;
  modid := ExtractParamByName(iRequest, 'id');&lt;br /&gt;
  iurl := ExtractParamByName(iRequest, 'url');&lt;br /&gt;
  igetURL := ExtractParamByName(iRequest, 'export') ='1' ;&lt;br /&gt;
  if iurl = '' then iurl := 'http://www.sage.fr';&lt;br /&gt;
  if iurl[length(iurl)] &amp;lt;&amp;gt; '/' then iurl := iurl + '/';&lt;br /&gt;
  iurl := iurl + Format('%s/%s/%s/%s.%s?netvibes=1', [c_l1000_root_server,c_xmlrpc_action, TXmlRpcUtility.ResponseFormatToString(rREST),c_rest_service_portal,c_rest_service_standalone]);&lt;br /&gt;
  iapp := TPortalDocument(UserContexts.CurrentUser.UserPortal).Application;&lt;br /&gt;
  m := iapp.FindModule(modid);&lt;br /&gt;
  mn := 'emptymodule';&lt;br /&gt;
  if Assigned(m) then&lt;br /&gt;
  begin&lt;br /&gt;
    ititle := m.Title;&lt;br /&gt;
    iurl := iurl + '&amp;amp;modtype=' + m.ModType;&lt;br /&gt;
    mn:=m.ModType;&lt;br /&gt;
    ph := m.FindParamByName('height');&lt;br /&gt;
    if Assigned(ph) then canConfirm := false;&lt;br /&gt;
  end;&lt;br /&gt;
  doc := TxmlDocument.Create(nil);&lt;br /&gt;
  doc.Encoding := cstUTF8Encoding;&lt;br /&gt;
  iResInfo := TXmlWebResponseInfo.Create(nil);&lt;br /&gt;
  try&lt;br /&gt;
    doc.LoadfromString(StringReplace(netvibes_widget, '$URL', iurl, []));&lt;br /&gt;
    iurl := '';&lt;br /&gt;
    if Assigned(m) then&lt;br /&gt;
    begin&lt;br /&gt;
      iroot := doc.DocumentElement;&lt;br /&gt;
      iroot := iroot.FindSelfItem('head');&lt;br /&gt;
      pref := iroot.FindSelfItem('title');&lt;br /&gt;
      if Assigned(pref) then pref.text:=ititle;&lt;br /&gt;
      pref := nil;&lt;br /&gt;
      if Assigned(iroot) then&lt;br /&gt;
          pref := iroot.FindSelfItem('widget:preferences');&lt;br /&gt;
      if Assigned(pref) then&lt;br /&gt;
      begin&lt;br /&gt;
        index := 0;&lt;br /&gt;
        m.EnumParams(pref,createNetvibesParams, iurl, index);&lt;br /&gt;
      end;&lt;br /&gt;
    end;&lt;br /&gt;
    iroot := doc.DocumentElement;&lt;br /&gt;
    iroot := iroot.FindSelfItem('head');&lt;br /&gt;
    for idx := 0 to iroot.Count - 1 do&lt;br /&gt;
    begin&lt;br /&gt;
      itm := iroot.Items[idx];&lt;br /&gt;
      if SameText(itm.ItemName, 'script') and (itm.AttributesValue['src']='') then&lt;br /&gt;
      begin&lt;br /&gt;
        s := itm.Text;&lt;br /&gt;
        s := StringReplace(s, '$URLPARAMS', iurl, []);&lt;br /&gt;
        itm.Text := #13#10'//';&lt;br /&gt;
        itm.AddCData(s);&lt;br /&gt;
        itm.AddText(#13#10);&lt;br /&gt;
      end;&lt;br /&gt;
    end;&lt;br /&gt;
    doc.FormatOptions := doc.FormatOptions + [xfoOmitXMLDeclaration, xfoUTF8];&lt;br /&gt;
    s :=StringReplace(doc.SaveToString, '$BUG', '', []);&lt;br /&gt;
    s :=StringReplace(s, '//&amp;lt;![CDATA[', '', []);&lt;br /&gt;
    s := StringReplace(s, '//]]&amp;gt;', '', []);&lt;br /&gt;
&lt;br /&gt;
    Result := TStringStream.Create(s);&lt;br /&gt;
    if (igetURL) then&lt;br /&gt;
    begin&lt;br /&gt;
      try&lt;br /&gt;
        mn := StringReplace(mn, '-', '', [rfReplaceAll]);&lt;br /&gt;
        mn := StringReplace(mn, '.', '', [rfReplaceAll]);&lt;br /&gt;
        iurl := TExportUtility.ExportFile(TStream(Result), mn+FormatDateTime('yyyymmddhhmmssnn', Now())+'.html');&lt;br /&gt;
      except&lt;br /&gt;
        isError := true;&lt;br /&gt;
      end;&lt;br /&gt;
      FreeAndNil(Result);&lt;br /&gt;
      if isError or (iurl='') then&lt;br /&gt;
      begin&lt;br /&gt;
        s := ExtractParamByName(iRequest, 'url');&lt;br /&gt;
        if s='' then s:='/';&lt;br /&gt;
        if s[length(s)] &amp;lt;&amp;gt; '/' then s := s + '/';&lt;br /&gt;
        iurl := s + Format('%s/%s/%s/%s.%s?id=%s&amp;amp;url=%s', [c_l1000_root_server,c_xmlrpc_action,&lt;br /&gt;
          TXmlRpcUtility.ResponseFormatToString(rREST),c_rest_service_portal,&lt;br /&gt;
          'netvibes', modid ,THtmlUtility.HTTPEncode(s)]);&lt;br /&gt;
      end else&lt;br /&gt;
      begin&lt;br /&gt;
        if canConfirm then iconfirm := Format(_TP('Ajoutez un &amp;quot;UWA widget&amp;quot; vide, cochez &amp;quot;Inline this widget&amp;quot; et%s mettez &amp;quot;Widget URL&amp;quot;:'),[#13#10]);&lt;br /&gt;
      end;&lt;br /&gt;
      Result := TXmlRpcResult.Create(nil);&lt;br /&gt;
      ss:=TXmlRpcResult(Result).Params.AddStruct;&lt;br /&gt;
      ss.AddString('URI', iurl);&lt;br /&gt;
      ss.AddString('confirm', iconfirm);&lt;br /&gt;
    end else&lt;br /&gt;
    begin&lt;br /&gt;
      iResInfo.AddHeader('date', LocalDateTimeToGMT(Now()));&lt;br /&gt;
      iResInfo.AddHeader('expires', LocalDateTimeToGMT(Now()));&lt;br /&gt;
      iResInfo.AddResponse('content_type',c_utf8_html_type);&lt;br /&gt;
      iResInfo.AddResponse('bin_stream', '1');&lt;br /&gt;
      FreeAndNil(doc);&lt;br /&gt;
    end&lt;br /&gt;
  finally&lt;br /&gt;
     FreeAndNil(doc);&lt;br /&gt;
     if Assigned(iResInfo.DocumentElement) then info := iResInfo.SaveToString;&lt;br /&gt;
     FreeAndnil(iResInfo);&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{footer}}&lt;br /&gt;
[[Category:Portail]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	</feed>