"Min Side" på borger.dk og Ding!
Vi har i Vejle modtaget en mail fra Axiell vedr. implementering af lånerstatus på Min Side i borger.dk. Der spørges herunder til 2 URL'er på hjemmesiden, hhv. hvor "lånerstatus vises" samt en side ".. hvorfra brugeren kan foretage betaling".
Ding har ingen sider som i Gladsaxe Bibliotekernes eksempler - hvor man går ind på sider, der opdateres som følge af login. I Ding-hjemmesider er sådanne sider først tilgængelige efter login, og deres URL'er inkluderer et brugerid (som identificerer brugeren i ding-hjemmesiden), for eksempel:
www.biblioteksnavn.dk/user/536/status og
www.biblioteksnavn.dk/user/536/debts (hvor "536" er en bruger). Vi kunne derfor ikke umiddelbart efterkomme ønsket om de URL'er, Axiell efterspurgte.
Vi har dog i på vejlebib.dk fået løst problemstillingen og produceret 2 URL'er, der fungerer som i Gladsaxe-eksemplet:
http://vejlebib.dk/laanerstatus og
http://vejlebib.dk/betal-regninger
Her følger opskriften, der ikke kræver installering af yderligere moduler på ding-hjemmesiden:
Forudsætninger: modulerne Rules samt PHP filter, der allerede er en del af Ding
1) Forbered 2 sider: "Lånerstatus" og "Mine regninger". De behøver ikke at blive placeret i menuen, men sørg for at de har fået faste URL'er, og noter disse ned. I dette eksempel bruges "laanerstatus" og "betal-regninger" som faste URL'er på siderne.
2) Aktivér modulet Rules UI (så det bliver muligt at redigere i Rules)
3) Aktivér modulet PHP filter (de regler vi opretter skal kunne afvikle PHP code)
4) Gå til Administration > Rules > Import/Export (/admin/rules/ie), fanebladet "Import", og importér følgende regler:
array (
'rules' =>
array (
'rules_login_redirect_debts' =>
array (
'#type' => 'rule',
'#set' => 'event_node_view',
'#label' => 'login redirect debts',
'#active' => 1,
'#weight' => '0',
'#categories' =>
array (
),
'#status' => 'custom',
'#conditions' =>
array (
0 =>
array (
'#weight' => 0,
'#type' => 'AND',
0 =>
array (
'#type' => 'condition',
'#settings' =>
array (
'text1' => '[node:node-path]',
'text2' => 'betal-regninger',
'regex' => 0,
'#eval input' =>
array (
'token_rules_input_evaluator' =>
array (
'text1' =>
array (
0 => 'node',
1 => ':global',
),
'text2' =>
array (
0 => ':global',
),
),
),
),
'#name' => 'rules_condition_text_compare',
'#info' =>
array (
'label' => 'Textual comparison',
'arguments' =>
array (
'text1' =>
array (
'label' => 'Text 1',
'type' => 'string',
),
'text2' =>
array (
'label' => 'Text 2',
'type' => 'string',
),
),
'module' => 'Rules',
),
'#weight' => 0,
),
1 =>
array (
'#weight' => 0,
'#type' => 'condition',
'#settings' =>
array (
'boolean' => '<?php if ($user->uid > 0) {echo 1;} else {echo 0;} ?>',
'#eval input' =>
array (
'token_rules_input_evaluator' =>
array (
'boolean' =>
array (
0 => ':global',
),
),
'rules_input_evaluator_php' =>
array (
'boolean' =>
array (
0 => 'user',
),
),
),
),
'#name' => 'rules_condition_check_boolean',
'#info' =>
array (
'label' => 'Check a truth value',
'arguments' =>
array (
'boolean' =>
array (
'type' => 'boolean',
'label' => 'Truth value',
),
),
'module' => 'Rules',
),
),
),
),
'#actions' =>
array (
0 =>
array (
'#weight' => 0,
'#info' =>
array (
'label' => 'Page redirect',
'module' => 'System',
'eval input' =>
array (
0 => 'path',
1 => 'query',
2 => 'fragment',
),
),
'#name' => 'rules_action_drupal_goto',
'#settings' =>
array (
'path' => 'user/[user:uid]/debts',
'query' => '',
'fragment' => '',
'force' => 1,
'immediate' => 0,
'#eval input' =>
array (
'token_rules_input_evaluator' =>
array (
'path' =>
array (
0 => 'user',
1 => ':global',
),
'query' =>
array (
0 => ':global',
),
'fragment' =>
array (
0 => ':global',
),
),
),
),
'#type' => 'action',
),
),
'#version' => 6003,
),
'rules_login_redirect_loanstatus' =>
array (
'#type' => 'rule',
'#set' => 'event_node_view',
'#label' => 'login redirect loanstatus',
'#active' => 1,
'#weight' => '0',
'#categories' =>
array (
),
'#status' => 'custom',
'#conditions' =>
array (
0 =>
array (
0 =>
array (
'#info' =>
array (
'label' => 'Textual comparison',
'arguments' =>
array (
'text1' =>
array (
'label' => 'Text 1',
'type' => 'string',
),
'text2' =>
array (
'label' => 'Text 2',
'type' => 'string',
),
),
'module' => 'Rules',
),
'#name' => 'rules_condition_text_compare',
'#settings' =>
array (
'text1' => '[node:node-path]',
'text2' => 'laanerstatus',
'regex' => 0,
'#eval input' =>
array (
'token_rules_input_evaluator' =>
array (
'text1' =>
array (
0 => 'node',
1 => ':global',
),
'text2' =>
array (
0 => ':global',
),
),
),
),
'#type' => 'condition',
'#weight' => 0,
),
'#type' => 'AND',
'#weight' => 0,
1 =>
array (
'#info' =>
array (
'label' => 'Check a truth value',
'arguments' =>
array (
'boolean' =>
array (
'type' => 'boolean',
'label' => 'Truth value',
),
),
'module' => 'Rules',
),
'#name' => 'rules_condition_check_boolean',
'#settings' =>
array (
'boolean' => '<?php if ($user->uid > 0) {echo 1;} else {echo 0;} ?>',
'#eval input' =>
array (
'token_rules_input_evaluator' =>
array (
'boolean' =>
array (
0 => ':global',
),
),
'rules_input_evaluator_php' =>
array (
'boolean' =>
array (
0 => 'user',
),
),
),
),
'#type' => 'condition',
'#weight' => 0,
),
),
),
'#actions' =>
array (
0 =>
array (
'#weight' => 0,
'#type' => 'action',
'#settings' =>
array (
'path' => 'user/[user:uid]/status',
'query' => '',
'fragment' => '',
'force' => 1,
'immediate' => 0,
'#eval input' =>
array (
'token_rules_input_evaluator' =>
array (
'path' =>
array (
0 => 'user',
1 => ':global',
),
'query' =>
array (
0 => ':global',
),
'fragment' =>
array (
0 => ':global',
),
),
),
),
'#name' => 'rules_action_drupal_goto',
'#info' =>
array (
'label' => 'Page redirect',
'module' => 'System',
'eval input' =>
array (
0 => 'path',
1 => 'query',
2 => 'fragment',
),
),
),
),
'#version' => 6003,
),
),
)
5) Der skulle nu, under Administration > Rules > Triggered Rules (/admin/rules/trigger) være 2 nye regler: "login redirect debts" og "login redirect loanstatus"
6) Test at det virker ved at gå på siden /laanerstatus. Hvis man nu logger ind når man står på den side, vil man blive viderestillet til den rigtige lånerstatus-side på URL /user/{UID}/status. Tilsvarende på siden /betal-regninger - her vil indlogning viderestille til siden med listen over brugers aktuelle regninger (/user/{UID}/debts).
Kommentarer
Sammenlignning med eksisterende modul
I Reload implementerede vi for et godt stykke tid siden for KKB et modul til integration mellem Ding og Borger.dk. Det er senere blevet adopteret af hovedsporet: https://github.com/dingproject/ding-borger-api.
Hvordan hænger ovenstående løsning sammen med dette?
Derudover: Det må vel være muligt at eksporterende ovenstående konfiguration til kode så der kan laves et ding-axiell-borger-dk modul?