News sectie , homepage theming en alfresco features

Vorige week ben ik met een aantal dingen bezig geweest.

Website : News section

Het eerste wat ik heb gedaan is het creëren van de nieuws sectie

  1. Maak een nieuw content type aan “news”
  2. Maak een nieuwe rol aan “Newsreporter” mensen met deze rol kunnen hun eigen news posts maken en editeren maar niet de van anderen , set dit in de permissions. Admin kan uiteraard aan alles.
  3. Creër een View met een men link. Ingelogde Newsreporters kunnen hierdan makkelijk naartoe om dan een post overzicht te hebben en een post new article button.

Configuratie van de news edit pagina. Hieronder een korte beschrijving van alle opties.

Displays : definieert in wat voor display deze view word weergegeven , hier is het een pagina maar kan ook een block zijn.

Title : de naam van je view

Format : het standaardformaat waarin je data word weergegeven , mogelijke opties zijn htmllist , grid ,jump list , table,…

 

drupal-views

 

Fields : de velden die worden weergegeven in dit view. Hier heb ik gekozen voor title ,body, 2 links om te editeren of deleten en de post datum.

Filter : defineert welke data onder welke voorwaarden word weergegeven. In dit geval alle gepubliceerde news content.

Sort : hier heb ik gesorteert op  nieuwste nieuws artikelen eerst.

Page Settings : hier definieer je een pad indien je view een page display is. Je kan hier ook specifieren in welke menu’s je view verschijnt en met welke weight. Als laatste kan je specifieren welke rollen en users deze view kunnen bekijken/gebruiken. In dit geval is dit de eerder aangemaakte NewsPoster rol , de admin account heeft uiteraard altijd toegang tot alles.

Header/Footer : Gebruik je om bepaalde content boven of onderaan je view te plaatsten. Hier is dit een text area die ik heb gebruikt om een link te plaatsten “create new news article”

Pager : paginering instellen kan je aan of uitzetten , definieren hoe lang een pagina moet zijn. Of je kan een more link gebruiken.

Contextual filters : Zoals de naam al zegt laten deze filters je toe te filteren op zaken die afhangen van de context en niet perse de rows van de content zelf. In dit geval filter ik op author uid , in de praktijk betekent dit dat gebruikers enkel newsposts kunnen editeren/deleten die ze zelf hebben gemaakt.

Relationships : Relaties maken met andere entities in je drupal installatie. Bij een andere view omtrent news heb ik bvb een relatie gemaakt met author zodanig dat je bij elke newspost de auteurnaam kan zien.

No results behavior : Wat er moet gebeuren als er geen resultaten zijn.

Exposed form: Met dit kan je je filters weergeven op de pagina zodat de gebruiker deze zelf kan aanpassen naar zijn behoeven.

Other : Een verzameling opties waaronder welke css class je deze view wil geven, wil je comment functionaliteit etc..

Theming

CSS file adden aan subtheme: Creer een css file voor je view in sites/all/themes/subtheme/css , voeg dan de referentie toe aan het .info bestand van je subtheme vb:

css[news.css][name] = Homepage Styles.

css[news.css][description] = This file holds the styling of the news page.

css[style-homepage.css][options][weight] = 13

let hierbij op dat de weight hoger is dan de andere definities van stylesheets.

daarna moet je in het admin panel in de settings van je subtheme bij style sheets deze file aanchecken.

 

 

Alfresco synching en desktop integratie

Om content eenvoudig beschikbaar te houden zijn er een paar mogelijkheden in Alfresco:

Cmissync

http://cmissync.com/

Werkt zoals de naam het zegt met het cmis protocol. Met deze tool kan je connecteren en syncen met verschillende dms systemen, niet alleen Alfresco.

Configuratie is eenvoudig , je geeft gwoon je credentials en server in. https://doc.steerableinstruments.com

Daarna kan je eenvoudig je folder selecteren. De geselecteerde folders kan je zien in windows explorer en telkens je een aanpassing maakt word de nieuwe versie van de file upgeload, via 1.1,1.2 etc. Het nadeel aan deze tool is dat je kan connecteren met folders waar je als gebruiker geen rechten op hebt. Je zal er dan wel geen inhoud van zien maar je krijgt constant meldingen “ could not sync authentication failed”. Oplossingen hiervoor is in alfresco bij de folder options “inherit space permissions” af te vinken.

 

Alfresco Sync

Deze sync client is door Alfresco zelf ontwikkelt en is nog steed in beta.

http://wiki.alfresco.com/wiki/Community_file_list_4.2.b (onderaan)

Hier kan ik echter niet inloggen met ons self-signed certificate error is :

10:02:54.007 DEBUG RemoteFileStore – Cloud: Test Connection

10:02:59.053 ERROR RemoteFileStore – Cannot connect to webdav [https://doc.steerableinstruments.com:8080/alfresco/webdav/]

10:02:59.053 ERROR RemoteFileStore – org.apache.http.conn.HttpHostConnectException: Connection to https://doc.steerableinstruments.com:8080 refused

10:02:59.053 ERROR RemoteFileStore – Cloud: Invalid credentials

 

LibreOffice integratie

Je kan in libreoffice ook connecteren met cmis systemen. Dit doe je door, bestand openen te klikken. Daarna klik je op de drie puntjes in het menu en krijg je de optie om te connecteren met verschillende netwerkprotocollen.

 

libreoffice - cmis

Met bovenstaande informatie kan je dan connecteren. Indien versioning aanstaat in Alfresco werkt dit perfect.

Commerce kickstart configuratie

Deze week ben ik begonnen met de configuratie van de e-commerce settings voor de site.

Eerst heb ik enkele algemene zaken gedaan:

Smtp

  1. https://drupal.org/project/smtp

Deze module laat alle uitgaande mail afhandelen via de smtp server van een externe partij, wij gebruiken gmail ( smtp.gmail.com) dus let op dat je poort 456 over ssl gebruikt.

Theming

Het basis theme dat ik gebruik is het Omega kickstart theme. Om ervoor te zorgen dat de site er uniek uitziet werken we met een subtheme. (https://drupal.org/node/2057387 )

Om dit te doen maak je een kopie vanhet basis omega theme in je kickstart installatie. Dan kopieer je deze naar je publieke themes folder in /sites/all/themes. Elk theme heeft een .info bestand dat zijn properties beschrijft, geef dit de naam van je subtheme en laat dit theme overerven van het basistheme. Hierna kan je in de Drupal admin console je nieuw subtheme selecteren als standaard/default.

Als laatste moet nog de .tpl files en css files kopieren van het Omega kickstart theme zelf. Dan ben je klaar om deze te editen en het design aan te passen. Het voordeel van deze techniek is dat indien er iets mis gaat je altijd gemakkelijk kan terugvallen op je parent theme.

Gebruikte Drupal Commerce Modules

Ik ben begonnen met een installatie van Kickstart Commerce. Dit is handig omdat deze installatie al een heleboel modules bevat die we nodig zullen hebben.

Physical

https://drupal.org/project/commerce_physical

Laat toe je product te definieren met fysieke eigenschappen als gewicht en grootte. Hebben we nodig voor Shipping.

Shipping

De shipping module die voorhanden is, is erg flexibel. Je kan je shipping kosten laten berekenen op basis van ‘rules’. Deze rules configureer je zelf en berekenen voor elke klant/bestelling de shipping kosten apart.

Voorbeeld : Shipping berekenen op basis van het gewicht van een bestelling.

  1. Ga naar Store settings/shipping.
  2. Voeg een Flat rate toe , een basisprijs die altijd betaald moet worden.
  3. Klik op calculation rules, met deze regels kan je op basis van meegegeven parameters je shipping berekenen.
  4. Bij actions , maak een loop aan. Geef een data-selector in. Dit is de parameter die je gaat gebruiken. In dit geval is dit commerce-line-item:order:commerce-line-items. We maken hier een loop die elk product afloopt.
  5. Nu definieren we een subroutine die we zullen oproepen telkens de loop itereert. Ga naar Sites settings/configuration/workflow/rules/components en klik op add component.
  6. Maak een component aan ‘Calculate shipping amount by weight of line-item’.
  7. Maak hiervoor 2 conditions aan : Parameter moet een product zijn en moet een gewicht gedefinieerd hebben.
  8. Hierna Maak je 3 acties aan. De eerste vermenigvuldigt de kwantiteit van het product met zijn gewicht. De tweede neemt dit gewicht en vermenigvuldigt dit met de prijs per kilogram in cent. De derde actie zet deze waarde als return voor deze subroutine.
  9. Ga nu terug naar je eerder gemaakte loop in calculation rules. Roep hier deze subroutine op.
  10. Voeg als laatste nog een extra actie toe buiten de loop die de berekende waarden toevoegt aan de shipping prijs.

Als je nu een bestelling doet betaal je per gram gewicht hiervan extra.

shippingrules

Met dit rules systeem kan je nog veel meer. Wil je bijvoorbeeld shipping berekenen op basis van het land van de klant is dit geen probleem. Zaken als korting geven bij grote bestellingen gaan ook. Als je naar Store settings/Customer profiles gaat kan je de billing en shipping settings instellen. Je kan hier bijvoorbeeld selecteren naar welke landen je site kan verschepen.

 

Stock

Standaard bevat Kickstart geen stock module, daarom gebruiken we https://drupal.org/project/commerce_stock

We gebruiken versie 2, omdat deze een api heeft voor stockbeheer.

Deze module voegt een veld ‘stock’ toe aan je producten. Dit zorgt ervoor dat klanten niet meer kunnen bestellen dan dat er beschikbaar is. Het is wel zo dat de beheerder van de site dus telkens voor zijn producten stock updates manueel moet ingeven. Het zou handig zijn dat dit via een ERP systeem gebeurt dat stockmanagement ondersteund.

Net als shipping kan je Stock ook configureren met rules. Standaard wordt bvb de stock vermindert na de checkout van een order , maar je kan dit ook al eerder doen in het bestelproces.

Ogone

https://drupal.org/project/commerce_ogone

zorgt voor betaling met het ogone systeem , configureer in payment options , klik op ogone en klik dan op de action die erbij defined is

Billy (Billing Light)

https://drupal.org/project/commerce_billy

Geneereert een pdf factuur op basis van de bestelling.

installatie van deze module vereist de dompdf converter , download en unpack deze in sites/all/dompdf. Deze converter convert het html5 formaat naar .pdf.

deze module vereist ook dat hij schrijfrechten heeft op zijn fonts folder , kopieer daarom deze folder van sites/all/dompdf/lib/fonts naar je PUBLIC drupal folder , deze is bij mij sites/steerable.localhost/files

configuratie hiervan gebeurt in  /admin/commerce/config/billy-invoice

zet het vinkje aan zodanig dat de factuur al gegenereert word als een klant zijn bestelling heeft gecheckout.

Billy Mail

https://drupal.org/project/commerce_billy_mail

Een extensie op Billy die een email met de factuur in naar de klant stuurt.

Configureer op admin/commerce/config/billy-invoice/billy-mail 

Daarna moet je een nieuwe actie configureren. Ga naar rules, rule; Invoice order on completion. Voeg daar een actie toe waarin je specifieert dat er een invoice mail word verzonden na dat het checkout proces voltooid is.

Linux config

We zijn ondertussen een week verder. Deze week heb ik mij bezig gehouden met de configuratie van de Linux server van het bedrijf. Het betreft een Debian 6.0(Squeeze) installatie die draait op een 64bit Atom processor.

Een aantal zaken die moeten geinstalleerd worden :

– Git server (version control)

– Alfresco (document management)

– Tomcat (webserver die java code draait, nodig voor Alfresco)

– Drupal (web CMS)

– Drush (Command line client voor drupal, install modules ,backup files ,run cron, etc..)

De Alom gekende webserver Apache is reeds beschikbaar.

Ik ben begonnen met de configuratie van Apache en php. (http://portalbuilders.pro/PBblog/installing-drupal-version-7-on-linuxapachemysqlphp/)

max_execution_time heb ik verhoogt van 30 naar 60.

memory_limit stond op 128mb maar heb ik op 256 gezet om meer speling te hebben, zodat ik me geen zorgen hoef te maken zelf met een uitgebreide drupal + modules installatie.
Error reporting stond op E_all & E_Deprecated , voor het developen heb je best een zo streng mogelijk reporting setting dus deze staat nu op strict.

Daarna heb ik de locale DNS server aangepast (bind9 onder linux). Met records doc.steerableinstruments.com en drupal.steerableinstruments.com voor respectievelijk de document manager Alfresco en de testomgeving voor de website. Het doc record heb ik ook aangemaakt op de dns provider GoDaddy maar de drupal installatie dus nog niet aangezien deze enkel voor locale testdoeleinden is bedoeld.

Voor de Drupal installatie heb ik het Commerce Kickstart in de /var/www folder gedownload en unpacked. Daarna mysql db aangemaakt en de Drupal setup gestart.
Voor de installatie waren er nog enkele problemen.

– De php curl library was vereist (apt-get install php5-curl)
– Drupal had schrijfrechten nodig op cd /var/www/drupal/sites (chmod 7777 -R default)
– Settings.php aanpassen met db login informatie.

Deze installatie ben ik echter niet van plan te gebruiken maar het staat alvast klaar voor wanneer de site af is.

Daarna heb ik de git server geïnstalleerd met behulp van deze link : https://drupal.org/node/803746. Omdat ik de enige developer ben voor dit project heb ik mijn code lokaal en mijn versioning op de server gebeurt op een bare repository.

De alfresco installatie was de lastigste. Ben begonnen met het installeren van de nodige libraries.

apt-get install libice6 libsm6 libxt6 libxrender1 libfontconfig1
apt-get install libgif4 libjpeg62 libpng12-0 libstdc++5 libxinerama1

Daarna het installeren en setten van de poorten.
wget http://dl.alfresco.com/release/community/build-04480/alfresco-community-4.2.b-installer-linux-x64.bin
chmod +x alfresco-community-4.2.b-installer-linux-x64.bin
./alfresco-community-4.2.b-installer-linux-x64.bin

Database port
Tomcat server poort
Tomcat shutdown poort
Tomcar ssl
Tomcat AJP
Alfresco ftp

De server draait dus Apache maar Alfresco heeft de Tomcat server nodig om te functioneren. Daarom is het nodig een link aan te maken. Dit doe je door de mod_jk connector te installeren. apt-get install libapache2-mod-jk
En een worker file aan te maken in de tomcat directory:
Workers.properties
worker.list=tomcat
worker.tomcat.port=8009
worker.tomcat.host=localhost
worker.tomcat.type=ajp13
worker.tomcat.lbfactor=1

Verwijs hiernaar in de apache config:
/etc/apache2/conf.d , naam JkWorkerFile met volgende lijn in :
JkWorkersFile /opt/alfresco/tomcat/conf/workers.properties

Het laatste dat nog moet gebeuren is het aanpassen van de virtualhosts in Apache.

<VirtualHost *:80>
ServerName doc.steerableinstruments.com
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) doc.steerableinstruments.com [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName doc.steerableinstruments.com
JkMount /* tomcat
SSLEngine on
SSLCertificateKeyFile /etc/ssl/private/certificate.pem
SSLCertificateFile /etc/ssl/private/certificate.crt
SSLCACertificateFile /etc/ssl/private/authority.crt
SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>

Na de installatie komen gebruikers terecht op de Tomcat server landing page als ze doc.steerableinstruments.com bezoeken. Ik heb daarom een redirect naar doc.steerableinstruments.com/share gemaakt.
In Tomcat cd/opt/alfresco-4.2b/tomcat/webapps/ROOT/index.jsp
Pas deze file aan door ergens vanboven :
<% response.sendRedirect(“/share/index.jsp”); %>
Toe te voegen.

Start!

Het is ondertussen woensdag en ik heb de eerste twee dagen stage al achter de rug. Maandag ben ik toegekomen rond 7uur 30. Mijn stagementor (Bart Blanckaert) en ik hebben toen de komende opdrachten doorgenomen deze bestaan uit:

– Het maken van een website voor het bedrijf. Deze website moet een aantal zaken verwezenlijken. Er moet zeker een e-commerce sectie zijn zodat het bedrijf zijn producten eenvoudig kan toevoegen en aanbieden. De site moet beschikken over integratie met een document management systeem. Verder moet er een time tracking systeem worden ingebouwd zodat het bedrijf overzicht krijgt over de werktijden van zijn werknemers.

– Uiteraard moet ik dus ook opzoek naar een geschikt Document management systeem. Dit zodat de verschillende werknemers gemakkelijk verschillende versies van documenten kunnen doornemen en de metadata bekijken.

– Zowel de website als het dms systeem moeten geconfigureerd worden op de beschikbare Linux Debian server.

Waar ik deze week mee begonnen ben is het kiezen van een geschikt CMS-systeem. Een voorstudie van verschillende cms systemen als Drupal/Joomla om zo te bepalen welk systeem het best past bij de bovenstaande eisen. Ik heb een aantal sample sites gemaakt om  een goede feeling te krijgen achter de werking van elk systeem. Ook heb ik gekeken welke plugins/modules handig zijn voor de features die ik in de toekomst zal moeten implementeren.

Dinsdag kwamen er twee extra stagairs bij van hogeschool gent die het bedrijf zullen assisteren met hun kennis over automatisatie en electromechanica. Dit was dan ook een beter moment voor een introductie over het bedrijf en een rondleiding. Bart heeft ons een uitgebreide uitleg gegeven over het ontstaan/geschiedenis van het bedrijf en de filosofie/redenering achter het product dat er word ontwikkelt.