Essays /

Websites With Joomla Essay

Essay preview

Building Websites with Joomla! 1.5

The best-selling Joomla! tutorial guide updated for the final release

Hagen Graf

BIRMINGHAM - MUMBAI

Building Websites with Joomla! 1.5
Copyright © 2008 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, Packt Publishing, nor its dealers or distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: March 2008

Production Reference: 1240308

Published by Packt Publishing Ltd. 32 Lincoln Road Olton Birmingham, B27 6PA, UK. ISBN 978-1-847195-30-2 www.packtpub.com

Cover Image by Vinayak Chittar ([email protected])

Credits
Author Hagen Graf Translator Wolfgang Spegg Senior Acquisition Editor Louay Fatoohi Technical Editor Akshara Aware Editorial Team Leader Mithil Kulkarni Project Manager Abhijeet Deobhakta Cover Work Shantanu Zagade Project Coordinator Brinell Lewis Indexer Monica Ajmera Proofreader Chris Smith Production Coordinators Aparna Bhagat Shantanu Zagade

About the Author
Hagen Graf was born in July 1964. Born and raised in Lower Saxony, Germany, his first contact with a computer was in the late seventies with a Radioshack TRS 80. As a salesperson, he organized his customers' data by programming suitable applications. This gave him a big advantage over other salesmen. With the intention of honing his skills, he joined evening courses in programming and became a programmer. Nowadays, he works in his wife's consulting company as a trainer, consultant, and programmer (http://www.cocoate.com). Hagen Graf has published other books in German, about the Apache web server, about security problems in Windows XP, about Mambo, and about Drupal. Since 2001, he has been engaged in a nonprofit e-learning community called "machmit. org e.V.", as well as in several national and international projects. All the projects are related to content management, community building, and harnessing the power of social software like wikis and weblogs. He chose Joomla! CMS because of its simplicity and easy-to-use administration. You can access and comment on his blog (http://www.bloghouse. org/en/hagen).

Table of Contents
Preface Chapter 1: Terms, Concepts, and Deliberations
Content Management System (CMS) A Quick Glance into History Joomla!—How was it Developed? Structure of a Web Content Management System (WCMS) Front End and Back End Access Rights Content Extensions Components Templates Plug-Ins

7 8 11 13 13 13 14 14

1 7

Workflow Configuration Settings API Is Joomla! a Piece of Real Estate? Joomla! Versions Numbering System of Joomla! Versions Road Map Changes In Detail Internationalization User Plug-Ins XML Remote Procedure Call Support Support of Several Databases FTP System Overhaul of the Joomla! Framework Barrier Freedom Search Engine Friendliness

15 15 15 16 17 17 18 19 19 20 20 20 20 20 21 21

14 14 15

Table of Contents

Google Summer of Code Projects Joomla! Features Examples of Joomla! Pages Joomla.org Travel Shop, Ireland Frank Lüdtke, Germany Hotel Schönruh, Austria Urth.tv, USA unric.org, Europe porsche.com.br, Brazil Summary

21 22 23 23 24 24 25 25 26 27 27

Chapter 2: Installation

Client-Server System Accessing a Joomla! Website on the Internet Technical Requirements for Joomla! Necessary Elements for a Joomla! System Installation Local Test Environment Windows Operating System Linux Operating System Mac OS X Operating System Rented Virtual Server Your Own Server

29

29 29 30 30 31

Production Environment

32 33 33 36

31 31 32 32 32

Setting Up the Local Server Environment Windows Linux
XAMPP for Windows openSUSE > 10.x Debian/Ubuntu Your Own Server at a Provider (Root Server)

34 36 37 37

Joomla! Installation on a Virtual Server on the Net Joomla! Installation Selecting a Directory for Installation An Example Directory Unpacking

38 39 39

Joomla! Web Installer

Step 1: Language Selection Step 2: Pre-Installation Check Step 3: Licence Step 4: Database Configuration Step 5: FTP Configuration Step 6: Configuration Step 7: Completion [ ii ]

41

39 39 41 42 42 43 44 46 46 48

Table of Contents.

Summary

50

Chapter 3: A Tour of Your New Website
Front End Menus
Top Menu Main Menu/Breadcrumbs Other Menus What is Content? First Page/Front Page The Newest Information/The Most Often Read Messages Banner Area Login Area Polling Who is Online? Feeds Search Field

51

51 53

Content

54

53 54 54 55 56 57 58 59 59 60 60 60

Advertising Functions

57 58

Decorative Elements Outlook Back end Summary

61 61 62 63

Chapter 4: Customizing Joomla!—Language and Templates
A Different Language for the Website and the Administrator Installation of a Different Language File Translation of a Menu Entry Modifying the Menu Name Changing the Template for Your Website Changing Colors in the Template Summary Screen Layout Menu Bar Tool Bar Submenus Filter Elements Content Area Lists Dialogs Miscellaneous Help

65

65 65 67 68 68 69 70 71 71 72 73 73 73 74 74 74 75

Chapter 5: Configuration of Joomla! Administration

71

[ iii ]

Table of Contents

Help Icon Help with Speech Balloons Help Menu Joomla! Help System Info Summary

75 75 75 76 76 78

Chapter 6: Site Menu
Control Panel User Manager Logout Users Icon Delete Users Icon Edit Users Icon New User Icon Media Manager Creating Directories Uploading a File Global Configuration Site Section

79

System Section
System Settings Users Settings Media Settings Debug Settings Cache Settings Session Settings

Site Settings Metadata Settings SEO (Search Engine Optimization) Settings

79 80 81 81 82 86 86 88 88 89 90

94

90 91 92 94 95 96 97 98 99

Server Section

Logout Summary

Server Settings Locale Settings FTP Settings Database Settings Mail Settings

103 103

99 100 100 101 102

99

Chapter 7: The Menus Menu

Menus Customizing an Existing Menu Menus Icon Default Icon Publish/Unpublish Icon Move Icon [ iv ]

105

106 106 107 107 108 108

Table of Contents.

Copy Icon Trash Icon Edit Icon (Edit Menu Items) New Icon Menu Trash Creating a New Menu Summary

109 109 109 116 117 117 123

Chapter 8: Content Menu

Article Manager Description of the Articles List Editing Icons for an Article Archive, Unarchive Approve, Block Move, Copy Trash Basket Parameters Parameters

125

126 127 129

Creating a New Article Images Article Trash Section Manager Editing Sections Category Manager Front Page Manager Editing Content from the Front End Summary

132 137 140 140 141 144 145 146 147

130 130 130 130 131 133

Chapter 9: Components Menu
Banner Banners Clients Manage Banners Graphic Banners Text Links Contacts Contact Manager Details Information Parameters

149

149 149 150 151 152 153 154 154

Creation of a Menu Link for the Website Categories News Feeds Feeds [v]

156 159 160 160

155 156 156

Table of Contents

Categories Polls Search Statistics Web Links Links Categories Summary

161 162 164 164 164 166 166

Chapter 10: Extensions Menu

Install/Uninstall Install, Components, Modules, Plug-ins, Languages, and Templates Module Manager Site Module Breadcrumbs Footer Banner Main Menus Statistics Login Form Archive Sections Related Items Wrapper Feed Display Who's Online Polls Advertisement Random Image Syndication Newsflash Latest News Popular Search

167

167 168 169 171

Administrator Module
Logged in Users Popular Recent added Articles Menu Stats Footer Unread Messages Online Users Quick Icons Login Admin Menu User Status Admin Submenu Title Toolbar

182

171 172 172 173 174 175 176 176 176 176 177 178 178 178 179 179 179 180 181 181 183 183 183 183 183 183 183 184 184 184 184 184 184 184

[ vi ]

Table of Contents.

Plugins Manager Authentication Plug-ins
Joomla! LDAP OpenID Gmail

CSS Admin Menu

184 185

184

Content Plug-ins
Image Page Navigation SEF Rating Email Cloaking GeSHi Load Module Pagebreak No Editor TinyMCE 2.0

186

185 186 186 186

Editors Plug-ins Editors-xtd Plug-ins Search Plug-ins System Plug-ins Log Debug Legacy Cache Remember Me Backlink Joomla!

188 188 188 188

186 186 186 187 187 187 187 187 188 188

User Plug-ins

189 189 190 190

188 189 189 189 189 189 189 189 190

XML-RPC Plug-ins Template Manager Site
Editing a Template Preview Icon Edit HTML Icon Edit CSS Icon

XML-RPC-Joomla XML-RPC blogger API

Administrator Language Manager Summary

192 192 192

190 191 191 192

Chapter 11: Tools

Private Messaging System Mass Mail
[ vii ]

193

193 194

Table of Contents

Global Check-In Summary

195 196

Chapter 12: More on Extensions

Fireboard (Forum) Installation Configuration Setting Up a Forum Integration into the Website DOCman (Download section, Document Management) Installation Configuration Language Integration into the Website Preparing Content Search Plug-in Supplementary Module Exposé Flash Gallery Installation Integration into the Website Album Manager in the Administration Section Uninstallation Album Manager as a Stand-Alone Program Integration into the Joomla! Framework Problems with Third-Party Components Updates Security What should you Do? Summary Corporate Identity HTML/XHTML, CSS, and XML HTML/XHTML CSS XML Creating Your Own Templates Concept HTML Conversion Directory Structures of the Template First Trial Run

197

198 199 201 201 202 203 204 205 205 206 208 210 210 211 212 214 216 219 219 220 220 220 220 221 221 223 224 224 224 225 226 226 227 230 232

Chapter 13: Writing Your Own Joomla! Templates

223

[ viii ]

Table of Contents.

Integration of the Joomla! Module Creating a Template Package Installation with the Joomla! Template Installer What Source Code Comes from Joomla? Summary

233 235 236 236 240

Chapter 14: Barrier Freedom and Joomla!
Barrier Freedom—What is it Anyway?
The Legal Backround

241

241

Criteria for Accessible Sites at a Glance Separation of Content and Layout Demands on Design and Content Visual and Content-Wise Arrangement of Content Color Selection Contrasts Variable Font Sizes Scalable Layouts Graphics Sufficiently Large Navigation Elements Forms Barrier Freedom in Joomla! 1.5—Possible with Beez HTML Jump Marks index.php Skip Links in Forms Beez and Modules com_content Forms Data Tables Design and CSS Beez Internal CSS Files Positioning The Layout Miscellaneous Joomla! Internal Accessibility Features Additional Information about This Topic Assistive Technologies CheckerTools Book Tip Summary

245 245 246 247 247 248 249 249 249 251 251 253 254 256 256 257 257 258 258 259 259 260 260 261 261 263 265 265 265 265 265

243

[ ix ]

Table of Contents

Chapter 15: Your Own Components, Modules, and Plug-ins
Model—View—Controller What is the Advantage with MVC? The helloworld Sample Component A Home for helloworld An Example Component The MySQL Table The Front End The com_auto Administration Test Creating an Installation Package Modules Source Code Installation View on the Website Plug-ins Summary Idea Preparations Logo and Appearance Technical Conversion Local Installation The First Few Articles Masthead Photographs Texts

267

267 268 269 270 275 276 277 281 290 290 292 292 294 294 294 297 299 300 300 302

Chapter 16: A Website with Joomla!

299

302 302 302 304 305 307 307 307 308 309 310 311 312 312

Menu Structure

Setting up the Texts and the Menu Links in the Main Menu
Contact Link Top Menu Shop The Impressions

Structure of the Main Menu Structure of the Top Menu Structure of the User Menu

306

308

The User Section

User Details

The User Menu The Download Section

311

First Results M Bertrand Learns CSS
[x]

314

314 315

Table of Contents.

Changes for Joomla! Version 1.5 Installation on the Webserver How to Do the Installation Installation of Joomla! at the Provider Importing the Data File and Directory Rights Search Engines Search Engine Friendly URLs Metatags Design Installation of the Template The Template Happy End How Does It Work in Reality? Summary FTP MySQL

Formatting Step by Step

322 323 323 324 324 326 327 327 327 327 328 328 330 330 330

318

323 324

Chapter 17: Bonus Templates

NGO Tom Bohaček The World Knowledge Template Creative Approach Structural Approach Business Establishment Andy Miller Summary

331

332 332 332 333 334 334 334 336

Appendix A: Online Resources Appendix B: Template Modules Appendix C: How Do I switch an Image (Logo) in the Template? Appendix D: Joomla! API Appendix E: Forgot the Admin Password Appendix F: Migration from Joomla! 1.0.x to Joomla! 1.5 Backing Up Your Data Backing Up the Files The Migration Script New Installation of Joomla! 1.5.0

337 339 341 343 345 347

347 350 350 350

[ xi ]

Table of Contents

Manual Method

Modifying the Joomla! 1.5 Database Scheme Importing the Tables

351

351 351

Appendix G: Security Without Global Variables Index

353 355

[ xii ]

Preface
Joomla! is life! It is an open-source project that is in constant motion. It is unpredictable, sometimes indescribable, partially controversial, now and then slightly sleepy, and provincial. Despite this, or perhaps exactly because of this, it has been extremely successful for two years now and is popular with millions of users worldwide. There is a stable, widely used, and popular version 1.0x. For the past two years, developers have hammered, tinkered, forged, modified, disagreed, deleted, expanded, and hammered again. Two incredibly exciting years have passed since the foundation of Joomla! 2005. The Joomla! team has organized and established itself in these years, it has enhanced Joomla! 1.0 up to version 1.0.13 and has now taken the biggest development step so far with version 1.5. The users of the system have been equally ambitious. Many of them have converted their websites from Mambo to Joomla! And many users have come brand new to Joomla!, and there are still some people in this world that don't know the system. Joomla! is the most widely used open-source Web Content Management System in the world. One year after the foundation of the project, in the fall of 2006, the development team reported approximately 5,000,000 Joomla! installations on public web servers that were being used more or less continuously. There were 45,000 registered developers with 1,100 projects that expanded Joomla! with additional functionalities. There were 450,000 entries from 50,000 users in the forum at joomla.org.

Preface

Here are the numbers one year later, in November 2007: • • • • More than 20,000,000 installations 28 members in the development team and 16 members in the core team Over 2,000 projects that are preparing to expand Joomla! More than 1,000,000 (one million) entries and 100,000 users in Joomla!'s forum

That is an increase of more than 100 % in one year! The scope of the websites rages from very simple homepages to complex business applications. In this book I will explain why Joomla! is so successful and how you can use it as well. The word Joomla! is derived from "Jumla" from Swahili and means "all together". Joomla! is the software result of a serious disagreement between the Mambo Foundation, which was founded in August 2005, and its development team. Joomla! is the continued development of the successful Mambo system and, like Mambo, is a piece of software that enables simple administration of websites from a web browser. Joomla!, according to its own description, is a "Cutting Edge Content Management System and one of the most powerful Open Source Content Management systems in the world. It is used world-wide for anything from simple homepages to complicated corporate websites. It is easy to install, easy to manage, and very reliable."

What This Book Covers

First of all this book, naturally, is about Joomla! and how to use Joomla!. Joomla! is a tool with a myriad of options and depending on your imagination and needs you can use them in a variety of ways. In order for you to get comfortable with this tool, I have divided the book into the following chapters. Chapter 1 covers the terms and conventions that will make it easier to work with Joomla!. Chapter 2 describes how to install Joomla! in various environments. Chapter 3 provides an overview by means of a tour of the structure of the example data that is available once Joomla! is installed. Chapter 4 covers customizing Joomla! language and templates.

[2]

Preface

Chapter 5 covers the operation of the administration area, its configuration, and administration of content. It also discusses the elements in the Menu bar, Tool bar, and the Help menu. Chapter 6 discusses how to customize the Site menu. Chapter 7 discusses how to customize the Menus menu. Chapter 8 discusses how to customize the Content menu. Chapter 9 discusses how to customize the Components menu. Chapter 10 discusses the Extensions menu. Chapter 11 talks about the Tools menu containing administrator tools: a private messaging system, a mass mailing function, and the global checking in of content elements. Chapter 12 presents examples of extension possibilities for Joomla!. Chapter 13 deals with the design of your website and how to create your own templates. Chapter 14 is written by Angie Radtke. Angie is the undisputed expert when it comes to Joomla! barrier-freedom and she is the mastermind behind the creation of the barrier-free Beez template with Robert Deutz. Chapter 15 teaches you how to write your own extensions. Chapter 16 helps create a practical application with Joomla! from concept to realization of the website. Chapter 17 introduces two templates that you can use for your own website. In the appendix you will find important details for updates, security, and other important subjects.

Conventions

In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning. There are three styles for code. Code words in text are shown as follows: "If you take a look in your database system, there are a whole bunch of components in the [PathtoJoomla]/components subdirectory and one of them is the com_contact component." [3]

Preface

A block of code will be set as follows:
main .leading h2,#main2 .leading h2 { background:#EFDEEA; border-bottom:solid 0 #333; color:#93246F; font-family:trebuchet MS, sans-serif; font-size:1.4em; font-weight:normal;

Any command-line input and output is written as follows:
/etc/init.d/mysql start

New terms and important words are introduced in a bold-type font. Words that you see on the screen, in menus or dialog boxes for example, appear in our text like this: "clicking the Next button moves you to the next screen". Important notes appear in a box like this.

Tips and tricks appear like this.

Reader Feedback

Feedback from our readers is always welcome. Let us know what you think about this book, what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of. To send us general feedback, simply drop an email to [email protected], making sure to mention the book title in the subject of your message. If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com or email [email protected] If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

[4]

Preface

Customer Support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the Example Code for the Book
The downloadable files contain instructions on how to use them.

Visit http://www.packtpub.com/files/code/5302_Code.zip, to directly downlad the example code.

Errata

Although we have taken every care to ensure the accuracy of our contents, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in text or code—we would be grateful if you would report this to us. By doing this you can save other readers from frustration, and help to improve subsequent versions of this book. If you find any errata, report them by visiting http://www.packtpub. com/support, selecting your book, clicking on the Submit Errata link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata added to the list of existing errata. The existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Questions

You can contact us at [email protected] if you are having a problem with some aspect of the book, and we will do our best to address it.

[5]

Terms, Concepts, and Deliberations
Before we dive into Joomla!, allow me to explain a few terms and concepts, and bring you up to date on some background material.

Content Management System (CMS)

Content Management System (CMS) contains the terms content and management, which imprecisely refer only to a system that manages content. Such a system could be a board and a piece of chalk (menu or school chalkboard), or some free online encyclopedia such as Wikipedia or an online auction house such as eBay. In all these examples contents are administered, in the last instance by numerous participants. These participants play a major role in content management systems, on one hand as administrators and on the other as users and editors. Apart from CMSs, there are terms such as Enterprise Resource Planning Systems (ERP systems—administration of corporate data), Customer Relationship Management Systems (CRM systems—maintenance of customer contacts), Document Management Systems (DMS systems—administration of documents), Human Resource Management Systems (HRM systems—administration of personnel), and many others. It is difficult to define the term CMS because of its encompassing nature and variety of functions. Wikepedia's definition is my favorite: A content management system, or CMS, is a computer software system used to enable and organize the joint process of creating and editing text and multimedia documents (content). The abbreviation ECMS has established itself as the term for Enterprise Content Management Systems. The other abbreviations listed above are subsets of ECMS.

Terms, Concepts, and Deliberations

Joomla! belongs to the category of Web Content Management Systems (WCMS), since its functionality is administered from a browser on the Web. In general, the term content management is used in connection with web pages that can be maintained by a browser. This doesn't necessarily make the definition any easier.

A Quick Glance into History

While Sun Microsystems maintained in the nineties that "the network is the computer", Microsoft was not going to rest until a Windows computer sat on every desk. This prediction became a reality. Microsoft was able to rest and is actually looking for new markets and new products. The computer that Microsoft was concerned with was a mixture of data files and binary executable files. Files with executable binary contents are called programs, and were bought and installed by customers to manipulate data. Microsoft Office was the winner in most of the offices around the world. The computer that Sun was working with was a cheap, dumb terminal with a screen, a keyboard, a mouse, and access to the Internet. The programs and data were not stored on this computer, but somewhere on the net. The mine philosophy governed Microsoft's practices whereas the our philosophy was adopted by Sun. The motivation for these philosophies in both the companies was commercial interest. Microsoft primarily sold software for PCs to the consumer market; Sun, on the other hand, sold server hardware and programs to the enterprise market. The Internet, invented in the sixties, underwent an explosive growth in the midnineties. Among other things, Hyper Text Markup Language (HTML), the language used to write web pages, and the development of web servers and web clients (browsers) helped its expansion. The Internet itself is merely a set of rules that various devices could understand and with which they could communicate with each other in such a clever way that it covered the entire planet in almost no time. An individual without an email address could no longer be reached and a company without a website was not only old-fashioned, but didn't exist in the eyes of many customers. The whole world swarmed to the Internet within a short time to become a part of it. Movies like The Matrix became a huge hit and 1984, a book by George Orwell, was successfully superseded. [8]

Chapter 1

Those who were used to buying programs bought HTML editors and created Internet pages with them. The others preferred to write their own HTML code with whatever text editor they had on hand. And the web agency, where one could order a web page, was born. Both groups faced the problem that HTML pages were static. To change the content of the page, it had to be modified on a local PC and then copied to the server. This was not only awkward and expensive, but also made web presences like eBay or Amazon impossible. Both the groups came up with fixes to more or less solve this problem. The mine faction developed fast binary programs, with which one could produce HTML pages and load them via automated procedures onto the server. Interactive elements, such as visitor counters, among others, were built into such pages. The our faction discovered Java applets and with them the capability of writing a program that resided centrally on a server and could be maintained from a browser. Entire business ideas, like online booking and flight reservation concepts, were based on this solution. Both the groups tried to increase their market share in different ways. The result was quite a stable market for both, in which passionate battles over the correct operating system (Windows, Linux, or Mac OS X) constantly drove the version numbers higher and higher. Customers got used to the fact that nothing was easy. There is always a third option in these situations. In our case, it was, among other things, the emergence of open-source scripting languages like PHP (http://www. php.net). Rasmus Lerdorf wanted to offer interactive elements on his homepage and with that a new programming language was born. From the outset, PHP was optimized in perfect cooperation with the MySQL database, which was also under the GNU/GPL license. Fortunately, there was the Linux operating system and the Apache web server that offered the necessary infrastructure on the server. The display medium at the client side was the browser. LAMP (Linux, Apache, MySQL, and PHP) soon became synonymous with database-supported, interactive presence on the Internet. The most diverse systems like forums, communities, online shops, voting pages, and similar things that made it possible to organize contents with the help of a browser were developed in an enthusiastic creative rush. Soon after the 'difficult' things such as Linux and Apache had been created, the 'soft' products were developed.

[9]

Terms, Concepts, and Deliberations

The nineties were nearing their end; the Internet share bubble burst and all of a sudden the trend was to build unmitigated classical business models with unmitigated classical methods. Whenever the economy isn't doing well, costs are scrutinized and the options for lowering costs are contemplated. There are now, as there were earlier, numerous options! PHP applications had distribution in the millions. We only need to look at the phpBB (http://www.phpbb.com/) and phpMyAdmin (http://www.phpmyadmin.net/) projects as examples. One developed to become the quasi-standard for forum software and the other, the standard for manipulating MySQL databases via web interfaces. The source code of the PHP language and the applications became better and better quickly due to the enormous number of users and developers. The more open a project was, the more successful it became. Individual gurus were able to save enterprises immense amounts of money in next to no time. Static HTML pages were considered old and expensive, and were overhauled. They had to be dynamic! Developers have been working in this environment for a decade now. Linux, Apache, MySQL, and PHP were readily accepted in the industry. The search for professionally usable PHP applications had begun. With this search one looks for: • • • • • • • • • • A simple installation process Easy serviceability of the source code Security of the source code User-friendliness Easy expandability Simple development Simple job training for new developers Standardized interfaces to other programs Low costs Independence from the supplier

The special advantage of PHP applications is the independence from hardware and operating system. LAMP also exists as WAMP (Windows, Apache, MySQL, and PHP) for Windows, MAMP (Mac, Apache, MySQL, and PHP) for Apple, and for numerous other platforms. And now Joomla! finally enters the picture.

[ 10 ]

Chapter 1

Joomla!—How was it Developed?

An Australian company, Miro (http://www.miro.com.au), developed a CMS called Mambo in the year 2001. It made this system available as open-source software to test it and to ensure wider distribution. In the year 2002, the company split its Mambo product into a commercial and an open-source version. The commercial variant was called Mambo CMS, the open-source version Mambo Open Source or MOS for short. By the end of 2004 all parties involved had agreed that MOS could officially be called Mambo and that a successful future for the fastest developing CMS of its time would be jointly secured. The advantages of the commercial version were primarily the increased security for companies and the fact that they had Miro, which also supported further development, as guidance. The open-source version offered the advantage that it was free and that an enormous community of users and developers alike provided continuous enhancements. In addition, it was possible for enterprises to take Mambo as a base and to build their own solutions on top of it. In order to secure the existence and the continued development of Mambo, there were deliberations on all sides in the course of the year 2005 to establish a foundation for the open-source version of Mambo. In the fall of 2005 the establishment of the Mambo Foundation was announced on the Mambo project page. After positive reactions during the first few hours it quickly became obvious that Miro in Australia had established the foundation and that the developer team had not been included into the plans for the incorporation. Heated discussions erupted in the forums of the community and the developer team wrapped itself in silence for a few days. A short time thereafter a position was finally taken by the developing team and published on opensourcematters.org, announcing that it would be advised by the neutral Software Freedom Law Center (http://softwarefreedom.org/) and that it was planning the continued development of Mambo under its own responsibility. The prospect of an improved Mambo based on new source code immediately made its way into the forums. Quickly, a war of the roses developed between the Miro-dominated Mambo Foundation that was all of a sudden without a development team, and the development team itself, which, of course, needed a new name for the split entity, and an inflamed international community of hundreds of thousands of users. The parties sometimes called each other names in blogs, forums, and the respective project pages. Meanwhile, development of both projects continued. The fork was called Joomla! [ 11 ]

Terms, Concepts, and Deliberations

The development team put great value on democratic rules. The new project needed a logo and therefore a contest was announced to the 'new' community. By that time, about 8,000 users had registered with the new forum. The Mambo Foundation soon thereafter introduced its new development team. Version 1.0 of Joomla! was published on the 17th of September 2005. Quickly many of the third-party developers, groups that had been developing Mambo components, switched the projects Simpleboard (today FireBoard), DOCman, and many others to Joomla! and therewith endorsed the trust in the new project. The prefix mos that had been used in so many variables and terms was quickly transformed to jos. A detailed summary of these events can be accessed on the Internet at: http://www.devshed.com/c/a/BrainDump/Joomla-is-theNew-Mambo/

Two years after its foundation, Joomla! was one of the most popular open-source projects in the world. However, a lot of time was wasted in those two years on organizational trench warfare and intercultural misunderstandings due to the restructuring. The Web 2.0 celebrated its victories. User-created content became more and more important. Second life and its virtual reality became world famous. The programming language Ruby and in particular Ruby on Rails was being used more and more to develop websites. Programming interfaces played an ever larger role. Joomla 1.0x looked and looks a little old and gray in this company. It had not exhausted its developmental options, but users looked longingly at systems like Plone, Typo3, Drupal, and lot of others that did not have the problems that come with sheer size and reorganization and that were able to constantly incorporate new technologies into their projects. For the past two years Joomla! version 1.0x has not really been expanded any further, but security updates with minor code changes have been released. A two-year waiting time for a new version is not good advertising for the project. Joomla! has often been declared dead and was frequently ridiculed during this time and derisive articles on the lines of How to ruin an amazing software project! appeared in the trade. However, the project team has come through with Joomla! version 1.5. Now that everything has been discussed fully in forums, mailing lists, emails, and personal meetings, Joomla!'s future is now rosier than ever in my eyes.

[ 12 ]

Chapter 1

On one hand, upgrading from version 1.0x to1.5x is going to take some effort, since there is no full downward compatibility due to the changed source code. However, on the other hand, this definitely launches Joomla! into the league of business-capable content management systems. The clever strategy of creating building blocks with Joomla! (Joomla! framework), with which developers can be part of the new developments, is going to pay dividends. It is finally possible to choose various methods of authentication to create barrier-free websites in various languages, and to take part in the Web 2.0 mashups wave that is clearly spilling into enterprises. The road to developing components in environments such as Eclipse is now open. With its existing community, developer, and installation density, Joomla! will simply blanket many sectors of this market. Many hosting providers are already offering Joomla! pre-installed to their clients so that there will be no serious problems when upgrading from simpler websites.

Structure of a Web Content Management System (WCMS)
Using Joomla! as an example, I will briefly explain the structure of a WCMS.

Front End and Back End

A WCMS consists of a front end and a back end. The front end is the website that the visitors and the logged-on users see. The back end, on the other hand, contains the administration layer of the website for the administrators. Configuration, maintenance, cleaning, the generation of statistics, and new content creation are all done in the back end by authorized people. The back end is at a different URL than the website.

Access Rights

Whenever we talk of management, we talk of the clever administration of existing resources. In a WCMS, user names and group names are assigned to the people involved and each one of them is assigned different access rights. This ranges from a simple registered user through an 'author' and 'editor' up to the 'super-administrator', who has full control over the domain. Based on the rights, the website then displays different content; an option is available to edit content directly in the front end, or the user is given the right to work in the back end. [ 13 ]

Terms, Concepts, and Deliberations

Content

Content can come in all kinds of forms; in the simplest case, it is text. However, content can also be a picture, a link, a piece of music, a snippet from an application like Google Maps or a combination of all of these. To keep an overview of the content, one embeds it in structures, for example, texts of different categories. The categories, of course, are also content that needs to be administered. Newsfeeds have become very popular, since Internet Explorer 7 now has the capability to read RSS feeds and more than 80% of computer users still use this browser. Newsfeeds give you the option of integrating information from other sources. Integration, categorization, rating, mashing, and updating of newsfeed content is becoming more and more important.

Extensions

Components, modules, templates, and plug-ins are all referred to as Extensions. They offer additional functions that are not contained in Joomla!'s core.

Components

Joomla! has to be expandable and should be able to grow with the requirements. Extensions that offer additional functionalities and that usually have their own area in Joomla!'s administration are called components. For example, typical components of recent years are an online shop, a picture gallery, and a newsletter or forum system. Today things like search engine optimization, user rights, multi-page forms, and variable content structures are becoming more and more important. Components contain the business logic of their site and display content in the 'main body' of the website.

Templates

A template is a kind of visual editing pattern that is placed on the top of content. A template defines the colors, character fonts, font sizes, background images, spacing, and partitioning of the page, in other words, everything that has to do with the appearance of a page. A template is made up of at least one HTML file for the structure of the page and one CSS file for the design. It can also have a far more extensive structure in order to prepare Joomla! content for barrier freedom or for a completely different purpose.

[ 14 ]

Chapter 1

Plug-Ins

A plug-in is a piece of programming code that is appended at certain places in the Joomla! framework to change its functionality. Such a plug-in can, for instance, be used inside content text to load the content of a module into the text. Plug-ins are also used in a comprehensive website search in order to integrate additional components. Sometimes plug-ins are used like a macro language in Joomla! Special modules pertaining to components are used to integrate content in the desired form into templates. The Recent News module, for example, delivers the headlines of the last five articles that were placed by the Content component to the template. Another module, for example, determines the number of users that are on-line at the moment and displays the result.

Workflow

By workflow one understands a sequence of operations. The bureaucratic set of three (mark, punch, and file) is an example of a workflow. A recipe for baking a cake is also a workflow. Since several people usually work with CMS content, well-organized workflows are a tremendous help. In the past, one also referred to work inventories that a certain user has. For example, the editor sees a list of non-published pieces of news, which he or she has to examine for correctness. After examining them, the editor marks the pieces of news as correct and they appear in the work inventory of the publisher. The publisher then decides whether to publish each piece on the front page.

Configuration Settings

Settings that apply to the entire website are specified using the configuration settings. This includes the title text in the browser window, keywords for search engines, switches that permit or forbid logging on to the site or that switch the entire page offline or online, and many other functions.

API

Today an Application Programming Interface (API) has to be provided to be with the times. It has to be possible (and it is) to access Joomla! from other programs and to invoke it remotely to some extent. This opens up entirely new applications that were previously not feasible with Joomla! An API is the most important link between third-party extension developers and the Joomla! core.

[ 15 ]

Terms, Concepts, and Deliberations

Is Joomla! a Piece of Real Estate?

Joomla! is a kind of construction kit that, once installed on the server, enables you to create and maintain your website. Joomla! is like a house that you build on a property of your choice and that you can furnish gradually. Thus, to a certain extent, it is real estate. Stop! I was talking about mobility all the time and now I'm asking you to build real estate? Have no fear, the real estate you build is physically at one place (your server), but is accessible from everywhere. To make a piece of real estate habitable, you need necessary services such as heating, electricity, and water supply. That is the reason your Joomla! is deposited at a server as as safe as possible, where hopefully, the electricity will never be cut. We are talking 24/7. Just like with your house, you also have a certain room layout in Joomla!. You have a room to show off (content), for cooking and conversing (forum), for working (administration area), and a completely private one, one that you show only to good friends (member area). Perhaps you also have a large room that integrates all these areas. It doesn't matter which room layout you decide on, you have to furnish your house, lay a beautiful floor, paper the walls, hang a few pictures on the walls (template), and of course, clean it regularly. This is because the numerous guests leave traces that are not always desirable. A visitor needs an address (domain) to find your house. As many people as possible should be aware of this address. Since there is no residents' registration office on the Internet, you have to be the one that takes care of the topic, "How can I be found?" Perhaps you also have a garden that surrounds your house and that has different entry gates. There is an official entrance portal, a back door, and perhaps another small, weathered garden gate for good friends. And perhaps you don't like such types of houses and would rather use trailers, tents, mobile homes, hotels, or maybe you prefer community living and are glad to pay rent and don't want to think about all the details. If you apply the last few sentences to your website, then you already see how important it is to know what you want, who you are, and how you want to look to your community. One cannot not communicate! One can, however, be quickly misunderstood. So plan your virtual house on the Internet properly. Put thought into the texts, into possible interactive elements like a calendar or a forum, and of course, an area that only registered users are allowed to see. Think about prompts that guide and don't patronize users and take a look at how others do it. [ 16 ]

Chapter 1

Talk with the people you want to address through your website. They will be honored to have been asked 'beforehand' and they will perhaps give you tips that were not obvious from your point of view. This is an economical and very effective option to gather ideas and to avoid the worst of mistakes. Invest your heart and soul into things that are absolutely crucial for the success of your website.

Joomla! Versions

As with all software, there are different development steps with Joomla!. The Joomla! team published a roadmap on the 1st of September 2005 that started with Joomla! version 1.0. The first Joomla! version consequently received the number 1.0, so that there was no confusion with the existing Mambo versions. Version 1.0 is a revised version of the last Mambo version 4.5.2.3. The revisions relate to the new name, known errors, and security patches. Mambo, in the meantime, has released version 4.6.2 In the last two years, thirteen Joomla! 1.0.x versions, which have improved and corrected a lot of small details in the code, have been released. If you have followed the development, you have probably noticed that Joomla! has become more and more reliable from version to version.

Numbering System of Joomla! Versions
Joomla! versions abide by the three-step system. • Step 1 = major release number: This is incremented whenever profound changes are made at the source-code level. The version with the higher number sometimes is not compatible with earlier versions. Step 2 = minor release number: This is incremented whenever significant changes to functionality are made. The higher version number is usually compatible (with minor customizing) with earlier versions. Step 3 = maintenance release number: This is incremented whenever errors are repaired and safety gaps are plugged. An increase of this number indicates only minor changes and very minor new features. These versions are fully compatibly with the versions of the same step 1 and 2 number. Full release: This is a change in the step 1 and 2 system. With these, alpha and beta test periods are given. The length of the test periods is not fixed and is at the discretion of the development team. Beta versions should be available for testing for at least three weeks in order to give component developers the time to customize their components. Maintenance release: This release can be used immediately. [ 17 ]

Terms, Concepts, and Deliberations

Version 1.5.0 represents the first full release after two years. There were alpha and beta versions and release candidates. Third-party developers are customizing their components for the new version. The community tests the software for any incompatibilities with the prior version. You can follow the reporting and fixing of bugs on Joomla!'s website and if you find a bug, you can report it there. You will also find the list of requested improvements (http://joomlacode.org/gf/project/joomla/tracker/) there. The development process for Joomla! 1.5 has largely been unnoticed since the fall of 2005. The concepts for version 1.5 were already quite concrete at that time and in February 2006 the first alpha-version was released.

Road Map

This road map can, of course, change at any time, it does, however, represent a good framework for orientation. The following table shows the Joomla! roadmap (status as of November 2007). Version Mambo 4.5.2 Joomla 1.0.x Date of Release 17. Feb. 2005 From Sep. 2005 Oct 2006 Comments Last stable version of Mambo Transfer of Mambo version 4.5.2.3 Corrections of bugs and security patches Last stable version of Joomla! 1.0.13 Joomla 1.5 Beta 1 Internationalization (total support for UTF-8) Administration interface capability for every language User plug-ins Database: Support for MySQL- and MySQLi-database servers FTP system, to sidestep the PHP safe mode with providers Fundamental changes and overhaul of the structure, the framework, of Joomla! itself and with it preparation for the possibility to create barrier-free websites with Joomla! Separation of programming logic and layout Improvement to search engine friendliness (SEF) Reworked caching mechanism

[ 18 ]

Chapter 1

Version Joomla 1.5 Beta 2

Date of Release May 2007

Comments Developer documentation (API, How-to's) API tuning Redeveloped caching Redeveloped support for search-engine friendly URLs Introduction of the MooTool Javascript Framework Barrier-free Beez template in the core

Joomla 1.5 RC1-4

July 2007 December 2007

User documnetation Corrections Security and performance improvements Testing on various platforms and in various browsers

Joomla 1.5 stable Future verions of Joomla

January 2008 No dates given

The stable version New user access control system Version control for content Multi-site installations (many Joomla sites in one Joomla installation) Update mechanism Virtual file system Support for more databases

Changes In Detail

As can be seen from the table, the 1.5 version is the first true Joomla!. The Joomla! team spent the first year stabilizing the inheritance from Mambo under the Joomla! name and charting their own direction. The changes in Joomla! 1.5 clearly reveal future developments.

Internationalization
• • •

Every piece of static text can now be translated into language files. This is in particular relevant for the administration area, which up to now was only available in English. Support of scripts that are written from right to left (i.e. RTL, Arabic, Hebrew, Farsi, and Urdu). Complete changeover to the UTF-8 character set for coding and displaying all characters in Unicode. [ 19 ]

Terms, Concepts, and Deliberations

User Plug-Ins

Mambots are now called plug-ins and user plug-ins, authentification plug-ins, xmlrpc plug-ins, and system plug-ins now join content, editor, and search plug-ins. Alternative login mechanisms from external programs, among others, can be used with the aid of these plug-ins.

XML Remote Procedure Call Support

XML Remote Procedure Call (XML-RPC) is a specification that allows software on different systems and in different environments to communicate. All the important programming languages are supported and there are libraries that change the code into XML-RPC (http://en.wikipedia.org/wiki/XML-RPC). Joomla! also offers such an interface. With it, for instance, it is possible to post an image from Flickr or write an article with OpenOffice and to subsequently publish it in Joomla! This opens up fascinating options for developers; for example they can now access Joomla! from a Java program.

Support of Several Databases

Joomla! 1.5 contains an abstraction layer that makes it possible to run Joomla! with various database versions. However, only one of these databases can be used for each particular Joomla! installation. At the moment MySQL 4.x, 5.x are supported. Additional databases will be supported in the future.

FTP System

An FTP layer has been added to avoid problems with file access rights. Therefore, installation of new components and other uploads can be handled via PHP upload and via FTP. The service providers' restrictive (but reasonable) approach in terms of the PHP language had made the installation of extensions and the downloading of files in general, more difficult.

Overhaul of the Joomla! Framework

There has been no such thing as a framework in terms of a packaged kit for Joomla! functionality so far. It did, however, become crystal clear after the fork that the old Mambo source code had to be improved just about everywhere. It became necessary to rewrite and code Joomla!'s functionality cleanly. A framework has to be flexible, scalable, separated from the output, and above all be comprehensible so that a third-party developer can write good components in a reasonable amount of time. A proprietary API (Application Programming Interface) is essential for that. [ 20 ]

Chapter 1

Barrier Freedom

Barrier freedom is an important topic and it has been a legal obligation in Germany for government websites to be barrier free since the first of January 2006. W3C has written standards for it. Joomla! 1.5 already has a complete barrier free template (Beez) and with it the option to comply with these standards. Barrier freedom is achieved by compliance with these standards (valid HTML/ XHTML) and by the complete separation of content (text, images, etc.) from layout by the use of cascading style sheets (CSS). This statement applies 100% to the front end at the moment. The administration area is also scheduled to become completely barrier free in later versions. Currently it can be used by at least a person without vision.

Search Engine Friendliness

Support for search-engine friendly URLs has been removed from the Joomla! core and swapped into a plug-in. This makes it possible to add functionality with third-party components, which was very difficult before.

Google Summer of Code Projects

Since 2005 Google has been supporting talented students and their ideas in its Summer of Code Project (http://code.google.com/soc/2007/) with certain open-source projects to the tune of $ 4,500 each. Instead of taking whatever summer job is available to earn money, they can work on their hobby for the collective good and of course also to the benefit of Google. Every year the Summer of Code brings stunning amounts of PR, good ideas, and good programmers to Google. The open-source projects also benefit from the strategy of attracting new talent and of course from the results of the projects. In each case one member of the respective project community becomes mentor to one student. The results of these projects will be and have been gradually integrated into Joomla!. Last year as well (2007), there were students programming for Joomla! and being paid by Google. These projects included the following: • Extending the Nested Sets Model with 'Hardlinked Nested Sets'—Enno Klasing, mentor Louis Benton Landry. (This has to do with the popular deep nesting of categories.) Email interface for Publishing—Nur Aini Rakhmawati, mentor Mateusz Krzeszowiec. (This has to do with the creation of Joomla! content by means of sending an email.) [ 21 ]

Terms, Concepts, and Deliberations

Semantic Web Integration—Mickael Maison, mentor Andrew Eddie. (This has to do with the integration of geographic standards such as KML and GeoRSS, in order to be able to manipulate these data in Joomla!, for example the home town of the user as a map-image.) Eclipse Plugin for developing Joomla's Component/Module—Muhammad Fuad Dwi Rizki, mentor Laurens Vandeput. (This has to do with the creation of a Joomla! plug-in for the popular developer environment Eclipse, in order to easily create Joomla! components.) General content recommendation component for Joomla—Faolan CheslackPostava, mentor Samuel Alexander Moffatt. (This has to do with automatic recommendation of content in a particular context at a particular time.)

Joomla! Features
• • • • • • • • • • • • • • • • • • • • Free source code

The following is a listing of Joomla! features in point form: A large and eager community of users and developers Simple workflow system Publishing system for contents File manager for uploading and administering files Content summaries in RSS format Trash can for deleted content Search-engine-friendly URLs Banner management Multilingualism for website and administration interface Administration interface that is separated from the website Macro language for content (plug-ins) Caching mechanism to secure fast page creation with popular sites Simple installation of additional extensions Powerful template system (HTML, CSS, PHP) Hierarchical user groups Simple visitor statistics WYSIWYG editor for content Simple polling Rating system for content [ 22 ]

Chapter 1

There are numerous free and commercial extensions at http://extensions. joomla.org/, for instance: • • • • • Forums Image galleries Document management systems Calendars And about 2000 more

Examples of Joomla! Pages
Joomla.org

In order to get a feeling for what Joomla! pages look like and whether "the" Joomla! page even exists, have a look at a few:

This is of course one of the largest Joomla! websites.

[ 23 ]

Terms, Concepts, and Deliberations

Travel Shop, Ireland

A tourist industry website with an interesting menu system from joomlart.com

Frank Lüdtke, Germany

A successful combination of Joomla! and Coppermine photo-gallery.

[ 24 ]

Chapter 1

Hotel Schönruh, Austria

A simple website of a hotel in the Ziller valley.

Urth.tv, USA

A social platform for citizens of the world!

[ 25 ]

Terms, Concepts, and Deliberations

unric.org, Europe

The United Nations is also working with Joomla!. In this case thirteen languages have to be displayed on the website.

[ 26 ]

Chapter 1

porsche.com.br, Brazil

Last but not least the Stuttgart SP Veículos Ltd from São Paulo. This company has taken part in the entire history of development from Mambo to Joomla! and has now upgraded to Joomla! 1.5.

You can find a listing of Joomla! websites in the Site Showcase of the forum at: http://forum.joomla.org/index.php/board,58.0.html

Summary

In this chapter we took a quick glance at the history of Joomla! and discussed the structure of WC...

Read more

Keywords

-1 -10 -113 -116 -123 -15 -2 -2007 -232 -235 -239 -29 -296 -30 -31 -314 -317 -4 -6 -8 -847195 -85 /) /), /). /, /. /administrator /administrator/com_auto/install.sql /administrator/com_expose /administrator/components/com_expose/config /administrator/components/com_expose/manage.png /authors. /blog/7/feed /c/a/braindump/joomla-is-thenew-mambo/ /com_hello/administrator /component/com_hello /component/com_hello/controller.php /component/com_hello/views/hello/tmpl/default.php /component/com_hello/views/hello/views.html.php /components /components/com_auto/auto.php /components/com_auto/controller.php /components/com_auto/models/auto.php /components/com_auto/views/auto/tmpl/default.php /components/com_auto/views/auto/view.html.php /components/com_expose /css /css/template.css /downloads/mysql/5.0.html). /en/products/plesk/), /en/products/sitebuilder/) /en/xampp.html. /etc/init.d/apache2 /etc/init.d/mysql /etc/mysql/my.cnf /files/code/5302_code.zip, /footer /forum/index. /gf/project/expose/frs/ /gf/project/joomla/tracker/) /height /htdocs /htdocs/joomla150 /images /images/banner /images/stories /index.html). /index.php /index.php/board,58.0.html /joomla150/index.php?option=com_contact&itemid=3 /products/dreamweaver), /soc/2007/) /software/macosx/php/). /support. /templates /templates/joomla150_book /templates/joomla150_book/css /templates/joomla150_book/images /templates/joomla150book/css /templates/joomla150book/directory /templates/joomla150book/template_thumbnail /templates/system /templates/system/css/system.css /webmaster/htmleditors.shtml). /wiki/coordinated_universal_time). /wiki/xml-rpc). 0 0.1 00 000 1 1.0 1.0.13 1.0.3 1.1 1.13.19 1.2 1.4 1.4.0rc1.zip 1.5 1.5.0 1.5.zip 1.9 10 100 101 102 103 105 1050 106 107 108 109 11 11.11.2007 110 111 112 113 114 115 116 117 118 119 12 120 121 122 123 1240308 125 126 127 127.0.0.1 128 129 12em 12px 13 130 131 132 133 134 1345.0 135 136 137 138 139 14 140 1400 141 142 143 144 145 146 147 149 15 150 151 152 153 154 155 156 157 158 159 15em 16 160 161 162 163 164 165 166 167 168 169 16em 17 170 171 172 173 174 175 176 177 1776/itemid 178 179 17th 18 180 181 182 183 184 185 186 187 188 189 18em 19 190 191 192 193 194 195 196 1964 197 198 1984 199 1em 1px 1st 2 2.0 2.2.6 20 200 2000 2001 2002 2004 2005 2006 2007 2008 201 202 203 204 2048 205 206 207 208 209 21 210 211 212 213 214 215 216 217 218 219 22 220 221 223 224 225 226 227 228 229 23 230 231 232 233 234 235 236 237 239 24 24/7 240 241 243 244 245 246 247 248 249 25 251 253 254 256 257 258 259 26 260 261 263 265 267 268 269 27 270 271 272 273 274 275 276 277 278 28 281 29 290 292 293 294 297 2985 299 2px 3 3.23 30 300 301 302 304 305 306 307 308 309 31 310 311 312 314 315 318 32 322 323 324 326 327 328 33 330 331 332 333 334 336 337 339 34 341 343 345 347 35 350 351 353 355 359 36 360 361 362 363 37 38 39 4 4.1 4.3 4.5.2 4.5.2.3 4.6.2 40 400 41 42 43 44 45 450 46 468 47 48 49 5 5.2.6 50 500 51 52 53 54 55 56 57 58 59 6 60 600 61 62 63 65 66 67 68 69 6pa 7 70 71 72 73 74 75 76 77 78 780 79 8 80 800 81 82 83 84 85 86 87 88 89 9 90 91 92 93 93246f 94 95 96 97 978 98 99 abbrevi abhijeet abid abil abl absolut abstain abstract absurd abund accept access accomplish accord account accuraci achiev achim acquisit acronym across act action activ actual ad adapt add addit address adjust admin admin.hello.php administ administr administrator/componenets/com_epose/expose_icon.png administrator/components/com_expose/docs.png admir adob adopt adress advanc advantag advertis advis affect affili affiliate-partn aforement afraid age agenc agent ago agre agreement aid aini ajax ajmera akshara album albummanager-2.7setup.msi alex alexand alia align alik alleg alloc allow almost alon alpha alpha-vers alreadi also alt altern although alway amaz amazon ambiti among amount analyt and/or andi andrew angi announc anoth answer antonio anymor anyon anyth anyway apach apache-common apache2 apache2-devel apache2-mod aparna apart api appeal appear append appendix appi appl applet appli applic approach appropri approv approxim apt apt-get aqua arab archiv area aren argu argument arial aris around arrang array arrow art articl articles.jpg asign ask aspect assembl assign assignref assist associ assum assur attack attempt attent attitud attract attribut auction audienc audio august australia australian austria authent authentif author auto autom automat automobil avail avatar averag avoid awar away awkward b b27 back back-end background background-color backlink backround backup backward bak bake balloon band bandwidth banner bar barrier barrier-fre barrier-freedom base basi basic basket battl beach beauti becam becom beer beetl beez beez-templ beezdivis beforehand begin beginn begun behavior behind belong benefit benton bertrand besid best best-sel beta better bhagat big biggest binari birmingham bit black blank blanket block blog blogger blue bmp board bodi bohaček bold bold-typ bonus book border border-bottom born bot bottom bought box brake branch brand brazil breadcrumb break breathtak brief briefli brinel bring broad broad-band broadband broken brows browser browser-bas bubbl bucket budget bug build builder built built-in bunch bundl bureaucrat burst busi business-cap button button-imag buy c c-ip cabl cach cake calcul calendar call cambul came camera cancel candid cannot capabl capit captur car care carri cart cascad case categor categori category1 category2 caus celebr cell center central certain chalk chalkboard chang changeabl changelog changeov chapter charact characterist chart cheap check check-in checkbox checkertool checking-in checkmark cheslackpostava child chittar chmod choic choos chose chosen chris ci circl circumst circumv citizen claim class classic classifi classnam clean clear clever click clickabl client client-serv cloak clock close closer cm cms cmss co co-work code code-plugin code.google.com code.google.com/soc/2007/) coffe cohes collaps collect color column com com/support com_auto.zip com_expose_4.6.2.zip combin come comfort comma command command-lin commensur comment commentari commerci common communic communiti compact compani compar compat competit compil complac complet complex compli complianc compliant complic compon component-specif component/module component_fireboard_forum_1.0.3.zip components/com_expose/expose/manager/bucket components/com_hello comprehens compress compromis comput con concentr concept concern concert conclus concret condit conf confi config configur configuration.php confirm confus congratul conjunct connect consequ consid consider consist consortium constant construct consult consum contact contain contempl content content-wis content1 content2 content3 contest context continu contradictori contrari contrast contribut control controller.php controversi conveni convent convers convert cook cooki cool cooper coordin copi coppermin copyright core corner corpor correct correspond corrupt cost could count counter coupl cours cover cowork cpanel crack crayon creat creation creativ creator credibl credit criteria critic crm cross crucial crystal cs3 css css/general.css css/template.css csv ctrl cumbersom curious current cursor cursori curtain custom cut cynic d daili damag darken dash data databas database-bas database-support dataset date david day de de-d de-de.site.joomla15rc3.zip deactiv dead deal dealer debat debian debian/ubuntu debug decad decemb decid decis declar decor dedic deep deeper default default.php defeat defin definit deleg delet deliber delight deliv deliveri dell.com dell.com/), demand democrat demonstr densiti deobhakta depart depend deposit deris deriv describ descript description/notes deserv design desir desk despit detail detect determin deutz dev.mysql.com dev.mysql.com/downloads/mysql/5.0.html). devel develop development devic diagram dialog dialogu didn die differ differenti difficult digit dimens direct directori disabl disadvantag disagr disagre disappear disc discontinu discov discrep discret discuss disk dislik dispatch display dispos distanc distinct distinguish distribut distributor div dive divers divid dividend divis dms doc docbook docman document documnet doesn dollar domain domin domxml done door dot doubl double-click downlad download downward dozen drastic draw dream dreamweav drive drop drove drupal ds dsl due dumb dump duplic durat dwi dynam e e-learn e-mail e.v eager earli earlier earmark earn easi easier easili easy-to-understand easy-to-us ebay echo eclips ecm econom economi eddi edg edit editor editori editors-xtd eee efdeea effect effort eichens either eject elaps electr eleg element elimin els em email emb embed emerg emphas employ employe empti en.wikipedia en.wikipedia.org en.wikipedia.org/wiki/coordinated_universal_time). en.wikipedia.org/wiki/xml-rpc). enabl enclos encod encompass encrypt encumbr encyclopedia end endeavor endors engag engin engine-friend english enhanc enno enorm enough ensur entail enter enterpris enthusiast entir entiti entranc entri envi environ envis epg equal equip equival erp errata error error-fre erupt especi essenti establish estat etc europ evalu even event ever ever-grow everi everybodi everyon everyth everywher evok evolv exact examin exampl exceed except exchang excit exclud exclus execut exhaust exist exit exot expand expans expect expens experi expert expertis expir expiri explain explan explanatori explicit explor explos export expos expose.xml expose/expose exposé express extend extens extensions.joomla extensions.joomla.org extensions.joomla.org/. extent extern extract extrem eye f face facil fact faction fail failur fairi fall falsif famili familiar famous faolan far farsi fascin fashion fast fast-access faster fastest fatoohi favorit fax fckeditor fckeditor.net fckeditor.net/) fear feasibl featur feb februari fee feed feedback [email protected] feel fewer field fifti figur file file-bas filenam filename-contain fill film filter final find finish fireboard fireboard_forum_1.0.3.zip firefox firewal first first-level fit five fix flash flash-format-bas flat flea flexibl flickr flight float floor fluid flv flyer folder follow font font-famili font-siz font-weight footer forbid forc forg forget forgot forgotten/lost fork form formal format fortun forum forum.joomla.org forum.joomla.org/index.php/board,58.0.html forward found foundat four fourth fragment frame framework franc frank free freedom freewar frequenc frequent fresh friend friendli front front-end frontpag frozen frs frsreleasebrows frustrat ftp fuad full fulli function fundament furnish furthermor futur g galleri game gap garbag garden gate gather gave gd general generat generic generous geograph georg georss gerken german germani geshi get getautolist getmodel getvar gif gimp give given glad glanc global global-check gmail gmt gmx gnome gnu/gpl gnu/public go goe gone good googl got govern government grab gradual graf graphic grate gray great greater green greet gretel ground group grow growth guarante guest guid guidanc guidelin gurat gurus gzip h2 habit hacker hagen [email protected] hammer hand handi handl handler hang hansel happen happi har hard hardlink hardwar hauptmenü haven head header headlin heart heat heavi hebrew heed height held hello hello.php hello.xml hellocontrol helloworld help help.joomla.org helper.php helvetica henc hgraf hi hidden hide hierarch hierarchi high high-spe high-traff higher highlight histori hit hobbi hold home home/front homepag hone honest honor hook hope hopeless horizont horz host hotel hour hous how-to howev hr hrm htaccess htaccess.txt htdoc html html-embed html/xhtml httpd.conf https huge human hundr hurdl hurt hyper i.e ico icon iconv id idea ident identif identifi ifram ii iii illustr imag image-manag images/stories imagin img immedi immens impact imper implement impli import imposs imprecis impress improv in inadvert inbound inbox includ incom incompat incorpor increas incred increment inde indent independ indescrib index index.html index.php indic indict indign indirect individu induc industri inexhaust infanc inflam influenc info [email protected] inform information/the infrastructur ingredi inherit initi input insecur insert insertions.the insid instal install/uninstall installation/uninstallation instanc instanti instead instruct integr intent interact interchang intercultur interest interfac interim intern internation internet interpret intranet intro introduc introduct invalid invent inventori invest invis invit invok involv ip ireland irretriev irrevers isbn iscor isdn isn isol issu ital item iv ix januari jardin java javascript jce jdoc jexec job joern join joint jone joomfish joomla joomla-1.5.zip joomla-project joomla.org joomla.org/, joomla150 joomla150book joomla150book.zip joomla150book/index.php joomla_1.5.zip joomlacode.org joomlacode.org/gf/project/expose/frs/ joomlacode.org/gf/project/joomla/tracker/) joomlart.com jos jpath jpath_component.ds jpg jpg/png/gif jrequest juli jumla jump k kai kay kb kde keep kempen kepri kept key keyboard keyword kilobyt kind king kingdom kit klase kml know knowledg known konqueror krzeszowiec kulkarni label lag laid lamp land landri languag larg larger largest last late later latest launch lauren law lay layer layout layperson ldap lead leader leaf leagu leap learn least leav left left-click legaci legal legend leisur lenght length lerdorf less lesser let level lewi liabl librari licenc licens life lifetim lightn like limit lincoln line link link-suggest linkabl linux list list/dialog listen lite liter littl live load loadmodul loadposit local localhost localhost/joomla150 localhost/joomla150/administrator localhost/joomla150/contact localhost/joomla150/web-links localhost/phpmyadmin localhost/security locat lock log logged-in logged-on logic login logo logon logout long longer look loop loos lose lost lot louay loudspeak loui low lower ltd lüdtke m mac machin machmit macro made magnifi mail mailbodi mailer main main2 mainmenu maintain mainten maison major make mambo mambot mamp manag mani manipul manner manual manufactur map map-imag march margin mark market markup mash mashup mask mass mass-mail mastermind masthead materi mateusz matrix matter maxim maximum may mayb mb mcv mean meaning meant meantim meanwhil measur mechan media medium meet member mention mentor menu menu/breadcrumbs menuid menuitem menus mere merg messag meta meta-languag metadata metatag metaweblog method mickael microsoft microsystem middl midnight midnineti might migrat milkyway miller million million-dollar mime mind mine minimum minor minut miro miro-domin miscallen miscellan miss mission mistak misunderstand misunderstood mithil mix mixed-languag mixtur mnemon mobil mod mod_auto.php mod_auto.xml mod_docman_mostdown_1.4.0rc1.zip mode model model-view-control modem modif modifi modul modular modules/mod_rewrite.so modulet moffatt moment money monica monitor month month-long mootool mos mosimag most motion motiv mous mouse-click move movi mozilla mr ms msn mtree/task much muhammad multi multi-pag multi-sit multilingu multimedia multipl mumbai music must mvc myriad mysql mysql-common mysql-serv mysqli mysqli-databas mywindow mywindow.focus n name [email protected] namespac nation nativ natur navig near necessari necessarili need neglect neither nerv nest net network neutral never new newest newhellocontrol newli news newsfe newsflash newslett newspap next ngo nikolai nineti nobodi [email protected] non non-activ non-government non-joomla non-publish non-scal none nonetheless nonprofit normal note noth notic novemb nowaday number numer nur o object oblig observ obvious occasion occupi occur oct octob od odg odp odt offer offic offici offlin often ok old old-fashion older olton olymp omit on-lin one one-tim onlin onto open open-sourc openid openoffic opensourcematters.org opensus openwindow oper opera opinion opportun opposit optim option orang orange-color order org org/component/option org/en/hagen org/wiki/docbook org/wiki/mime organ organiz orient origin orwel os oswald other otherwis outbound outdat outlook outmod output outset outsid outstand overhaul overleaf overrid overview overwrit owner p pace pack packag packagenam packet packt pad page page-break page/front pagebreak paid paint panel paper paragraph param paramet parameters-advanc parameterscompon parent pars part part1 part2 part3 parti partial particip particular partit partner pass passion password past patch path pathtojoomla patron pattern paulo pay pc pcs pda pda-port pdf peculiar pencil pend peopl per percent percentag perfect perform perhap period perl permiss permit person person-rel personnel perspect pertain philosophi phone photo photo-galleri photograph photoshop php php-languag php-upload php.ini php.net php5 php5-mysql php5mysql phpbb phpinfo phpmyadmin physic pick pickl pictur piec pivot pixel place plan planet platform plath platitud play player pleas plesk plone plug plug-in plugin png point pointer poll poni pop pop-up popul popular porsche.com.br port portal portion posit possess possibl post post-text potenti power ppt pr practic pre pre-instal pre-text precis precondit preconfigur predefin predetermin predict predomin prefac prefer prefix preinstal prepar prerequisit presenc present preserv preset press presum prev preval prevent preview previous price primarili principl print prior privat pro probabl problem procedur process produc product production/stable profess profession professional-look profil profound program program-specif programm progress prohibit project prompt proof proofread proper properti proprietari pros prospect protect protocol proud provid provinci pseudonym public publish publish/unpublish punch purchas pure purg purpos put px quarter quasi quasi-standard queri question [email protected] quick quit quotat radio radioshack radtk rage rail rais raji rakhmawati ran random randomis rang rare rasmus rate rather rc rc1 re reach reaction read read-in readabl reader readi readili readme_en.txt real realiti realiz realli realm reason reboot receiv recent recip recipi recogn recognit recogniz recommend recurr red redevelop redirect reduc redund refer regard regardless regist registr registri regular reinstal relabel relat relationship releas relev reliabl reload remain rememb remind remot remov renam render renew rent reorgan repair repeat replac report repres reproduc request requir reserv reset resid resolut resourc respect respons rest restor restrict restructur result retriev return reveal review revis rework rewrit rewritten rhuk ridicul right right-hand ring ring-ton risk riva rizki road roadmap robert robot role room root rose rosier rotat rough round row rpc rss rtl rubi ruin rule run rush ruth safari safe safeti salesmen salesperson sampl samuel san sans-serif sat save saw saxoni say scalabl scan scare scenario schedul scheme school schönruh scope scratch screen screenshot script scroll scrollabl scrollbar scrutin seal search search-engin search-engine-friend second secret section section1 section2 section3 section4 section5 section6 section7 sector secur seduc see seem seen sef seidler select selector self self-construct self-contain self-explanatori self-imag selfexplanatori selfhtml sell semant send sender sendmail senior sens sensit sent sentenc seo sep separ septemb sequenc serif serious serv server server-sid servic session set set-up seven seventh seventi sever sgml shantanu share sheer sheet shell ship shop short shortcom shouldn show showcas shown side sidestep sie sight sign signatur signific silenc silver similar simpl simpleboard simpler simplest simpli simplic simplifi simultan sinc singl sit site sitebuild situat six sixteen sixti size sketch skill skip skype slash sleepi sleev slide slider slight slow small smaller smile smili smith smooth smpt smtp snippet so-cal social soft softwar softwarefreedom.org softwarefreedom.org/) sold solid solut solv somebodi someon someth sometim somewhat somewher soon sort soul sound sourc source-cod sp space spacer spam spammer speak special specif specifi speech speed spegg spent spill spinach split spot sprinkl sql ssl stabil stabl staff stage stand stand-alon standalon standard stander star start startseit stat state statement static station statist status stay step stick sticker sticki still stock stop storag store stories/france strang strategi stray stretch strict string strip structur student stun stuttgart style sub sub-menu subcategori subdirectori subgroup subject submenu submenus submiss submit subsequ subset substanti substructur subway success successor sudden suffici suffix suggest [email protected] suitabl sumbol summar summari summer sun super super-administr superordin supersed supplement supplementari suppli supplier support suppress sure surf surfac surfer surpris surround suse swahili swap swarm swf switch symbol syndic synonym syntax system system-pagebreak são tab tabl table-lik tackl tag take taken takriban tale talent talk tanslat target task tast tatter teach team teaser technic techniqu technolog tedious telephon tell temp temp-fold templat template.css template_thumbnail.png templatedetails.xml templateroot templates/joomla150book temporari tender tent term termin terrif test text text-descript textarea textbox theme thereaft therebi therefor therewith thick thing think third third-parti thirteen though thought thousand thread three three-step throw thumb thumbnail thus tick time time-zon timezon tinker tinymc tinymce.moxiecode.com tinymce.moxiecode.com/). tip titl tmpl_bertrand.zip to1.5x today togeth toggl toler tom tone took tool toolbar top topic toss total touch tour tourist toward town tpl trace track trade trademark tradit traffic trailer train trainer transfer transform translat transmit transpar trash travel trebuchet tree tree-lik tremend trench trend tri trial triangl trick trs true trust tube tugzip tune turn tutori twelv twenti twice two two-stag two-year txt type typefac typic typo3 u u.s ubuntu uk ulrich ultim ultraedit un un-set unarch uncategor under underneath understand underw undesir undisput unfortun unicod unimport unimpress uninstal uninstall.sql uniqu unit univers unix unix-bas unix-lik unless unlimit unmanag unmitig unnot unpack unpredict unpublish unread unrestrict unric.org unspectacular unusu unzip unzipfirst up-to-d updat upgrad upload uppermost urdu url urth.tv us usa usabl use user user-cr user-defin user-ent user-friend user-friendli user1 user2 user3 user4 userdefin usernam usual utc utf v vaccuum valid valley valu vandeput variabl variant varieti various vcard ve ventur verif verifi verion versatil version version.7 vertic veículo vi via victori video view viewlink/link_ views/hello/index.html views/hello/tmpl/default.php views/hello/tmpl/index.html views/hello/view.html.php views/index.html vii viii vinayak [email protected] virtual virtuemart visibl vision visit visitor vista vistor visual vital vocabulari vogelgesang volum voluntarili vote w w3c wait walk wall wamp want war warfar warm warn warranti wast water watermark wave way wcag1 wcag2 wcms weather web web-spac weblink weblog webserv websit website.the webspac week weigh weight welcom well well-organ whatev whenev wherea wherev whether whichev whole wide wider width width/height wife wikepedia wiki wikipedia wild wilder win wind window window.open windows/xampp winner winter wise wish within without wlan wolfgang won word wordpad work workaround worker workflow workspac world world-wid worldwid worri wors worst would wound wrap wrapper writabl write write-protect writer written wrong www www.adobe.com www.adobe.com/products/dreamweaver), www.apachefriends.org www.apachefriends.org/en/xampp.html. www.bestofjoomla.com www.bestofjoomla.com/) www.bloghouse www.bloghouse.org www.bloghouse.org/blog/7/feed www.cellardoor.za.net www.cellardoor.za.net/) www.cocoate.com www.devshed.com www.devshed.com/c/a/braindump/joomla-is-thenew-mambo/ www.ebay.com www.ebay.com/). www.entropy.ch www.entropy.ch/software/macosx/php/). www.example.com www.example.com/joomla150/index.php?option=com_contact&itemid=3 www.example.org www.flickr www.google.com www.google.com/), www.gotgtek.net www.gotgtek.net/forum/index. www.joomfish.net www.joomfish.net/). www.joomla.org www.joomla.org/, www.mambodocman.com www.mambodocman.com/) www.mamp.info www.miro.com.au www.myhomepage.com www.packtpub www.packtpub.com www.packtpub.com/authors. www.packtpub.com/files/code/5302_code.zip, www.packtpub.com/support. www.phpbb.com www.phpbb.com/) www.phpmyadmin.net www.phpmyadmin.net/) www.rpmseek.com www.rpmseek.com/index.html). www.swsoft.com www.swsoft.com/en/products/plesk/), www.swsoft.com/en/products/sitebuilder/) www.thefreecountry.com www.thefreecountry.com/webmaster/htmleditors.shtml). www.ultraedit.com www.ultraedit.com/) www.xstandard.com www.xstandard.com/). www.youtube.com www.youtube.com/) wysiwyg wysiwyg-editor x x-pagebreak xammp xampp xampp-control.exe xampplit xampplite-win32-1.6.5.exe xcf xhtml xi xii xls xml xml-rpc xml-rpc-joomla xml/rpcinterface xmlrpc xmprpc xp xstandard xstandard-lit xtd xtml xtml-compliant y yahoo yast yast2 year yellow yes yet york youtub zagad ziller zip zip-fil zlib zone