AreaInputTag: kleines Icon neben Input zum Umschalten auf Textarea
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 31 Aug 2017 11:46:34 +0000 (13:46 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 31 Aug 2017 11:49:41 +0000 (13:49 +0200)
In Masken, in denen es keinen »Erneuern«-Button gab (neuer
Artikelcontroller), hatten die Benutzer*innen somit auch keine
Möglichkeit, aus dem normalen Input eine Textarea zu machen. Dies hier
ist nun eine manuelle Möglichkeit dafür.

SL/Template/Plugin/L.pm
image/edit-entry.png [new file with mode: 0644]
js/kivi.js

index 0b0c760..a8e6381 100644 (file)
@@ -279,9 +279,15 @@ sub areainput_tag {
   my $maxrows = delete $attributes{max_rows};
   my $rows    = $::form->numtextrows($value, $cols, $maxrows, $minrows);
 
-  return $rows > 1
-    ? $self->textarea_tag($name, $value, %attributes, rows => $rows, cols => $cols)
-    : $self->input_tag($name, $value, %attributes, size => $cols);
+  $attributes{id} ||= _tag_id();
+  my $id            = $attributes{id};
+
+  return $self->textarea_tag($name, $value, %attributes, rows => $rows, cols => $cols) if $rows > 1;
+
+  return '<span>'
+    . $self->input_tag($name, $value, %attributes, size => $cols)
+    . "<img src=\"image/edit-entry.png\" onclick=\"kivi.switch_areainput_to_textarea('${id}')\" style=\"margin-left: 2px;\">"
+    . '</span>';
 }
 
 sub multiselect2side {
diff --git a/image/edit-entry.png b/image/edit-entry.png
new file mode 100644 (file)
index 0000000..c8888f3
Binary files /dev/null and b/image/edit-entry.png differ
index 41b3762..fbe0c95 100644 (file)
@@ -535,6 +535,23 @@ namespace("kivi", function(ns) {
 
     return true;
   };
+
+  ns.switch_areainput_to_textarea = function(id) {
+    var $input = $('#' + id);
+    if (!$input.length)
+      return;
+
+    var $area = $('<textarea></textarea>');
+
+    $area.prop('rows', 3);
+    $area.prop('cols', $input.prop('size') || 40);
+    $area.prop('name', $input.prop('name'));
+    $area.prop('id',   $input.prop('id'));
+    $area.val($input.val());
+
+    $input.parent().replaceWith($area);
+    $area.focus();
+  };
 });
 
 kivi = namespace('kivi');