Mercurial > p > roundup > code
diff roundup/cgi/templating.py @ 3509:dcaa366b2cc8
fix StructuredText import;
added _HTMLItem.copy_url;
added hyperlink parameter (default: True) to StringHTMLProperty.stext;
StringHTMLProperty.field accepts additional attributes for the input element
| author | Alexander Smishlajev <a1s@users.sourceforge.net> |
|---|---|
| date | Thu, 26 Jan 2006 09:55:22 +0000 |
| parents | b294cc477f2c |
| children | 75dc225613cc |
line wrap: on
line diff
--- a/roundup/cgi/templating.py Thu Jan 26 06:54:53 2006 +0000 +++ b/roundup/cgi/templating.py Thu Jan 26 09:55:22 2006 +0000 @@ -35,9 +35,12 @@ except ImportError: import StringIO try: - import StructuredText + from StructuredText.StructuredText import HTML as StructuredText except ImportError: - StructuredText = None + try: # older version + import StructuredText + except ImportError: + StructuredText = None # bring in the templating support from roundup.cgi.PageTemplates import PageTemplate, GlobalTranslationService @@ -648,7 +651,7 @@ If the "property" arg is given, it's passed through to the javascript help_window function. - + You can use inputtype="radio" to display a radio box instead of the default checkbox (useful for entering Link-properties) @@ -1080,6 +1083,29 @@ url = '%s%s/%s'%(self._classname, self._nodeid, name) return urllib.quote(url) + def copy_url(self, exclude=("messages", "files")): + """Construct a URL for creating a copy of this item + + "exclude" is an optional list of properties that should + not be copied to the new object. By default, this list + includes "messages" and "files" properties. Note that + "id" property cannot be copied. + + """ + exclude = ("id", "activity", "actor", "creation", "creator") \ + + tuple(exclude) + query = { + "@template": "item", + "@note": self._("Copy of %(class)s %(id)s") % { + "class": self._(self._classname), "id": self._nodeid}, + } + for name in self._props.keys(): + if name not in exclude: + query[name] = self[name].plain() + return self._classname + "?" + "&".join( + ["%s=%s" % (key, urllib.quote(value)) + for key, value in query.items()]) + class _HTMLUser(_HTMLItem): '''Add ability to check for permissions on users. ''' @@ -1217,7 +1243,7 @@ s = self.hyper_re.sub(self._hyper_repl, s) return s - def stext(self, escape=0): + def stext(self, escape=0, hyperlink=1): ''' Render the value of the property as StructuredText. This requires the StructureText module to be installed separately. @@ -1225,12 +1251,12 @@ if not self.is_view_ok(): return self._('[hidden]') - s = self.plain(escape=escape) + s = self.plain(escape=escape, hyperlink=hyperlink) if not StructuredText: return s return StructuredText(s,level=1,header=0) - def field(self, size = 30): + def field(self, **kwargs): ''' Render the property as a field in HTML. If not editable, just display the value via plain(). @@ -1244,7 +1270,10 @@ value = cgi.escape(str(self._value)) value = '"'.join(value.split('"')) - return self.input(name=self._formname,value=value,size=size) + + kwargs.setdefault("size", 30) + kwargs.update({"name": self._formname, "value": value}) + return self.input(**kwargs) def multiline(self, escape=0, rows=5, cols=40): ''' Render a multiline form edit field for the property. @@ -1532,12 +1561,12 @@ ''' if not self.is_view_ok(): return self._('[hidden]') - + if self._offset is None: offset = self._db.getUserTimezone() else: offset = self._offset - + if not self._value: return '' elif format is not self._marker:
