Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

[gelöst] Feld deaktivieren, falls Node veröffentlicht ist

Eingetragen von ksiebel (25)
am 28.03.2011 - 13:55 Uhr in
  • Views

Hey zusammen,

ich habe ein recht wichtiges Feld in einer Node, welches gesperrt werden soll sobald die Node published ist (status = 1). Alle anderen Felder sollen noch editierbar sein - nur das eine sollte deaktiviert sein (dargestellt aber nicht editierbar).

Schneller Lösungsansatz?

Wie bekomme ich in hook_form_alter den Status der Node?

Lg,
Kilian

‹ Timestamp: Abgelaufene Veranstaltungen aktivieren Inhalt und CCK getrennte Berechtigungen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Lass dir mal das Form-Array

Eingetragen von SteffenR@drupal.org (2262)
am 28.03.2011 - 15:00 Uhr

Lass dir mal das Form-Array mithilfe des [do:devel] Moduls ausgeben - in diesem Array solltest du dann auch den Status deiner Node finden..

<?php
function mymodule_form_alter(&$form, &$form_state, $form_id) {
dsm($form);
  if(
$form_id=='myform') {
  }
}
?>

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

Okay, leider steht der Status

Eingetragen von ksiebel (25)
am 28.03.2011 - 15:03 Uhr

Okay, leider steht der Status laut print_r auch beim Add-Formular schon auf "1".

Andere Idee woran ich im form_alter erkennen kann ob es eine published node ist?

  • Anmelden oder Registrieren um Kommentare zu schreiben

ksiebel schrieb Okay, leider

Eingetragen von SteffenR@drupal.org (2262)
am 28.03.2011 - 15:31 Uhr
ksiebel schrieb

Okay, leider steht der Status laut print_r auch beim Add-Formular schon auf "1".
Andere Idee woran ich im form_alter erkennen kann ob es eine published node ist?

Wenn der Status der Node dort schon auf 1 steht - dann heisst es wohl, dass die Node schon puplished ist.. Setz sie doch mal auf unpublished und prüfe dann die Ausgabe noch einmal ..

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das Add-Formular und das

Eingetragen von Exterior (2903)
am 28.03.2011 - 17:32 Uhr

Das Add-Formular und das Edit-Formular könntest du übrigens ganz einfach unterscheiden, der Node im Edit-Formular hat nämlich schon eine Node-ID, im Add-Formular noch nicht.

Wenn also der Status = "1" und eine Node-ID vorhanden ist, dann hast du einen bereits gespeicherten, veröffentlichten Node.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Und hier das funktionierende

Eingetragen von ksiebel (25)
am 29.03.2011 - 09:49 Uhr

Und hier das funktionierende Ergebnis:

Im form_alter:

if ($form_id == 'stellenangebot_node_form') {

if (isset($form['nid']['#value']) && $form['#node']->status == '1') {
$form['field_stellentyp']['#pre_render'][] = 'disable_fields_function';
$form['field_ausbildungsberuf']['#pre_render'][] = 'disable_fields_function';
$form['field_beruf'][0]['#pre_render'][] = 'disable_fields_function';
}
}

Die zugehörige Funktion:

function disable_fields_function($element) {
  $element['value']['#attributes'] = array('disabled' => 'disabled');

  return $element;
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

Okay, dabei tut sich

Eingetragen von ksiebel (25)
am 29.03.2011 - 13:54 Uhr

Okay, dabei tut sich folgendes Problem auf:
Wenn man die Felder auf disabled setzt werden die Wete beim erneuten Speichern überschrieben und sind leer.

Hat da jemand eine Idee?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Textfelder werden beim

Eingetragen von ksiebel (25)
am 29.03.2011 - 14:11 Uhr

Textfelder werden beim erneuten Speichern geleert - bei Selects funktioniert disabled aber hervorragend.
Für Textfelder bietet sich noch das readonly-Attribut.

Hier die entsprechende Lösung:

Form Alter:

function DEINMODUL_form_alter(&$form, $form_state, $form_id) {

if ($form_id == 'DEINCONTENTTYPE_node_form') {

if (isset($form['nid']['#value']) && $form['#node']->status == '1') {
$form['field_stellentyp']['#pre_render'][] = 'disable_fields_function'; // Select-Feld kann disabled werden
$form['field_ausbildungsberuf']['#pre_render'][] = 'readonly_fields_function'; // Textfelder müssen readonly gesetzt werden
$form['field_beruf'][0]['#pre_render'][] = 'readonly_fields_function'; // Textfelder müssen readonly gesetzt werden
}
        }
}

Die beiden Funktionen:

function disable_fields_function($element) {
  $element['value']['#attributes'] = array('disabled' => 'disabled');

  return $element;
}

function readonly_fields_function($element) {
  $element['value']['#attributes'] = array('readonly' => 'readonly');

  return $element;
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
Weiter

Neue Kommentare

  • Gefunden
    vor 5 Wochen 18 Stunden
  • Vielen Dank für die ausführlichen Hinweise...
    vor 5 Wochen 4 Tagen
  • Mögliche Ursachen und nächste Schritte
    vor 5 Wochen 4 Tagen
  • Was für einen Server benutzt
    vor 8 Wochen 20 Stunden
  • Wenn die Subdomain auf
    vor 8 Wochen 2 Tagen
  • ordnerstruktur
    vor 8 Wochen 3 Tagen
  • Die Subdomain muß auf den
    vor 8 Wochen 5 Tagen
  • Verwende doch das Tag dafür,
    vor 12 Wochen 10 Stunden
  • Guckst du hier: step by step
    vor 12 Wochen 48 Minuten
  • Guckst du hier: step by step
    vor 12 Wochen 48 Minuten

Statistik

Beiträge im Forum: 250294
Registrierte User: 20534

Neue User:

  • DanielAltek
  • HilipPet
  • Henryskake

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 11 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association