Drupal 8 views ajax manual refreshing does not work properly

Interviewer: Drupal 8 is amazing … isn’t it? 

Angry me: No, it’s not!

One of the problems we have spent lot’s of energies on is related to Drupal 8 views.
As you probably know the contrib module views has been integrated as a core module in this version 8 of Drupal.

Eventough there’s a nice page with documentation on D8 views, as a Drupal developers we know we can not fully rely on it to get rid of problems.

The problem

When a view is printed into a webpage as block or in a shape different of “page” display type, you can not have ajax features working properly on it, furthermore you are also not able to manually (via javascript) refresh it (triggering “RefreshView”).

If you watch what happen in a standard views with page as display type, and then start to playing “find the difference” with the other display types, you will (soon or later) notice that lot’s Javascript files views-ajax related, are not even included into the DOM!

But, what is happening?

For some reason, after hours, we have understand that even if you flag the checkbox to “use ajax” you are not able to get 

in browser console and neither, of course, the ajax views behavior.

The solution

When you are invoking the view do not forget to invoke “preview” method too, because it is responsible to prepare the view as desired.

We found no documentation on the web, so we assume this article will be useful for some Drupal information thirsty developer.

Thanks to Luca Rossi that achieved the solution.

Email security check. Email violata? Controlla e provvedi subito!

Vi ricordate quando abbiamo parlato di come creare una password che vi garantisca un buon livello di sicurezza?
Ecco il link all’articolo http://www.unmoscerinonelweb.com/blog/password-sicura-sei-sicuro/ nel caso ve lo foste perso.

Rimane sempre una buona idea avere una password diversa per ogni account, perché? Semplice se qualche cracker (un hacker con cattive intenzioni) riuscisse a violare un sito dove siete registrati ed ottenere la vostra password allora avrebbe le porte della vostra privacy e della vostra sicurezza spalancate, con tanto di tappeto rosso.

Su questo sito potete scoprire se il vostro account email risulta essere stato violato assieme agli altri presenti su un sito dove siete registrati e quali sono i dati in pericolo.

Visitate haveibeenpwned.com scrivete il vostro indirizzo email e incrociate le dita.

Se ci sono problemi di sicurezza vi sarà mostrato un report di questo tipo:

Andate portale per portale e cambiate la password, inserendone una diversa per ogni sito/portale.

Buona fortuna.

PSSSS

Volete un modo per conservare le password indipendente e offline? Date un’occhiata a keepass.info.

File managed entire folder Drupal

Some information on managed and unmanaged files in Drupal

If a file is on a certain folder of the webserver within the Drupal folders it does not mean that Drupal knows it!

When Drupal “store” the presence of a certain file (i.e. public://myfile.pdf) it became a managed file.

You can add a file to managed with file_save_data function.

Luckly or unfortunaly a function that manage an entire directory of files, maybe in a recursive way, is not present in Drupal core.

How to import a folder of files to Drupal?

I create a script to this in a clean and easy way.

Note that dpm function is provided with a contrib module: Devel.

Hint

I have used this functionality to put lots of images in the media library (made with Media module) and make them available for redactors.

Drupal 7 blocks external frame due to X-Frame-Options

As documented (https://www.drupal.org/node/2735873) Drupal comunity removed the possibility to embedd a Drupal site into an external frame to avoid clickjacking.

The problem

Basically you can not put an external Drupal website into an iFrame anymore, if you try to embedd a website with X-Frame-Options restrictions you will get a browser console error stating something like this

because it set ‘X-Frame-Options’ to ‘sameorigin’

This behavior is obtained in drupal_deliver_html_page (in common.inc) in which it is checked what I show you below:

To see your Drupal website displayed into a frame of an external website you must change X-Frame-Options (or remove it).

The solution

Although Drupal documentation (https://www.drupal.org/node/2735873) explains that you can remove the X-Frame-Options header via the page_alter, I discovered that under certain conditions this strategy does not work at all.

In my case I was able to surf the site from a Frame only if I was logged in with an active session.

To achieve a better solution, my suggestion is to modify the Drupal variable x_frame_options before the drupal_deliver_html_page is called.
I did this (and it works like charme) via page_delivery_callback_alter, where I set the variable to FALSE under certain satisfited conditions (i.e. the page is requested from a whitelist domain).

Hope this help.

List directories with php and compare them

Sometimes it’s important to quickly highlight differences between two folders structure.

It could happen expecially when you are obliged to work on cheap environments, without console and you need to understand if there are differences among your local filesystem and the remote one.

You can copy the script in each directory and naming it scandir.php, than reach it by browser at the url http://path-to-your-base-folder/scandir.php.

In this way you have just executed the script, do it on each environment directory and occasionally compare them.

To compare there are Notepad++, git diff, WinMerge and plenty of open source tools.

Scandir is a php function, check it, I have wrote this code using an example I found there.

Altering ECK save message

Altering ECK save messages is now possible thanks to these hooks:

defined in eck.api.php.

I strongly suggest you to check that file because is full of interesting hooks that allow developers to customize eck standard (and horrible) behavior.

Enjoy!

Backup di tutti i database mysql

Talvolta capita di dover cambiare pc o semplicemente cambiare versione del proprio virtual web server locale preferito. Sia esso Xamp, Mamp o Wamp il concetto è sempre lo stesso. Dobbiamo trasportare i database da un posto ad un altro.

Problema

Ho più database sul mio mysql (locale o remoto) di cui devo ottenere un backup. Il comando che segue ci consente di effettuare questa operazione da linea di comando è il seguente:

Come si può facilmente notare in questo modo sarà creato un dump del singolo database mysql in un file .sql.

Tuttavia talvolta è necessario esportare tutti i database presenti su mysql. A tale scopo si rende indispensabile creare uno script.

Soluzione

È possibile creare uno script che con pochi comandi adempia al compito desiderato: esportare tutti i database mysql con uno script.

Lo script verrà inserito in un file con estensione .sh, che è possibile eseguire sia su Windows, sia ovviamente su Linux e Mac.

Su Windows è possibile farlo con la bash di git o cygwin, in linux eseguendo da riga di comando

a seconda dell’interprete che si desidera utilizzare.

Ma veniamo alla soluzione riportata direttamente dal blog di Daniel Dvorkin:

Una volta inserito in un file di testo, con estensione “sh”, lanciando questo script consentirà di creare un file tar.gz contentente un file .sql per ciascun database presente nel proprio mysql.

È possibile ottenere file zippati con un altro sistema o non compressi affatto semplicemente intervenendo sulla riga dello script che comincia con “gzip” (cancellandola ad esempio si otterrà un file .sql non compresso).

Si noti che la cartella di destinazione deve esistere prima di lanciare lo script, che altrimenti potrebbe fallire miseramente.

Ho testato la soluzione e devo dire che mi è stata molto utile in quanto pratica e veloce.

Ora devo cercare/scrivere uno script per caricare tutti i database siffatti da una cartella ai database veri e propri, ma questo sarà un’altro post.