E-book details

Mastering Joomla! 1.5 Extension and Framework Development. The Professional’s Guide to Programming Joomla!

Mastering Joomla! 1.5 Extension and Framework Development. The Professional’s Guide to Programming Joomla!

Chuck Lanham, Chris Davenport, James Kennard, Charles Lanham (Chuck)

Ebook
Joomla! is one of the world’s top open source content management systems, which enables you to build websites and powerful online applications. Out of the box, Joomla! does a great job of managing the content needed to enhance the functionality of your website. But for many people, the true power of Joomla! lies in its application framework that makes it possible for thousands of developers around the world to create powerful add-ons and extensions.

This book will guide you through the complexities of implementing add-ons, components, modules, and plugins in Joomla! 1.5. If you feel that you’ve mastered the basics of creating Joomla! extensions, then this book will take you to the next level. Packed with expert advice on all aspects of programming with Joomla!, this book is an invaluable reference guide you will turn to again and again for your Joomla! development tasks.

The book starts by explaining the structure and design of the Joomla! Framework. Then we move on to extending and storing data in standard fields and dealing with multilingual requirements. Further, you will discover best practices, design, and coding methods for Joomla! components, modules, plugins, and other extensions. Along the way, you will actually design and create a component, module, and plugin that work together to add functionality to the Joomla! framework.

You will also learn about customizing the page output using JavaScript effects, making use of Web Services from within Joomla! and ensuring that your code is secure and error-free. You will discover how to easily create sophisticated extensions that are robust, user-friendly, and professional by taking advantage of the many libraries and utilities provided by the Joomla! framework. A comprehensive, up-to-date reference to the Joomla! Framework API is also included in the book.

Finally, we will discuss advanced methods for rendering your extensions more robust, secure, and professional.
  • Mastering Joomla! 1.5 Extension and Framework Development
    • Table of Contents
    • Mastering Joomla! 1.5 Extension and Framework Development
    • Credits
    • About the Author
    • About the Reviewer
    • Preface
      • History
      • What this book covers
      • What you need for this book
      • Conventions
      • Reader feedback
      • Customer support
      • Errata
      • Piracy
      • Questions
    • 1. Introduction to Joomla!
      • Overview
      • Joomla! 1.5 Framework
        • Framework layer
          • Libraries
          • Framework
          • Plugins
        • Application layer
        • Extension layer
      • Extension types and their uses
        • Components
        • Modules
        • Plugins
        • Languages
        • Templates
        • Tools
      • Extension Manager
      • Requirements
      • Joomla Extension Directory (JED)
      • Development tools
        • JoomlaCode.org
        • Coding standards
        • phpDocumentor
        • J!Dump
      • Summary
    • 2. Getting Started
      • A quick object lesson
        • Inheriting from JObject
        • Design Patterns
        • Predefined constants
      • The Joomla! process
        • Working with JRequest
        • From Request to Response
        • Load Core
          • Libraries
        • Build application
          • The session
        • Initialize application
          • Multilingual support
          • UTF-8 string handling
        • Route application
          • URI structure
        • Dispatch application
        • Render application
        • Send response
      • Directory structure
      • Summary
    • 3. The Database
      • The core database
        • Database structure
      • Database naming conventions
        • Database Prefix
        • Table names
        • Column names
        • Creating a component table
      • Additional points to consider
        • Dates
        • Parsing data
        • Dealing with multilingual requirements
      • Using the database
        • JDatabase::query()
          • Writing queries
        • JDatabase::load methods
          • loadResult( ) : string
          • loadResultArray( numinarray : int=0 ) : array
          • loadRow( ) : array
          • loadAssoc( ) : array
          • loadObject( ) : stdClass
          • loadRowList( key : int ) : array
          • loadAssocList( key : string=' ) : array
          • loadObjectList( key : string='' ) : array
        • JDatabase::ADOdb methods
        • JTable
          • Creating the JTable subclass
          • Creating a new record
          • Reading a record
          • Updating a record
          • Deleting a record
          • Checking a record in or out
          • Ordering
          • Publishing
          • Hits
          • Parameter fields
      • Summary
    • 4. Extension Design
      • Supporting classes
      • Helpers
      • Using and building getInstance() methods
      • Using the registry
          • Saving and loading registry values
      • The user
        • User parameters
      • The session
      • The browser
      • Assets
      • Extension structure
        • The structure of a component
          • Component directory structure
          • Component file structure
              • index.html
              • Entry point
              • Controller
              • Views
              • Models
              • Tables
          • Component class names
              • Backend (/administrator/components)
              • Frontend ( /components )
          • Setting up a component sandbox
          • SQL install and uninstall files
          • Install and uninstall scripts
          • Component XML manifest file
        • The structure of a module
          • Module directory structure
          • Module file structure
              • index.html
              • Module entry point
              • Helper
              • Layouts
          • Module class names
              • Frontend (/modules)
          • Setting up a module sandbox
          • Module XML manifest file
        • The structure of a plugin
          • Plugin directory structure
          • Setting up a plugin sandbox
      • Extension packaging
      • Summary
    • 5. Component Design
      • Component design
        • The MVC software design pattern
          • Model
          • View
          • Controller
          • Connecting the dots
      • Building the MVC component
        • Building the component frontend
          • Building the entry point
          • Building the controller
          • Building the frontend model
          • Building the frontend view
            • Building the view layouts
              • Default layout
              • List layout
          • Rendering other document types
            • Feed
            • PDF
            • RAW
          • Updating the manifest
        • Building the component backend
          • Building the backend entry point
          • Building the controller
              • Display task
              • Edit task
              • Add task
              • Save task
              • Cancel task
              • Remove task
        • Building the backend model
        • Building the table
        • Building views
          • View #1
            • The layout
          • View #2
            • The layout
          • Updating the manifest
      • Dealing with component configuration
      • Help files
      • Routing
      • Summary
    • 6. Module Design
      • First steps
        • Standalone modules
        • Modules and components working together
        • Frontend and backend module display positions
      • Module settings (parameters)
      • Helpers
      • Layouts (templates)
        • Media
      • Translating
      • Summary
    • 7. Plugin Design
      • Events
      • Listeners
        • Registering listeners
        • Handling events
          • Listener function
          • Listener class
      • Plugin groups
        • Authentication
        • Content
        • Editors
        • Editors-xtd
        • Search
        • System
        • User
        • XML-RPC
      • Loading plugins
      • Using plugins as libraries (in lieu of library extensions)
      • Translating plugins
      • Dealing with plugin settings (parameters)
        • File naming conflicts
      • Summary
    • 8. Rendering Output
      • Improving components
      • Component backend
        • Toolbars
        • Submenu
        • The joomla.html library
          • behavior
          • email
          • form
          • grid
          • image
          • list
          • menu
          • select
        • Component layouts (templates) revisited
          • Admin form
          • Layout improvements
            • Adding a WYSIWYG editor
            • Iterative layout templates
      • Itemized data
        • Pagination
        • Ordering
        • Filtering and searching
      • Summary
    • 9. Customizing the Page
      • Application message queue
      • Redirecting the browser
        • Component XML metadata files and menu parameters
      • Using menu item parameters
      • Modifying the document
        • Page title
        • Pathway
        • JavaScript
        • CSS
        • Metadata
        • Custom header tags
      • Translating
        • Translating text
        • Defining translations
        • Debugging translations
      • Using JavaScript effects
        • JPane
        • Tooltips
        • Fx.Slide
      • Summary
    • 10. APIs and Web Services
      • XML
        • Parsing
        • Editing
        • Saving
      • AJAX
        • Response
        • Request
      • LDAP
      • Email
      • File transfer protocol
      • Web services
      • Building a web service (XML-RPC plugin)
      • Summary
    • 11. Error Handling and Security
      • Errors, warnings, and notices
        • Return values
        • Customizing error handling
      • Dealing with CGI request data
        • Preprocessing CGI data
        • Escaping and encoding data
        • Escaping and quoting database data
        • Encode XHTML data
        • Regular Expressions
          • Patterns
          • Matching
          • Replacing
      • Access control
        • Menu item access control
        • Extension access control
      • Attacks
        • How to avoid common attacks
          • Using the session token
          • Code injection
            • PHP code injection
            • SQL injection
          • XSSCross Site Scripting
          • File system snooping
        • Dealing with attacks
          • Log out and block
          • Attack logging
          • Notify the site administrator
      • Summary
    • 12. Utilities and Useful Classes
      • Dates
        • Date and time parameter
        • Time zone parameter
      • File system
        • Paths
        • Folders
        • Files
        • Archives
      • Arrays
      • Trees
      • Log files
      • Summary
    • A. Joomla! Core Classes
      • JApplication
          • Properties
          • Inherited methods
          • Deprecated methods
          • Methods
                • Constructor __construct
                • close
                • dispatch
                • enqueueMessage
                • getCfg
                • getClientId
                • getInstance
                • getMenu
                • getMessageQueue
                • getName
                • getPathway
                • getRouter
                • getTemplate
                • getUserState
                • getUserStateFromRequest
                • initialise
                • isAdmin
                • isSite
                • login
                • logout
                • redirect
                • registerEvent
                • render
                • route
                • setUserState
                • triggerEvent
      • JController
          • Properties
          • Inherited properties
          • Inherited methods
          • Methods
                • Constructor __construct
                • addModelPath
                • addViewPath
                • authorize
                • display
                • execute
                • getModel
                • getName
                • getTask
                • getTasks
                • getView
                • redirect
                • registerDefaultTask
                • registerTask
                • setAccessControl
                • setMessage
                • setRedirect
                • _addPath
                • _createFileName
                • _createModel
                • _createView
                • _setPath
      • JDatabase
          • Direct descendents
          • Properties
          • Inherited properties
          • Inherited methods
          • Methods
                • Constructor __construct
                • Destructor __destruct
                • addQuoted
                • connected
                • debug
                • explain
                • getAffectedRows
                • getCollation
                • getConnectors
                • getErrorMsg
                • getErrorNum
                • getEscaped
                • getInstance
                • getLog
                • getNullDate
                • getNumRows
                • getPrefix
                • getQuery
                • getTableCreate
                • getTableFields
                • getTableList
                • getTicker
                • getUTFSupport
                • getVersion
                • hasUTF
                • insertid
                • insertObject
                • isQuoted
                • loadAssoc
                • loadAssocList
                • loadObject
                • loadObjectList
                • loadResult
                • loadResultArray
                • loadRow
                • loadRowList
                • nameQuote
                • query
                • queryBatch
                • Quote
                • replacePrefix
                • setQuery
                • setUTF
                • splitSql
                • stderr
                • test
                • updateObject
            • ADOdb methods
                • BeginTrans
                • CommitTrans
                • ErrorMsg
                • ErrorNo
                • Execute
                • GenID
                • GetCol
                • GetOne
                • GetRow
                • PageExecute
                • RollbackTrans
                • SelectLimit
      • JDocument
          • Direct descendents
          • Properties
          • Inherited properties
          • Inherited methods
          • Methods
                • Constructor __construct
                • addScript
                • addScriptDeclaration
                • addStyleDeclaration
                • addStyleSheet
                • getBase
                • getBuffer
                • getCharset
                • getDescription
                • getDirection
                • getGenerator
                • getHeadData
                • static getInstance
                • getLanguage
                • getLink
                • getMetaData
                • getModifiedDate
                • getTitle
                • getType
                • loadRenderer
                • render
                • setBase
                • setBuffer
                • setCharset
                • setDescription
                • setDirection
                • setGenerator
                • setHeadData
                • setLanguage
                • setLineEnd
                • setLink
                • setMetaData
                • setMimeEncoding
                • setModifiedDate
                • setTab
                • setTitle
                • setType
                • _getLineEnd
                • _getTab
      • JDocumentRenderer
          • Direct descendents
          • Properties
          • Inherited properties
          • Inherited methods
          • Methods
                • Constructor __construct
                • getContentType
                • render
      • JFactory
          • Methods
                • getACL
                • getApplication
                • getCache
                • getConfig
                • getDate
                • getDBO
                • getDocument
                • getEditor
                • getLanguage
                • getMailer
                • getSession
                • getTemplate
                • getURI
                • getUser
                • getXMLParser
                • _createACL
                • _createConfig
                • _createDBO
                • _createDocument
                • _createLanguage
                • _createMailer
                • _createSession
                • _createTemplate
      • JModel
          • Properties
          • Inherited properties
          • Inherited methods
          • Methods
                • Constructor __construct
                • addIncludePath
                • addTablePath
                • getDBO
                • getInstance
                • getName
                • getState
                • getTable
                • setDBO
                • setState
                • _createFileName
                • _createTable
                • _getList
                • _getListCount
      • JObject
          • Direct descendents
          • Properties
          • Deprecated methods
          • Methods
                • Constructor __construct
                • Constructor JObject
                • get
                • getError
                • getErrors
                • getProperties
                • set
                • setError
                • setProperties
                • toString
      • JPlugin
          • Properties
          • Inherited properties
          • Inherited methods
          • Methods
                • Constructor __construct
                • Constructor JPlugin
                • loadLanguage
      • JTable
          • Direct descendents
          • Properties
          • Inherited properties
          • Inherited methods
          • Methods
                • Constructor __construct
                • addIncludePath
                • bind
                • canDelete
                • check
                • checkin
                • checkout
                • delete
                • getDBO
                • getInstance
                • getKeyName
                • getNextOrder
                • getTableName
                • hit
                • isCheckedOut
                • load
                • move
                • publish
                • reorder
                • reset
                • save
                • setDBO
                • store
                • toXML
      • JUser
          • Properties
          • Inherited properties
          • Inherited methods
          • Methods
                • Constructor __construct
                • authorize
                • bind
                • defParam
                • delete
                • getInstance
                • getParam
                • getParameters
                • getTable
                • load
                • save
                • setLastVisit
                • setParam
                • setParameters
      • JView
          • Properties
          • Inherited properties
          • Inherited methods
          • Methods
                • Constructor __construct
                • addHelperPath
                • addTemplatePath
                • assign
                • assignRef
                • display
                • escape
                • get
                • getLayout
                • getModel
                • getName
                • loadHelper
                • loadTemplate
                • setEscape
                • setLayout
                • setLayoutExt
                • setModel
                • _addPath
                • _createFileName
                • _setPath
    • Index
  • Title: Mastering Joomla! 1.5 Extension and Framework Development. The Professional’s Guide to Programming Joomla!
  • Author: Chuck Lanham, Chris Davenport, James Kennard, Charles Lanham (Chuck)
  • Original title: Mastering Joomla! 1.5 Extension and Framework Development. The Professional’s Guide to Programming Joomla!
  • ISBN: 9781849510530, 9781849510530
  • Date of issue: 2010-05-31
  • Format: Ebook
  • Item ID: e_3c6v
  • Publisher: Packt Publishing