Loading

[0.7.5] Smarty 3 compatibility — Patch

You want to see a new feature?

[0.7.5] Smarty 3 compatibility — Patch

Postby gwolf » 13.03.2012, 19:59

Hi,

As I said here some months ago, Debian is migrating away from Smarty 2.x to 3.x. Well, even though I was postponing looking into this for Collabtive, this week the change happened. I know Collabtive ships with a full Smarty install in it, but for Debian packages we have the policy to limit as much as possible code duplication. Smarty 3 is, as far as I understand, a complete rewrite which improves mainly on speed and security issues – But requires being stricter in some declarations.

I am basically not familiar with Smarty, but it took me only a couple of hours to get Collabtive to properly work with it, and I'm about to upload it to Debian. I'm including here the patch (as the Forum software does not allow me to attach it). Before it, I'll highlight the main changes I do:

  • Smarty 3 does no longer allow you to blindly use an __autoload function; proper registration is needed. So, I added a spl_autoload_register('__autoload'); call just after the function definition. It would be better to name it i.e. collabtive_autload, to avoid clashes, but I tried to be as non-invasive as possible.
  • Strings require to be quoted in the templates, so I quoted 'lng.conf' in header.tpl (both in standard/ and in winter/)
  • The comment syntax for configuration files is prepending a hash (#), not the {* syntax used in templates *}. Fixed both the Spanish and Lituanian translations.
  • As Smarty no longer "lives" inside Collabtive's directory, I'm explicitly requiring Smarty.class.php from init.php. I'm also setting some include paths which will not be required for your setup, ignore those.

I hope you can include those changes for the next release!

Code: Select all
Index: collabtive/include/initfunctions.php
===================================================================
--- collabtive.orig/include/initfunctions.php   2012-03-13 11:24:38.000000000 -0600
+++ collabtive/include/initfunctions.php   2012-03-13 11:24:39.000000000 -0600
@@ -14,6 +14,8 @@
     }
}

+spl_autoload_register('__autoload');
+
function chkproject($user, $project)
{
   $user = (int) $user;
Index: collabtive/templates/standard/header.tpl
===================================================================
--- collabtive.orig/templates/standard/header.tpl   2012-03-13 11:23:45.000000000 -0600
+++ collabtive/templates/standard/header.tpl   2012-03-13 11:24:39.000000000 -0600
@@ -1,4 +1,4 @@
-{config_load file=lng.conf section = "strings" scope="global" }
+{config_load file='lng.conf' section = "strings" scope="global" }
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
Index: collabtive/templates/winter/header.tpl
===================================================================
--- collabtive.orig/templates/winter/header.tpl   2012-03-13 11:23:45.000000000 -0600
+++ collabtive/templates/winter/header.tpl   2012-03-13 11:24:39.000000000 -0600
@@ -1,4 +1,4 @@
-{config_load file=lng.conf section = "strings" scope="global" }
+{config_load file='lng.conf' section = "strings" scope="global" }
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
Index: collabtive/language/en/lng.conf
===================================================================
--- collabtive.orig/language/en/lng.conf   2012-03-13 11:23:45.000000000 -0600
+++ collabtive/language/en/lng.conf   2012-03-13 11:24:39.000000000 -0600
@@ -59,7 +59,7 @@
welcomeback = Welcome back
zip = Postcode

-{* Project *}
+# Project

access = Access
addproject = Add project
@@ -86,7 +86,7 @@
report = Report
start = Start

-{* Task / Tasklist *}
+# Task / Tasklist

addtask = Add task
addtasklist = Add tasklist
@@ -123,7 +123,7 @@
text = Text
todaytasks = Tasks for today

-{* Milestone *}
+# Milestone

addmilestone = Add milestone
donemilestones = Done milestones
@@ -141,7 +141,7 @@
newmilestones = New milestones
todaystones = Today's milestones

-{* Messages *}
+# Messages

addmessage = Add message
answer = Answer
@@ -161,7 +161,7 @@
replywasedited = Reply was edited
title = Title

-{* eMails *}
+# eMails

hello = Hello
mailfrommail = Sender e-mail
@@ -181,7 +181,7 @@
taskassignedsubject = Collabtive notification – Task assigned
taskassignedtext = a new task has been assigned to you:

-{* Files *}
+# Files

addfile = Add file
addfiles = Add files
@@ -210,7 +210,7 @@
rootdir = Root directory
visibility = Visible for

-{* Search *}
+# Search

advancedsearch = Advanced search
didyoumean = Did you mean
@@ -225,7 +225,7 @@
searching = Searching...
searchitem = Search item

-{* Languages *}
+# Languages

al = Albanian
ar = Arabic
@@ -262,7 +262,7 @@
uk = Ukranian
zh = Chinese

-{* Calendar *}
+# Calendar

calendar = Calendar
dateformat = Date format
@@ -289,7 +289,7 @@
november = November
december = December

-{* Errors *}
+# Errors

accessdenied = Access denied
confirmdel = Really delete this item?\nDeleting cannot be undone.
@@ -301,7 +301,7 @@
wrongfields = Please enter valid values for:\n\n
wrongselect = Please select a valid value in \"%FIELDNAME%\".

-{* Installation *}
+# Installation

createadmin = Create the first user. This user will be the administrator and cannot be deleted.
clickcontinue = Click "continue" to pursue the installation.
@@ -327,7 +327,7 @@
phpversion = You need at least PHP version 5.1 to run Collabtive.
proceedtologin = Proceed to the login page.

-{* Timetracker *}
+# Timetracker

comment = Comment
edittimetracker = Edit timetracker entry
@@ -346,7 +346,7 @@
timetracker = Timetracker
timetrackeradded = Time was added

-{* Roles / Permissions *}
+# Roles / Permissions

add = Add
addrole = Add role
@@ -362,7 +362,7 @@
roleedited = Role was edited
roles = Roles

-{* Miscellaneous *}
+# Miscellaneous

active = Active
activity = Activity
@@ -424,4 +424,4 @@
was = was
were = were
yes = Yes
-zipexport = ZIP
\ No newline at end of file
+zipexport = ZIP
Index: collabtive/language/lt/lng.conf
===================================================================
--- collabtive.orig/language/lt/lng.conf   2012-03-13 11:23:45.000000000 -0600
+++ collabtive/language/lt/lng.conf   2012-03-13 11:24:39.000000000 -0600
@@ -1,4 +1,4 @@
-{* Credits: Arūnas Simonaitis - arunas@simonaitis.lt *}
+# Credits: Arūnas Simonaitis - arunas@simonaitis.lt

address = Adresas
adduser = Pridėti vartotoją
@@ -55,7 +55,7 @@
welcomeback = Sveiki sugrįžę
zip = Pašto kodas

-{* Project *}
+# Project

access = Prieiga
addproject = Pridėto projektą
@@ -82,7 +82,7 @@
report = Ataskaita
start = Pradėta

-{* Task / Tasklist *}
+# Task / Tasklist

addtask = Pridėti užduotį
addtasklist = Pridėti užduočių sąrašą
@@ -119,7 +119,7 @@
text = Tekstas
todaytasks = Šiandienos užduotys

-{* Milestone *}
+# Milestone

addmilestone = Pridėti etapą
donemilestones = Įvykdyti etapai
@@ -137,7 +137,7 @@
newmilestones = Nauji etapai
todaystones = Šiandienos etapai

-{* Messages *}
+# Messages

addmessage = Pridėti žinutę
answer = Atsakyti
@@ -157,7 +157,7 @@
replywasedited = Atsakymas buvo paredaguotas
title = Pavadinimas

-{* eMails *}
+# eMails

mailfrommail = Siuntėjo el. paštas
mailfromname = Siuntėjas
@@ -175,7 +175,7 @@
taskassignedsubject = Pranešimas – Užduoties priskyrimas
taskassignedtext = Jums buvo priskirta nauja užduotis:

-{* Files *}
+# Files

addfile = Pridėti bylą
addfiles = Pridėti bylas
@@ -204,7 +204,7 @@
rootdir = Pagrindinė direktorija
visibility = Gali matyti

-{* Search *}
+# Search

advancedsearch = Išplėstinė paieška
didyoumean = Gal ieškojote
@@ -219,7 +219,7 @@
searching = Ieškoma...
searchitem = Paieškos punktai

-{* Languages *}
+# Languages

al = Albanų
ar = Arabų
@@ -254,7 +254,7 @@
uk = Ukrainų
zh = Kinų

-{* Calendar *}
+# Calendar

calendar = Kalendorius
dateformat = Datos formatas
@@ -281,7 +281,7 @@
november = Lapkritis
december = Gruodis

-{* Errors *}
+# Errors

accessdenied = Prieiga uždrausta
confirmdel = Tikrai norite ištrinti?\nVeiksmas negalės būti atšauktas.
@@ -293,7 +293,7 @@
wrongfields = Prašome įvesti teisingas reikšmes:\n\n
wrongselect = Pasirinkite teisingą reikšmę: \"%FIELDNAME%\".

-{* Installation *}
+# Installation

createadmin = Sukurkite pirmą vartotoją. Šis vartotojas bus administratorius ir negalės būti pašalintas.
clickcontinue = Paspauskite "Tęsti" norėdami įdiegti programą.
@@ -319,7 +319,7 @@
mb_string_enabled = mb_string plėtinys įjungtas
enable_mb_string = Įjunkite mb_string plėtinį

-{* Timetracker *}
+# Timetracker

comment = Komentaras
edittimetracker = Redaguoti laikos stebėjimo įrašą
@@ -338,7 +338,7 @@
timetracker = Laiko stebėjimas
timetrackeradded = Laikas pridėtas

-{* Roles / Permissions *}
+# Roles / Permissions

add = Pridėti
addrole = Pridėti rolę
@@ -354,7 +354,7 @@
roleedited = Rolė buvo paredaguota
roles = Rolės

-{* Miscellaneous *}
+# Miscellaneous

active = Aktyvus
activity = Aktyvumas
@@ -415,4 +415,4 @@
was = buvo
were = buvo
yes = Taip
-zipexport = ZIP
\ No newline at end of file
+zipexport = ZIP
Index: collabtive/init.php
===================================================================
--- collabtive.orig/init.php   2012-03-13 11:24:34.000000000 -0600
+++ collabtive/init.php   2012-03-13 11:24:46.000000000 -0600
@@ -1,4 +1,10 @@
<?php
+// Add some paths and requires needed for an installation with a
+// systemwide Smarty3 setup (i.e. as distributed in Debian)
+set_include_path(get_include_path() . PATH_SEPARATOR . '/usr/share/collabtive/www/include');
+set_include_path(get_include_path() . PATH_SEPARATOR . "/usr/share/php/smarty3");
+require "Smarty.class.php";
+
ini_set("arg_separator.output", "&amp;");
ini_set('default_charset', 'utf-8');
// Start output buffering with gzip compression and start the session
gwolf
 
Posts: 29
Joined: 17.08.2010, 20:09

Return to Feature Requests

Who is online

Users browsing this forum: No registered users

cron