web/formfields.py
changeset 9718 927d035b6921
parent 9444 6012cf57f48e
child 9821 2077c8da1893
equal deleted inserted replaced
9717:a6834e2dcc1b 9718:927d035b6921
   527 
   527 
   528     * :class:`~cubicweb.web.formwidgets.TextArea` in all other cases
   528     * :class:`~cubicweb.web.formwidgets.TextArea` in all other cases
   529     """
   529     """
   530     widget = fw.TextArea
   530     widget = fw.TextArea
   531     size = 45
   531     size = 45
       
   532     placeholder = None
   532 
   533 
   533     def __init__(self, name=None, max_length=None, **kwargs):
   534     def __init__(self, name=None, max_length=None, **kwargs):
   534         self.max_length = max_length # must be set before super call
   535         self.max_length = max_length # must be set before super call
   535         super(StringField, self).__init__(name=name, **kwargs)
   536         super(StringField, self).__init__(name=name, **kwargs)
   536 
   537 
   545         if isinstance(self.widget, fw.TextArea):
   546         if isinstance(self.widget, fw.TextArea):
   546             self.init_text_area(self.widget)
   547             self.init_text_area(self.widget)
   547         elif isinstance(self.widget, fw.TextInput):
   548         elif isinstance(self.widget, fw.TextInput):
   548             self.init_text_input(self.widget)
   549             self.init_text_input(self.widget)
   549 
   550 
       
   551         if self.placeholder:
       
   552             self.widget.attrs.setdefault('placeholder', self.placeholder)
       
   553 
   550     def init_text_input(self, widget):
   554     def init_text_input(self, widget):
   551         if self.max_length:
   555         if self.max_length:
   552             widget.attrs.setdefault('size', min(self.size, self.max_length))
   556             widget.attrs.setdefault('size', min(self.size, self.max_length))
   553             widget.attrs.setdefault('maxlength', self.max_length)
   557             widget.attrs.setdefault('maxlength', self.max_length)
   554 
   558 
   555     def init_text_area(self, widget):
   559     def init_text_area(self, widget):
   556         if self.max_length and self.max_length < 513:
   560         if self.max_length and self.max_length < 513:
   557             widget.attrs.setdefault('cols', 60)
   561             widget.attrs.setdefault('cols', 60)
   558             widget.attrs.setdefault('rows', 5)
   562             widget.attrs.setdefault('rows', 5)
       
   563 
       
   564     def set_placeholder(self, placeholder):
       
   565         self.placeholder = placeholder
       
   566         if self.widget and self.placeholder:
       
   567             self.widget.attrs.setdefault('placeholder', self.placeholder)
   559 
   568 
   560 
   569 
   561 class PasswordField(StringField):
   570 class PasswordField(StringField):
   562     """Use this field to edit password (`Password` yams type, encoded python
   571     """Use this field to edit password (`Password` yams type, encoded python
   563     string).
   572     string).