Project

General

Profile

Bug #4256

Tabrolls mangler efter opdatering til release 30 (TESTES AF GENTOFTE) (VENTER PÅ 4428)

Added by Mette Mahler about 1 year ago. Updated 9 months ago.

Status:
Resolved (tag version)
Priority:
Immediate
Assignee:
Target version:
Estimated time:
URL med eksempel:
Kategorier:
Inspiration - Forsiden, Inspiration - Sektioner og temaer

Description

Vi mangler desværre vores bannere på forsiden efter, vi blev opdateret med release 30 i går.

Den meddeleler: Placeholder for empty or inaccessible "Ding frontpage tabroll", og der ligger 5 bannere klar, som vi plejer at gøre.

Kan i hjælpe os med at få bannerne tilbage?
 

Tilføjelse fra Stefan

Der har været tre problemer med tabrolls:

1. Kan ikke indsætte tabroll og tabroll panel er tomt (to redaktørbiblioteker der har oplevet dette: Frederiksberg og Varde)
2. Én tabroll vil ikke vises på forsiden men andre kunne godt vises (et redaktørbibliotek har oplevet dette: Struer)
3. Tabroll forsvandt men kom igen (ét webmasterbibliotek der har oplevet dette: Frederikssund)

Se https://www.facebook.com/groups/ddbcms/permalink/896444160530574/ for tråd på fb.

Jeg har været inde på Frederiksbergs hjemmeside og har forsøgt at tømme cache, fjerne og indsætte panelet, oprette nye tabrolls og meget mere. Intet hjælper.

Der er biblioteker som ikke har dette problem (fx Gentofte, Holstebro, Ballerup, Greve), der har ikke været problemer på staging siderne eller på upgrade-fbs eller vanilla-fbs. Frederiksbergs staging fungerer fint med tabrolls.


Related issues

Related to DDB CMS - Bug #4428: ding2_update_7064 kalder i18n_variable_get uden at undersøge om i18n_variable-modulet er slået tilResolved (tag version)
Has duplicate DDB CMS - Bug #4376: Tabroll vises ikke på forsidenClosed

History

#1 Updated by Stefan Søndervang about 1 year ago

  • Description updated (diff)
  • Status changed from New to Open (waiting)
  • Assignee set to Stefan Søndervang
  • Priority changed from Normal to Immediate
  • Kategorier Inspiration - Sektioner og temaer added

#2 Updated by Stefan Søndervang about 1 year ago

  • Description updated (diff)

#3 Updated by Stefan Søndervang about 1 year ago

  • Subject changed from Bannere mangler efter opdatering/release 30 to Tabrolls mangler efter opdatering til release 30

#4 Updated by Stefan Søndervang about 1 year ago

  • Assignee changed from Stefan Søndervang to Gitte Barlach

@Gitte: Hvad gør vi med denne?

#5 Updated by Christel Krabbenhøft about 1 year ago

  • Status changed from Open (waiting) to Ready for development
  • Assignee changed from Gitte Barlach to Martin Cording

Hej Martin. Kan I kigge på denne asap?

#6 Updated by Martin Cording about 1 year ago

  • Status changed from Ready for development to Need more info
  • Assignee changed from Martin Cording to Stefan Søndervang

Dette kan ikke genskabes på den kopi af Rudersdal vi har fået - her bliver den rendered og vist fint:

Det skal dog nævnes at hvis en Rolltab linker til en node, som ikke er udgivet, så vil Rolltab'en ikke vises i den widget/pane.

Det betyder at der skal være forskel på anonym og indlogget bruger (som har adgang til at se ikke-udgivet indhold).

 

#7 Updated by Stefan Søndervang about 1 year ago

  • Assignee changed from Stefan Søndervang to Martin Cording

Det mærkelige er at det virker på

  • stagingsiderne for Frederiksberg (redaktør) og Rudersdal (redaktør) - Rudersdals staging er nede lige nu
  • upgrade og vanilla
  • Hørsholms (redaktør) og Greves (redaktør) produktionssider

Men det virker IKKE på

  • produktionssider for Frederiksberg og Rudersdal
  • derudover har Struer, Varde, Frederikssund,  bib.kulturrummet.dk meldt problemer med tabrolls af diverse art

Hvorfor virker det på staging men ikke produktion? Hvorfor for nogen men ikke andre? Og problemerne er forskellige...

 

Angående:

Det skal dog nævnes at hvis en Rolltab linker til en node, som ikke er udgivet, så vil Rolltab'en ikke vises i den widget/pane.

Hvis det er problemet så burde den ikke virke hverken på staging eller produktion. Men det var ligeså snart at der blev opdateret for Rudersdal og Frederiksberg at de forsvandt. Jeg har tjekket at det ikke er tilfældet på rudbib.dk.

 

Jeg har lige forsøgt at tilføje en tabroll til køen under: /admin/structure/nodequeue. Og den vil ikke tilføje tabrolls til at blive vist. Det er som om at tabrolls bare ikke virker.

 

Har du en idé til hvor problemet kan være eller hvor vi skal kigge? Kan det være i opdateringen at noget er gået i ødelagt? Jeg spurgte DBC som skrev:

En gennemgang af installations-logfilerne afslører ingen forskelle mellem dem der har problemet og dem der ikke har det.

I øvrigt har der ikke være noget af bemærke under installationsprocesserne.

Men hvad kan det ellers være?

#8 Updated by Martin Cording about 1 year ago

  • Assignee changed from Martin Cording to Stefan Søndervang

Men det virker IKKE på

  • produktionssider for Frederiksberg og Rudersdal

Det er kopi af Rudersdal produktion vi arbejder på, så vidt jeg ved. Her kan problemet med at de ikke vises ikke genskabes.

 

Du nævner også noget med nye Rolltabs som ikke virker? Kan du give trin-for-trin helt præcist til hvad det er du gør, og hvad det er du forventer ift. dette?

#9 Updated by Stefan Søndervang about 1 year ago

  • Assignee changed from Stefan Søndervang to Martin Cording

Det er kopi af Rudersdal produktion vi arbejder på, så vidt jeg ved. Her kan problemet med at de ikke vises ikke genskabes.

Staging er vel også en kopi af produktion, så fejlen burde jo opstå begge steder.

 

Problem 1

Jeg tror jeg har fundet fejlen. Jeg burde have set det før. 

Når der er indtastet et link i det eksterne linkfelt (Menu or external), så virker tabrolls ikke (se billede herunder).

Den viser den fint på Frederiksbergs staging, men ikke på deres produktion.

Jeg har fået det til at virke med en tabroll på Frederiksbergs produktionsside og en på Rudersdals produktionsside. Jeg fik det til at virke ved at fjerne linket i Menu or external til at koble rolltab og node samme i Link. Det betyder at i princippet kan alle være ramt af problemet, men kun dem der udelukkende har haft tabrolls, der har haft links i Menu or external har mistet tabrolls på forsiden.

Jeg kan ikke genskabe fejlen på hverken upgrade eller vanilla. Der virker det fint. 

Det ligner denne fejl: #1929

 

Problem 2

Du nævner også noget med nye Rolltabs som ikke virker? Kan du give trin-for-trin helt præcist til hvad det er du gør, og hvad det er du forventer ift. dette?

Normalt hvis jeg vil styrer hvilke rolltabs der er på forsiden (fx hvis jeg vil smide en rolltab på forsiden, som jeg tidligere har oprettet, og har smidt væk fra forsiden, men vil så have den på forsiden igen) så går jeg ind på Struktur -> Nodequeues -> så trykker jeg på Vis under Handling ved Front page tabroll.

Her kan jeg så indtaste titel på den node som jeg vil have på forsiden, og så søger den efter noden, så kan jeg klikke på den og tilføje den til at vises på forsiden. (billedet herunder er fra upgrade, hvor det virker).

Hvis jeg forsøger det samme på Rudersdal, så virker det ikke. Jeg taster titlen på en node, som jeg ved er oprettet og udgiver og så sker der intet. Den søger ikke.

#10 Updated by Stefan Søndervang about 1 year ago

Har lige fået bekræftet ovenstående problem på et webmasterbiblioteks side: Gentofte.

#11 Updated by Stefan Søndervang about 1 year ago

Ville det hjælpe hvis du fik en admin bruger til en af hjemmesiderne, så du kan kigge under hjelmen på en af siderne som ikke virker?

#12 Updated by Martin Cording about 1 year ago

  • Assignee changed from Martin Cording to Stefan Søndervang

Her er lidt info ift. visning: https://www.drupal.org/project/views/issues/1269054#comment-6380586

Vi kan bruge denne checkbox, men det kan forårsage unexpected resultat:

Ift. autocomplete og jf. permissions, så er det kun admin, localadmin og editor der kan redigere nodequeue - editor vil kun kunne fremsøge publiceret indhold.

Prøv at send mig admin-login til et site, så vi prøve at debugge lidt i produktion.

#13 Updated by Simon Holt about 1 year ago

Mette fra Vejen bibliotek har kontaktet mig angående samme problem med manglende tabroll og kan bekræfte, at skift fra "Menu or external"-feltet til "Link"-feltet fiksede problemet.

#14 Updated by Simon Holt about 1 year ago

Det er meget mystisk det her. Som sagt observerer problemet lige nu på Vejens hjemmeside vejbib.dk. Jeg har fået login og kan verificere at:

- Tabroll er udgivet

- Siden som tabroll linker til er udgivet

- Tabroll er korrekt placeret i nodekø

Alligevel dukker den kun op, hvis man linker til en gyldig node i tabroll. Det er lige meget om det er indtastet noget i "Menu or external"-feltet eller ej. Det afgørende ser ud til at være om link-feltet er udfyldt.

Når jeg så tester på mit lokale testmiljø virker det lige meget hvad. Om det er "Menu or external"- eller link-feltet, der er udfyldt: Tabroll vises altid korrekt.

Det eneste måde at simulere samme opførsel er ved at gå ind i tabroll view'et og sætte forbindelsen "Entity Reference: Link" til påkrævet. Men via vejbib.dk har jeg ikke adgang til at se hvordan view'et ser ud, så kan ikke tjekke om det skulle være det, der er tilfældet.

@Martin er det bare et gæt, at det skulle have noget med node_access at gøre eller har i verificeret at tricket med disable "SQL-rewriting" virker? 

#15 Updated by Simon Holt about 1 year ago

Er det muligt at få et dump af Vejens produktion database? Kunne virkelig godt tænke mig at se, hvad der foregår her.

#16 Updated by Martin Cording about 1 year ago

Vi har verificeret at denne checkbox sørger for at indhold bliver vist for anonyme også, ved at skippe Drupal permission checks.
Det er derfor jeg nævnte at det måske kunne forårsage unexpectede resultater :)

#17 Updated by Simon Holt about 1 year ago

Det lyder bare underligt. Hvilke access control moduler skulle forårsage dette? Har I gravet i det?

Og problemet er der kun, når der ikke er noget i "Link"-feltet, så det lyder mystisk at det skulle have noget med permission til indhold at gøre.

På Vejen bib var problemet der både for local_admin og anonyme brugere (men det kan selvfølgelig være bypass permissions der mangle local admin)

Har det mon et eller andet at gøre med ding_sections? ;)

#18 Updated by Rolf Madsen about 1 year ago

  • Target version set to DDB CMS - Analyse og prioritering udestår

#19 Updated by Rolf Madsen about 1 year ago

  • Target version changed from DDB CMS - Analyse og prioritering udestår to Release 31 - bugfixes

#20 Updated by Marianne Sivertsen about 1 year ago

Det ser ud, som om jeg er ude i samme problem:

Jeg har oprettet mit livs første sektionsforside.

Jeg ønsker den ikke umiddelbart ind i en menu.

Jeg har tilføjet tabroll-modulet på forsiden af hjemmesiden.

Jeg har oprettet én rolltab, som skal linke til sektionsforsiden.

Sektionsforsiden har intet node-navn, som jeg kan bruge i Link-feltet.

Jeg bruger derfor sektionsforsidens komplette webadresse og sætter den i 'Menu og external'-feltet.

Der dukker ingen tabroll op på forsiden.

Er der mon noget jeg har gjort forkert - eller ikke prøvet?

#21 Updated by Rolf Madsen about 1 year ago

  • Status changed from Need more info to Needs analysis
  • Assignee changed from Stefan Søndervang to Simon Holt

@Simon, har du tid til at grave i denne sag igen?

#22 Updated by Simon Holt about 1 year ago

@Rolf, jeps tager et kig på den. Har modtaget dump fra Vejen bibliotek der også oplever problemet, så det skulle gøre det en del nemmere at debugge.

#23 Updated by Simon Holt 12 months ago

Er ved at grave i den her nu. Havde nogle udfordringer med at få Vejens dump op at køre og fremprovokere fejlen. Er også blevet forstyrret af FacesExtenable fejlen fra #4291, som tilsyneladende også fremkommer i Vejens DB.

#24 Updated by Svend Lentz Jørgensen 12 months ago

Vi har også dette problem på Morsø Folkebibliotek 

1. Kan ikke indsætte tabroll og tabroll panel er tomt 

Vi er også et redaktørbibliotek

#25 Updated by Simon Holt 12 months ago

Så kom jeg til bunds og har været vidt omkring. Det er et kompleks query problem beskrevet i:

https://www.drupal.org/project/drupal/issues/1349080 : Kort sagt: Queries der left joiner noder med et node_access tag, får fejlagtigt filtreret rækker fra med null i den joinede tabel i _node_query_node_access_alter().

Fra ovenstående issue:

1. Install Entityreference and Views,
2. Create a field referencing nodes (using entityreference),
3. Create a node having the entityreference field empty,
4. Create a View with a relationship using the entityreference field. Do NOT select "Require this relationship". (BEMÆRK: jeg også pointerede dette i #note-14, at vi netop ikke har sat det til påkrævet).
5. Expected result is that regular users can see the node in the View. Current result is that regular users cannot see the node.

Det passer perfekt med os. Vi har et entityreference felt og det kan være tomt. Og hvis man udkommentere koden i _node_query_node_access_alter() bliver alle tabrolls da også vist uden problemer.

Vi anvender modulet view_unpublished som "aktiverer" hele node_access møllen. Man ser også at problemet forsvinder, hvis view_unpublished modulet disables, da node modulet så ikke alter query i _node_query_node_access_alter(). (vi anvender ingen andre moduler der implementerer hook_node_grants()).

Jeg ved faktisk ikke, hvorfor problemet lige pludselig er begyndt at optræde. Jeg har prøvet at nedgradere til tidligere views version 3.17, som vi opdaterede for nyligt, men problemet er der stadig. Jeg kan kun få problemet til at forsvinde ved at udkommentere _node_query_node_access_alter() eller disable view_unpublished. Men view_unpublished har altid været aktiveret som default og er heller ikke opdateret for nylig. Jeg tænker, da fejlen tilsyneladende udløses i node core modulet, at det måske kan være introduceret i en af vores nylige Drupal opdateringer (men har ikke haft tid til at verificere dette endnu).

Det er en Drupal 7 patch i sagen, som ser ud til at fikse problemet: https://www.drupal.org/project/drupal/issues/1349080#comment-10953027

Men det er en noget kompliceret rettelse og der ser ud til at være nogle test fail på den. 

Jeg vil anbefale, at vi ikke bruger patchen, men i stedet går med den fremgangsmåde Martin nævner i #note-12: vi disabler query rewriting specifikt for tabroll view'et.

Jeg tænker det vil være den bedste acceptable løsning da:

1. Problemet optræder kun i det her specifikke tilfælde hvor vi har et ikke-påkrævet entity reference felt, der bruges i et view. Fejlen opstår altså i meget begrænsede tilfælde.

2. Vi bruger node_access fra view_unpublished så det er muligt for administrative brugere at se ikke-udgivet indhold i indholdsoversigten. Det er altså ikke noget der er relevant ift tabrolls.

3. Vi sikrer selv i view'et, at vi ikke viser ikke-udgivet indhold.

4. Som nævnt anvender vi ikke node_access moduler til andre funktionaliteter.

5. View viser kun tabrolls. Jeg kan ikke lige forestille mig en oplagt use-case, hvor der vil være behov for at anvende node access på tabrolls, sådan at det kun er visse brugere der kan se udvalgte tabrolls.

Jeg får lige fremstillet et PR i morgen, der opdaterer tabroll view'et til ikke at bruge SQL-omskrivning.

#26 Updated by Rolf Madsen 12 months ago

  • Has duplicate Bug #4376: Tabroll vises ikke på forsiden added

#27 Updated by Rolf Madsen 12 months ago

  • Status changed from Needs analysis to Development

#28 Updated by Simon Holt 12 months ago

  • Status changed from Development to Needs code review
  • Assignee changed from Simon Holt to Gitte Barlach

PR: https://github.com/ding2/ding2/pull/1454

Og kan nu også komme med en forklaring på hvorfor det lige pludselig er begynd at ske på nogle sider og hvorfor fejlen slet ikke optræder på andre sider:

Hvis vi først kigger på hvordan _node_query_node_access_alter() ændrer tabroll view query på Vejens DB hvor fejlen optræder:

Før alter:

SELECT node.title AS node_title, node.nid AS nid, node_field_data_field_ding_tabroll_link.nid AS node_field_data_field_ding_tabroll_link_nid, nodequeue_nodes_node.position AS nodequeue_nodes_node_position, 'node' AS field_data_field_ding_tabroll_image_node_entity_type, 'node' AS field_data_field_ding_tabroll_lead_node_entity_type, 'node' AS field_data_field_ding_tabroll_link_node_entity_type, 'node' AS field_data_field_ding_tabroll_ext_node_entity_type
FROM 
{node} node
INNER JOIN {nodequeue_nodes} nodequeue_nodes_node ON node.nid = nodequeue_nodes_node.nid AND (nodequeue_nodes_node.qid = :views_join_condition_3)
LEFT JOIN {field_data_field_ding_tabroll_link} field_data_field_ding_tabroll_link ON node.nid = field_data_field_ding_tabroll_link.entity_id AND (field_data_field_ding_tabroll_link.entity_type = :views_join_condition_4 AND field_data_field_ding_tabroll_link.deleted = :views_join_condition_5)
LEFT JOIN {node} node_field_data_field_ding_tabroll_link ON field_data_field_ding_tabroll_link.field_ding_tabroll_link_target_id = node_field_data_field_ding_tabroll_link.nid
WHERE (( (node.status = :db_condition_placeholder_0) ))
ORDER BY nodequeue_nodes_node_position DESC

Efter alter:

SELECT node.title AS node_title, node.nid AS nid, node_field_data_field_ding_tabroll_link.nid AS node_field_data_field_ding_tabroll_link_nid, nodequeue_nodes_node.position AS nodequeue_nodes_node_position, 'node' AS field_data_field_ding_tabroll_image_node_entity_type, 'node' AS field_data_field_ding_tabroll_lead_node_entity_type, 'node' AS field_data_field_ding_tabroll_link_node_entity_type, 'node' AS field_data_field_ding_tabroll_ext_node_entity_type
FROM 
{node} node
INNER JOIN {nodequeue_nodes} nodequeue_nodes_node ON node.nid = nodequeue_nodes_node.nid AND (nodequeue_nodes_node.qid = :views_join_condition_3)
LEFT JOIN {field_data_field_ding_tabroll_link} field_data_field_ding_tabroll_link ON node.nid = field_data_field_ding_tabroll_link.entity_id AND (field_data_field_ding_tabroll_link.entity_type = :views_join_condition_4 AND field_data_field_ding_tabroll_link.deleted = :views_join_condition_5)
LEFT JOIN {node} node_field_data_field_ding_tabroll_link ON field_data_field_ding_tabroll_link.field_ding_tabroll_link_target_id = node_field_data_field_ding_tabroll_link.nid
WHERE (( (node.status = :db_condition_placeholder_0) )) AND ( EXISTS  (SELECT na.nid AS nid
FROM 
{node_access} na
WHERE (( (na.gid = :db_condition_placeholder_1) AND (na.realm = :db_condition_placeholder_2) ))AND (na.grant_view >= :db_condition_placeholder_3) AND (node.nid = na.nid) )) AND ( EXISTS  (SELECT na.nid AS nid
FROM 
{node_access} na
WHERE (( (na.gid = :db_condition_placeholder_4) AND (na.realm = :db_condition_placeholder_5) ))AND (na.grant_view >= :db_condition_placeholder_6) AND (node_field_data_field_ding_tabroll_link.nid = na.nid) )) 
ORDER BY nodequeue_nodes_node_position DESC

Det som jeg har markeret med fed er det som _node_query_node_access_alter() tilføjer. Bemærk at det tilføjes som en generel condition til Query og ikke som en join-condition. Derfor filtreres tabrolls væk, der har en tom entity reference, som beskrevet i https://www.drupal.org/project/drupal/issues/1349080

Jeg var så heldig, at på vores egen produktionsdatabase optrådte fejlen ikke. Så det var nærliggende, at se hvordan den alterede query der. Og der viser sig, at den slet IKKE alterede querien på vores produktionsdatabase. Dette var fordi, at node_access_view_all_nodes() returnerede TRUE også for anonyme brugere og det gjorde den ikke på Vejens DB.

Det viser sig, at Drupal tilføjer en speciel node_access record, hvis der ikke er nogle node_access moduler aktiveret. Og denne access record var åbenbart aktiv på Vejlebib DB og gjorde at query aldrig blev alteret. 

Denne record bliver som udgangspunkt tilføjet i node_install(), når node modulet installeres for første gang. Og når man så aktivere et node_access modul som f.eks. view_unpublished skal man rebuilde node_access for at få fjernet den global view access record, der giver adgang til alt. Dette gøres åbenbart ikke automatisk, det er en process der tager lang tid (skal løbe alle node igennem og kalde hooks for hver af dem). view_unpublished rebuilder ikke node_access ved aktivering/deaktivering, men sætter variablen node_access_needs_rebuild til TRUE: https://api.drupal.org/api/drupal/modules%21node%21node.module/function/node_access_needs_rebuild/7.x

Så et eller andet må have triggerede en node_access_rebuild på de sider hvor fejlen pludselig optræder, som har gjort at node_access query filtrering faktisk er begynd at virke og som så har manifisteret sig som en fejl ved os ved at fjerne adgang til tabrolls.

Det viser sig da også, at hvis jeg trigger en node_access_rebuild på vejlebib's DB begynder fejlen altså at optræde.

TLDR: Årsagen til at fejlen ikke optrådte på nogle sites var faktisk en inkonsistent node_access tabel, der stadig havde den specielle global view all access record. Så snart der bliver triggered en node_access_rebuild på et DDB CMS site, begynder fejlen at optræde.

#29 Updated by Gitte Barlach 12 months ago

  • Assignee changed from Gitte Barlach to Kasper Garnæs

#30 Updated by Kasper Garnæs 12 months ago

  • Status changed from Needs code review to Reviewed

Reviewed og godkendt.

Personligt ville jeg også have accepteret patchen, da der er mange positive tilbagemeldinger fra erfarne community medlemmer med længerevarende brug i produktion.

#31 Updated by Kasper Garnæs 12 months ago

  • Status changed from Reviewed to Technical test

#32 Updated by Stefan Søndervang 11 months ago

  • Assignee changed from Kasper Garnæs to Stefan Søndervang

#33 Updated by Gitte Barlach 11 months ago

  • Subject changed from Tabrolls mangler efter opdatering til release 30 to Tabrolls mangler efter opdatering til release 30 (TESTES AF GENTOFTE)

#34 Updated by Stefan Søndervang 10 months ago

  • Subject changed from Tabrolls mangler efter opdatering til release 30 (TESTES AF GENTOFTE) to Tabrolls mangler efter opdatering til release 30 (TESTES AF GENTOFTE) (VENTER PÅ 4428)

Kan ikke testes før #4428 er lavet.

#35 Updated by Terji Jensen 10 months ago

  • Related to Bug #4428: ding2_update_7064 kalder i18n_variable_get uden at undersøge om i18n_variable-modulet er slået til added

#36 Updated by Stefan Søndervang 9 months ago

  • Assignee changed from Stefan Søndervang to Terji Jensen

#37 Updated by Terji Jensen 9 months ago

  • Status changed from Technical test to Resolved (tag version)
  • Assignee changed from Terji Jensen to Gitte Barlach

Testet og godkendt på ding2-7.x-4.8.0-rc5 på Gentoftes Dev site.

Her kan man kan oprette eksterne links i rolltabs, og der kan også tilføjes ældre rolltabs ved at søge efter titlen på den.

Disse fejl var beskrevet her:

https://platform.dandigbib.org/issues/4256#note-9

Also available in: Atom PDF