H3pp,
arbetet med intranätet går vidare, och har börjat inse att det är ganska mycket jobb för att få till allt som ska med.
Nya knåpet gäller hantering av profilinformation.
Poängen är att man ska kunna visa sina kollegors status (om de är på jobbet, tjänstesa, VABar eller annat) samt att man ska kunna sätta sin egen status.
Valet föll snabbt på en drop-down lista jag satte upp som del av profilinfomationen där ett av flera alternativ går att välja. Idén fungerar i princip, jag kan använda views för att skapa en lista över kollegorna och däri visa deras status, men problemet kommer med uppdateringen av statusen.
Jag vill inte att man ska behöva gå till sin profil för att ändra statusen, så jag vill ha ENBART listan synlig som en drop-down på sidan där man kan ändra sin egen status.
Jag har rent principiellt fått det hela till att fungera, ändringen lagras, men mitt eget statusvärde i listan ändras inte förrän jag navigerar till sidan på nytt.
Här är min lösning:
Ett customblock på sidan:
<form action="<?php echo url($_GET['q']);?>" method="post">
<?php
global $user;
$form = profile_form_profile($u, $user, 'Personinfo.');
$personInfo = $form['Personinfo.'];
$personInfo['profile_status']['#default_value'] = $user->profile_status;
$statusForm = array(
'#action' => url($_GET['q'], array('query' => drupal_get_destination())),
'#id' => 'status_change',
'#submit' => array('status_change_submit'),
);
$statusForm['profile_status'] = $personInfo['profile_status'];
$statusForm['submit'] = array('#type' => 'submit',
'#value' => t('Spara'),
);
$form_state = array();
$statusForm['#post'] = array();
$statusForm = form_builder('status_change' , $statusForm, $form_state);
echo drupal_render($statusForm);
?>
</form>Som ni ser så postar jag till min egen sida, för att få det till funka har jag i theme_preprocess_page ett anrop till en funktion som lagrar värdet - om det kommer ett.
global $user;
$category = 'Personinfo.';
$edit = array(profile_status=>$_POST['profile_status'],
profile_firstName=>$user->profile_firstName,
profile_lastName=>$user->profile_lastName);
profile_save_profile($edit, $user, $category);
return true;Jag inser gladligen att jag inte är någon expert på Drupal, men det här käns helt fel, och det fungerar som sagt dåligt...
Har nån en idé hur jag borde ha gjort?

Comments
The way to Drupal Hell
Hej!
Jag vill inte verka negativ, men din lösning leder till Drupal Hell. Använd profilmodulen till mer fasta och konkreta uppgifter om användaren. För statusuppdateringar finns det några moduler som löser detta på smidigare sätt.
Här har du två alternativ:
Jag har inte testat någon utav dem och heller inte "granskat koden". Men vid en första anblick säger maglänslan att "Facebook Status" är modulen du borde kolla närmast på.
--
It's all about simplicity - Senzilla
Till att börja med håller
Till att börja med håller jag helt med dixon_ om att ett profilfält kanske inte är rätt plats för detta. Men, för att skapa lite klarhet i problemet:
Det beror förmodligen på att du har implementerat funktionen i temalagret. När din uppdatering av databasen görs har listan över användare laddats för länge sen och väntar på att skrivas ut. Lösningen på det är att istället skapa en modul, vilket också gör att du kan utnyttja Drupals FormAPI fullt ut. Det skulle i så fall involvera dessa steg:
Implementera hook_block och definiera ditt block där. I princip skulle du kunna ha kvar det i ditt custom-block, men det är förmodligen sämre. Det viktiga är att inte definiera själva formuläret här utan istället kalla på det såhär:
drupal_get_form("minstatusmodul_formular")där "minstatusmodul_formular" är namnet på en annan funktion som definierar själva formuläret. (drupal_render()behöver inte användas i sådana här fall.)Sen definierar du en funktion som sparar skickade formulär:
minstatusmodul_formular_submit(). (drupal_get_form()ser till att den funktionen körs när formuläret är skickat.) Där får du statusvärdet serverat åt dig och behöver inte (och bör inte) använda$_POST.Hur du definierar formulär och submit-funktioner finns beskrivet här.
/ Hannes Lilljequist – SthlmConnection
tack-å-bock
Hej,
tack för två bra svar.
Dixon_: du är inte neg, jag kan inte Drupal än, så jag behöver lära mig, tack för dina synpunkter. Jag hade inte lyckats hitta någon statusmodul innan, så länkarna var värdefulla.
Zoo: Kanske gör jag en egen modul av det här, men det har börjat kännas lite onödigt efter att ha ögnat igenom dokumentationen för Facebook Status. Oavsett har jag lärt mig lite mer om att skapa egna moduler. Jag har gjort en sen innan, men inte någon som visar något innehåll.
Jag ska ta mig en funderar hur ska ska fixa det här. Det tar ett tag att komma in i Drupaliserandet känner jag. Mycket bra text av Thomas Barregren.
//Fr3dr1c