;ò w¼>Bc@s+dklZdkZdklZlZlZdkZdkl Z dk l Z dk l Z dklZdklZdklZd ZeieƒZd fd „ƒYZd eifd „ƒYZdefd„ƒYZe eƒdefd„ƒYZe eƒdefd„ƒYZe eƒdS((s nested_scopesN(sescapesunescapes quoteattr(sClassSecurityInfo(sInitializeClass(s SimpleItem(sSilvaPermissions(smangle(s interfacess×(((http|https|ftp|news)://([A-Za-z0-9%\-_]+(:[A-Za-z0-9%\-_]+)?@)?([A-Za-z0-9\-]+\.)+[A-Za-z0-9]+)(:[0-9]+)?(/([A-Za-z0-9\-_\?!@#$%^&*/=\.]+[^\.\),;\|])?)?|(mailto:[A-Za-z0-9_\-\.]+@([A-Za-z0-9\-]+\.)+[A-Za-z0-9]+))sSupportRegistrycBsMtZd„Zd„Zd„Zd„Zd„Zd„Zeed„Z RS(NcCshttf|<|_dS(N(sNones default_classsselfs_mapping(sselfs default_class((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pys__init__scCs||i||fs semssssuperssssubsssabbrsssacronymsslinksurls s underlinesssindexsnames#s edit_modeis[[%s]]sbrs
s%s (sresultsnodes childNodesschildsnodeTypes TEXT_NODEsappendsmanglesentitiess nodeValues ELEMENT_NODEsnodeNamesselfs_renderHtmlHelpers view_types getAttributespaths _linkHelpersurls hasAttributestargetsnamesgenerateAnchorNamesanchoridsREQUESTsgets edit_modesjoin( sselfsnodes view_typesanchoridstargetsurls edit_modesresultschildspathsname((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pys_renderHtmlHelper|s„            !c Csžg}x„|iD]y}|i|ijo|i|iƒqn|i|ijoqn|i djo4|idƒ|i|i |ƒƒ|idƒq|i djo4|idƒ|i|i |ƒƒ|idƒq|i djo4|idƒ|i|i |ƒƒ|id ƒq|i d jo4|id ƒ|i|i |ƒƒ|id ƒq|i d job|i dƒo|id|i dƒƒn|idƒ|i|i |ƒƒ|idƒq|i djoít i|i dƒƒ}t i|i||i dƒƒƒ}|idƒo*|i dƒ}|djo d}qznt i|i dƒƒ}|i |ƒ}|od||f}n d|}|i|ƒ|i|ƒ|idƒq|i djo4|idƒ|i|i |ƒƒ|idƒq|i djo=|idƒ|it i|i dƒƒƒ|id ƒq|i d!job|i dƒo|id"|i dƒƒn|id#ƒ|i|i |ƒƒ|id$ƒq|i d job|idƒ|i dƒo|id%|i dƒƒn|i|i |ƒƒ|id$ƒq|i d&jo|id'ƒq|id(|i |ƒƒqWdi|ƒSd)S(*s1Render textual content as editable text. sstrongsssemssssuperssssubsssabbrstitlesssslinksurlstargetss_blanks
s ss underlinesssindexssnamessacronymss s s title="%s"sbrs sERROR %s ERROR N(sresultsnodes childNodesschildsnodeTypes TEXT_NODEsappends nodeValues ELEMENT_NODEsnodeNamesselfs_renderEditableHelpers getAttributesmanglesentitiessurls _linkHelpersurl_comparators hasAttributestargetslinktextstagsjoin( sselfsnodestargetsurlsurl_comparatorstagsresultschildslinktext((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pys_renderEditableHelperÆsŒ      $        cCs |djo|Snti|ƒo|Sn|dddgjo|Sn|idƒ o"|iƒ}|iƒd|Sngi}|i dƒD]}||i ddƒƒq–~}|i|tƒ}|tjo|Snt|idƒo|iƒSn|SdS( Nsis?s#s/sasciisignores absolute_url(spaths _url_matchsmatchs startswithscontexts get_containers containers absolute_urlsappends_[1]ssplitspsencodes splitpathsrestrictedTraversesNonesobjshasattrsaq_base(sselfscontextspaths splitpaths_[1]sps containersobj((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pys _linkHelpers   < (s__name__s __module__s__doc__sClassSecurityInfossecuritysdeclareProtectedsSilvaPermissionssChangeSilvaContentsparsesAccessContentsInformations renderHTMLsrenderEditables_renderHtmlHelpers_renderEditableHelpers _linkHelper(((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pysParagraphSupport\s      J QsHeadingSupportcBs3tZdZeƒZeieidƒd„ZRS(s6 Mixed content support for SilvaDocument headings sparsecCs^dkl}t|dƒ}|i}x"|iƒo|i|i ƒq(W|i ||ƒdS(s% Parse input string to a DOM (sHEADING_SUBSETsUTF-8N( ssprout.silvasubsetsHEADING_SUBSETsunicodesinputstrsselfs_nodesnodes hasChildNodess removeChilds firstChilds filteredParse(sselfsinputstrsnodesHEADING_SUBSET((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pysparse>s   ( s__name__s __module__s__doc__sClassSecurityInfossecuritysdeclareProtectedsSilvaPermissionssChangeSilvaContentsparse(((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pysHeadingSupport7s  s PreSupportcBsXtZdZeƒZeieidƒd„Zeieidƒd„Z d„Z RS(s: Mixed content support for SilvaDocument pre elements sparsecCsot|dƒ}|i|ƒ}|i}|i}x"|iƒo|i |i ƒq3W|i |i |ƒƒdS(siAdd the pre element to the dom Don't have to much work here, since no markup is allowed sutf-8N( sunicodesinputstrsselfs_unifyLineBreaks_nodesnodes ownerDocumentsdocs hasChildNodess removeChilds firstChilds appendChildscreateTextNode(sselfsinputstrsnodesdoc((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pysparseSs   srenderEditablecCsid}|i}xO|iD]D}|i|ijpt‚|i t jpt‚||i 7}qW|SdS(Ns( sresultsselfs_nodesnodes childNodesschildsnodeTypes TEXT_NODEsAssertionErrors firstChildsNones nodeValue(sselfsnodesresultschild((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pysrenderEditablefs  cCsX|idƒdjo|idƒdjo|iddƒSn|iddƒS|SdS(s? Returns data with unambigous line breaks, i.e only . s iÿÿÿÿs sN(sinputstrsfindsreplace(sselfsinputstr((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pys_unifyLineBreakos ,( s__name__s __module__s__doc__sClassSecurityInfossecuritysdeclareProtectedsSilvaPermissionssChangeSilvaContentsparsesrenderEditables_unifyLineBreak(((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pys PreSupportLs    (s __future__s nested_scopessresxml.sax.saxutilssescapesunescapes quoteattrs Acquisitions AccessControlsClassSecurityInfosGlobalssInitializeClasssOFS.SimpleItems SimpleItemsProducts.SilvasSilvaPermissionssmanglesProducts.SilvaDocuments interfacess URL_PATTERNscompiles _url_matchsSupportRegistrysExplicitsMixedContentSupportsParagraphSupportsHeadingSupports PreSupport(s PreSupportsunescapesHeadingSupports nested_scopess SimpleItems interfacessClassSecurityInfosInitializeClasssMixedContentSupportsParagraphSupportsres quoteattrs _url_matchsSilvaPermissionssescapes URL_PATTERNsmangles AcquisitionsSupportRegistry((sK/mnt/gmirror/ports/www/zope-silva/work/SilvaDocument/mixedcontentsupport.pys?s&         (Ù  /