Werte beim Speichern in ein anderes Feld schreiben

Dieser Artikel beschreibt, wie Sie Werte eines Feldes beim Speichern der Datei in ein anderes Feld schreiben.

Sofern Sie Werte, die der Benutzer z.B. über die Metadaten pflegt auch in andere Elemente schreiben wollen, können Sie dies direkt über die Metadaten-Maske realisieren.

Beispiel 1: Titel über Objekt pflegen und in wd:title schreiben

Ein Benutzer pflegt so z.B. den Titel einer Datei über ein Objekt (z.B. wd:data id="title"). Dieser Wert wird dann beim Speichern der Datei über die Javascript-Funktion "wOnBeforeSave" zusätzlich in den Titel der Datei (wd:title) geschrieben. Nehmen Sie dies einfach im schon bestehenden JS-Block der BASE Projektbasis innerhalb der Funktion "wOnBeforeSave" auf (siehe Beispiel unten).

Beispiel 1: Auszug aus der standard.metadata.php zur Titel-Pflege über Objekt

...
<xsl:choose>
  <xsl:when test="/wd:document/wd:extension/wd:object/@type = 'event' and /wd:document/wd:extension/wd:object/wd:data[@id='title']"> 
    <div class="wEditorExtensionLabel" style="display:none">Titel&#160;<span>(wird über die Objekte gepflegt)</span></div>
    <div class="wEditorExtensionValue" style="display:none">                    
      <!--web:text:start editor="input" inputStyle="width:100%;" validator="required" errorMessage=""--><xsl:value-of select="/wd:document/wd:extension/wd:meta/wd:title/text()"/><!--web:text:stop-->
    </div>
  </xsl:when> 
  <xsl:otherwise> 
    <div class="wEditorExtensionLabel">Titel*&#160;<span>(wird über die Objekte gepflegt)</span></div>
    <div class="wEditorExtensionValue">                    
      <!--web:text:start editor="input" inputStyle="width:100%;" validator="required" errorMessage=""--><xsl:value-of select="/wd:document/wd:extension/wd:meta/wd:title/text()"/><!--web:text:stop-->
    </div>                 
  </xsl:otherwise>
</xsl:choose>
...
...
<script type="text/javascript">
  //...
  
  function wOnBeforeSave(){
  
    var titleId       = 'webtag_text_<xsl:value-of select="/wd:document/wd:extension/wd:meta/wd:title/@wEditorId"/>';
    var titleObjectId = 'webtag_text_<xsl:value-of select="/wd:document/wd:extension/wd:object/wd:data[@id = 'title']/@wEditorId"/>';
    wDocument.element(titleId).value = wDocument.element(titleObjectId).value;           
    return true;    
    //...
  }          
</script>

Achten Sie darauf, dass alle hier angegebenen Felder als Input-Feld (also Text-Pflegekommentar) in der Seitenbearbeitung vorhanden sind! Damit der Pflegebenutzer nur das Pflegefeld sieht, über das er den Text einpflegen soll, blenden Sie das zusätzlich zu schreibende Feld aus (z.B. display:none).

Beispiel 2: Nicht ausgefüllte Beschreibung zieht Inhalt aus erster Überschrift

Dieser Anwendungsfall beschreibt, wie Sie sicherstellen können, daß die Beschreibung (wd:description) auch dann ausgefüllt wird, wenn der Redakteur des Feld leer lässt.

Über JavaScript wird beim Speichern der Inhalt des ersten Überschriften-Elementes in die Beschreibung (wd:description) übernommen, sofern das Beschreibungsfeld nicht befüllt ist.

Beispiel 2: Auszug aus der standard.metadata.php zur Übernahme der Beschreibung aus der ersten Überschrift

...
<script type="text/javascript">
  //...
  
  function wOnBeforeSave(){
    elementDescriptionTextarea = wDocument.element('#webtag_text_<xsl:value-of select="/wd:document/wd:extension/wd:meta/wd:description/@wEditorId"/>');

    if(elementDescriptionTextarea){
      if(elementDescriptionTextarea.value == ''){
        firstHeadlineInput = wDocument.element('input.h1Editor, input.h2Editor');
        if(firstHeadlineInput){
          elementDescriptionTextarea.value = firstHeadlineInput.value;
        }
      }
    }   
    //...
  }          
</script>