"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).
 

Grupper:

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?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.