How can I implement this in a view. I am not sure how to call that markmin 
action to be used instead of MARKMIN helper.

Dana srijeda, 8. svibnja 2013. 17:23:24 UTC+2, korisnik Massimo Di Pierro 
napisao je:
>
> There is an "official" syntax for this. 
>
>     @{component:controller/function/args}
>
> To enable this and enable OEMBED I do:
>
> def markmin(body):
>     from gluon.contrib.autolinks import expand_one
>     def component(text):
>         items = text.split('/')
>         controller, function, args = items[0], items[1], items[2:]
>         return LOAD(controller, function, args=args, ajax=True).xml()
>     return MARKMIN(body, url=True, environment={'component':component},
>                    autolinks=lambda link: expand_one(link, {})).xml()
> db.table.field.represent = lambda v,r: markmin(v or '')
>
> This is done automatically by auth.wiki()
>
> Massimo
>
> On Wednesday, 8 May 2013 09:16:21 UTC-5, villas wrote:
>>
>> For anyone interested in my monologue... 
>
> Function to my previous ideas,  a function as follows could handle both 
>> internal and external URLs.  
>> I also included a simple check for allowed domains:
>>
>> def __component(text):
>>     if text and text.lower().strip().startswith('http'):
>>         from urlparse import urlparse               
>>         allowed_domains = [
>>                          'www.domain1.com', 
>>                          'www.domain2.com', 
>>                        ]
>>         if allowed_domains and not any(i in urlparse(text)[1] for i 
>> inallowed_domains
>> ): 
>>             return H1('domain not allowed').xml()
>>         else:
>>             return LOAD(url=text, ajax=True).xml()
>>     else:
>>         items = text.split('/')
>>         controller, function, args = items[0], items[1], items[2:]
>>         return LOAD(controller, function, args=args, ajax=True).xml()
>>
>> MARKMIN(mytext,url=True,extra=dict(component = lambda value: __component(
>> value)))
>>
>> In our Markmin we can then include...
>>
>> ``http://www.domain1.com/app/mycont/myfunc/arg1``:component<http://www.domain1.com/app/mycont/myfunc/arg1:component>
>>
>> and/or
>>
>> ``mycont/myfunc/arg1``:component
>>
>> .  
>> Maybe someone has other better, or more flexibile, ideas?
>>
>>
>> On Wednesday, May 8, 2013 2:09:28 AM UTC+1, villas wrote:
>>>
>>> I can do something like this...
>>> mytext = """
>>>
>>> ``default/get_cms_article/4``:component
>>>
>>> """
>>>
>>> def __component(text):
>>>     items = text.split('/')
>>>     controller, function, args = items[0], items[1], items[2:]
>>>     return LOAD(controller, function, args=args, ajax=True).xml()
>>>
>>> MARKMIN_ENV = dict( 
>>>     component = lambda value: __component(value)
>>> )  
>>>
>>> MARKMIN(mytext,url=True,extra=MARKMIN_ENV)
>>>
>>>
>>> This uses LOAD.  What is recommended for loading components from other 
>>> domains?  I think I have used JSON for that in the past,  but maybe there 
>>> are other ways,  I am not sure that I am using the currently recommended 
>>> methods for Markmin.
>>>
>>> Thanks!
>>>
>>>
>>>
>>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to