Skip to content

fflch/drupal

Repository files navigation

Drupal FFLCH

Plataforma Drupal usada nos sites da FFLCH. Os módulos e bibliotecas estão em composer.json. Principais diretórios:

  • web/profiles/contrib/fflchprofile: profile com módulos e configurações customizações

deploy em um ambiente dev:

Biblioteca do php:

apt-get install php php-common php-cli php-gd php-curl php-xml php-mbstring php-zip php-sybase

Bancos de dados:

apt-get install mariadb-server php-mysql sqlite3 php-sqlite3

Instalação do composer:

curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Download e instalação das dependências:

git clone [email protected]:SEU-USERNAME/drupal.git
cd drupal
composer install

Instalação usando o profile fflch com sqlite:

./vendor/bin/drush site-install fflchprofile \
    --db-url=sqlite://sites/default/files/.ht.sqlite \
    --site-name="fflch" \
    --site-mail="fflch@localhost" \
    --account-name="fflch" \
    --account-pass="fflch" \
    --account-mail="fflch@localhost" --yes

Servidor http básico:

cd drupal
./vendor/bin/drupal serve -vvv

Caso queira escolher ip e porta:

./vendor/bin/drupal serve 0.0.0.0:8000 -vvv

Criando nodes aleatórios:

./vendor/bin/drupal create:nodes

Deletando todos nodes:

./vendor/bin/drupal entity:delete node --all

Se quiser apagar o banco para fazer uma instalação zerada:

# mysql
./vendor/bin/drupal database:drop

# sqlite
rm web/sites/default/files/.ht.sqlite*

Adicionando temas, módulos e bibliotecas

Exemplos de instalação de novos módulos:

cd drupal
composer require drupal/webform:5.1
composer require drupal/smtp:1.0-beta4

Libraries são instaladas usando assest-packgist, assim, consulte o nome da biblioteca em https://asset-packagist.org e depois instale desta forma:

composer require npm-asset/datetimepicker:0.1.38

Verificando se há atualizações para os módulos/temas/biliotecas:

composer outdated -D

Lembre-se que ao alterar a versão de um módulo deve-se verificar se há patches aplicados no mesmo na seção extra.patches do composer.json.

Módulos que estão em composer.json para avaliar:

composer show -D | tr -s ' ' | cut -d' ' -f1| grep ^drupal | cut -d'/' -f2

Removendo módulo:

  • Remover do /web/profiles/contrib/fflchprofile/modules/fflch_configs/src/installed.txt caso lá ele esteja
  • Remover do composer.json
  • "A quente" remover da plataforma que está no ar em web/profiles/contrib/fflchprofile/modules/fflch_configs/src/installed.txt para ele não ser instalado novamente na rodada do cron
  • com drush pm-uninstall desabilitar o módulos de todos sites que estão no ar
  • subir nova plataforma já sem o módulo e migrar os sites

Configurações

As vezes, novas configurações são incorporadas ao site modelo, para aplicar essa nova configuração pode-se fazer:

drush @cjc.fflch.usp.br config-set aegan.settings slideshow_display '0' --yes

O mesmo comando para todos sites na pasta sites:

for i in $(ls|grep fflch); do drush @$i config-set aegan.settings slideshow_display '0' --yes ;done

Situação contrária: configurações que precisaram ser removidas, algumas recorrentes:

drush @cea.fflch.usp.br config-delete languageicons.settings
drush @cea.fflch.usp.br config-delete captcha.captcha_point.user_pass
drush @cea.fflch.usp.br config-delete captcha.settings
drush @cea.fflch.usp.br config-delete captcha.captcha_point.user_login_form

Adicionando novas configurações no fflchprofile

Há dois tipos de configurações:

  • instalação: aplicada somente na criação do site
  • sincronização: aplicadas a cada rodada do cron

As configurações de instalação estão definidas em arquivos .yml no diretório fflchprofile/config/install.

As configurações de sincronização estão em fflchprofile/modules/fflch_configs/config/mandatory.

Passos para fazer modificações:

  • Identificar os arquivos .yml que executam a modificação
  • Salvar e commitar esses arquivos na pasta modules/fflch_configs/config/mandatory ou *fflchprofile/config/install

Dica para capturar os arquivos yml que estão relacionados as configurações:

./vendor/bin/drush config-export --destination="~/antes"

Fazer mudanças na interface do site e exportar nova configuração:

./vendor/bin/drush config-export --destination="~/depois"

Vejam os arquivos alterados:

diff -qr ~/antes/ ~/depois

Suponha que teve alteração em editor.editor.full_html.yml:

vimdiff ~/antes/editor.editor.full_html.yml ~/depois/editor.editor.full_html.yml

Usando o meld para fazer as comparações:

sudo apt install meld
meld ~/antes ~/depois

Modelo de como acrescentar patches no composer.json:

"extra": {
  "patches": {
        "drupal/editor_file": {
            "3057895 - Uploaded files are not permanent":
                "https://www.drupal.org/files/issues/2019-05-29/file-upload-marked-permanent-3057895-2.patch"
        }
    }
}

Problemas conhecidos e workarounds

quando o sitename e slogan ficam inalteráveis

Essa correção dever ser feita no ambiente dev e depois transposta para produção. Aplicar o patch disponínel https://www.drupal.org/project/drupal/issues/3011276#comment-13228934 e depois rodar:

./vendor/bin/drush config-get language.pt-br:system.site
./vendor/bin/drush config-delete language.pt-br:system.site slogan
./vendor/bin/drush config-delete language.pt-br:system.site name
./vendor/bin/drush config-delete language.pt-br:system.site page.front home-pt-br

Para subir um dump na máquina local, algumas configurações devem ser deletadas:

./vendor/bin/drush config-delete system.file path

campos que não podem ser traduzidos

sites migrados do d7 contém um problema de campos não poderem ser traduzidos pois o langcode está com und (undefinided). Para corrigir:

drush @filosofia.fflch.usp.br config-set  field.storage.node.field_banca langcode pt-br --yes

problema downloads nas traduções

Muitos sites migrados do drupal 6 ou 7 estavam com o valor de path em locale.settings.yml como sites/default/files/translations. Para verificar todos:

for i in $(ls | grep fflch.usp.br);do drush @$i config-get locale.settings translation.path; done

Para corrigir todos:

for i in $(ls | grep fflch.usp.br);do drush @$i config-set locale.settings translation.path sites/$i/files/translations --yes; done