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). |