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

  • 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
  • [gelöst] W3CSS Paragraphs Views
Weiter

Neue Kommentare

  • Wenn die Subdomain auf
    vor 1 Tag 9 Stunden
  • ordnerstruktur
    vor 1 Tag 20 Stunden
  • Die Subdomain muß auf den
    vor 4 Tagen 3 Stunden
  • Verwende doch das Tag dafür,
    vor 3 Wochen 6 Tagen
  • Guckst du hier: step by step
    vor 3 Wochen 5 Tagen
  • Guckst du hier: step by step
    vor 3 Wochen 5 Tagen
  • Ich habe ja keine Angst vor
    vor 5 Wochen 1 Tag
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 5 Wochen 3 Tagen
  • Vielen Dank erst einmal, aber
    vor 5 Wochen 5 Tagen
  • Du hast die "Trusted host
    vor 5 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250288
Registrierte User: 20512

Neue User:

  • Pavlotog
  • burningTree
  • Marvinkep

» 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 6 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