solarjoomla

  • When Eclipse meet Joomla!...from 0 to Joomla! in 3 minutes

    &160;

    The easiest way to develop component, modules, plugin for Joomla! using best of the breed open source software.&160;
    In order to speed up development of Joomla software, I did develop a developer package "start and ready to work". So basically nothing special for any experienced developer, just a gain of time. Less experienced developer will enjoy the package!&160; Just unpack the big ZIP file on any drive, start 2 program and you have a running Eclipse and Joomla! environment for developing

    Read more in the WIKI

    To be release in a few hours from now


    Content of package

    eclipse logo
    Eclipse 3.4
    www.eclipse.org
    Eclipse is an open source community whose projects are focused on providing a vendor-neutral open development platform and application frameworks for building software. The Eclipse Foundation is a not-for-profit corporation formed to advance the creation, evolution, promotion, and support of the Eclipse Platform and to cultivate both an open source community and an ecosystem of complementary products, capabilities, and services.
    PDT 2.0 The PDT project provides a PHP Development Tools framework for the Eclipse platform. This project encompasses all development components necessary to develop PHP and facilitate extensibility. It leverages the existing Web Tools Platform (WTP) and Dynamic Languages Toolkit (DLTK) in providing developers with PHP capabilities.
    xampp.logo&160;
    XAMPP 1.7.0
    XAMPP is an easy to install Apache distribution containing MySQL, PHP and Perl. XAMPP is really very easy to install and to use - just download, extract and start.
    apache http server
    • Apache HTTPD 2.2.11 + Openssl 0.9.8i

    The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. The goal of this project is to provide a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards.

    Apache has been the most popular web server on the Internet since April 1996.
    with mod_rewrite
    php logo
    • phpMyAdmin 3.1.1
    • FileZilla FTP Server 0.9.29
    • Mercury Mail Transport System 4.52
    PHP is a popular open-source programming language used primarily for developing server-side applications and dynamic web content, and more recently, other software. The name is a recursive acronym for "PHP: Hypertext Preprocessor".

    with PHPdg debugger support
    with GD2 image manipulation library
    phpadmin
    PphpMyAdmin 3.1.1
    phpMyAdmin is a tool written in PHP intended to handle the administration of MySQL over the Web. Currently it can create and drop databases, create/drop/alter tables, delete/edit/add fields, execute any SQL statement, manage keys on fields.

    Accessible through:
    http://localhost/mysql/
    joomla logo
    Joomla 1.0.15
    www.joomla.org
    Joomla! is one of the most powerful Open Source Content Management Systems on the planet. It is used all over the world for everything from simple websites to complex corporate applications. Joomla! is easy to install, simple to manage, and reliable.

    configured to access mysql dev10x database
    admin panel login: admin
    admin panel pwd: admin
    joomla logo
    Joomla 1.5.9
    www.joomla.org
    configured to access mysql dev15x database
    admin panel login: admin
    admin panel pwd: admin
    mysql logo
    MySQL 5.1.30&160;
    root login: root
    root password: empty
    Eclipse Launcher Version 2.0.2 A tool for java developers using eclipse IDE. The eclipse launcher provides developers to manage multiple workspaces and to start those. The program is shown in system tray from which it is possible to edit or start the workspace definition in an easy way.
    java
    Sun
    KDK 1.6u11
    Java Development Kit from Sun Microsystems that implements the basic set of tools needed to write, test and debug Java applications and applets. Needed to run Eclipse.


    &160; MySQL Administrator is a powerful visual administration tool that makes it easy to administer and monitor your MySQL environment and gain significantly better visibility into how your databases are operating. MySQL Administrator now integrates database management and maintenance into a single, seamless environment, with a clear and intuitive graphical user interface.

    MySQL Query Browser is the easiest visual tool for creating, executing, and optimizing SQL queries for your MySQL Database Server. The MySQL Query Browser gives you a complete set of drag-and-drop tools to visually build, analyze and manage your queries.

    The MySQL Migration Toolkit is a powerful framework that enables you to quickly migrate your proprietary databases to MySQL. Using a Wizard-driven interface, the MySQL Migration Toolkit implements a proven methodology and walks you through the necessary steps to successfully complete a database migration project.

    Some figures

    • Distribution is available as zip
    • You will have to accept and Read all licenses in directory SolarJoomla\licenses\
    • start one program to enjoy a running a Joomla developer environment in no time!
  • teamcity.joomla

    Status/Done

    • Joomla is also a simple dependency in scope compile (productive code and tests need it)
      <?xml version="1.0" encoding="UTF-8"?>
      <project>
        <modelVersion>4.0.0</modelVersion>
        <groupId>org.joomla</groupId>
        <artifactId>joomla</artifactId>
        <version>1.5.10</version>
        <description></description>
      </project>

      Deployed and viewable at http://maven.waltercedric.com/artifactory/webapp/browserepo.html
      joomla.in.artifactory

      So binding your code to a new version or old version is as simple as changing in your component pom.xml

      <dependency>
      &160;&160;&160; <groupId>org.joomla</groupId>
      &160;&160;&160; <artifactId>joomla</artifactId>
      &160;&160;&160; <version>1.5.10</version>&160;
      </dependency>


    &160;

    Delayed Commit (also known as private build). It allows you to run the full build with tests on the server as if you checked in all your changes, but without actually checking in your changes until the build is successful,so you will know if you're about to break the build before you actually break it.

    Open

    • Deploy generated artifacts to a Joomla running stage (runtime farms of Joomla!) in order to run integration testswith Selenium
    • Add selenium test cases for testing the GUI, also running “integration tests
    • Packaging is jar, better would be zip or tar.gz
    • Use Phing (http://docs.joomla.org/Setting_up_your_workstation_for_extension_development) for developer environment, and maybe also deploy to farms
    • Deliver SolarJoomla as soon as PHPDocumentator, PHPUnit, DOxygen are running in XAMPP
    • Publish generated site artifacts' to new sub domains
    • Add reporting plugin.
    • DOCUMENT everything in myWIKI at the same time

    Future

    Must work also in Atlassian Bamboo, Apache Hudson … I need your help for that, that wont be a huge task.

  • apache_maven

    joomla logo vert color

      I will quickly describe in this post how you can code your component/plugins/modules against a specific version of Joomla! with no effort using Maven for PHP.

    The trick I made is to package the whole Joomla distribution in a jar file, and add a Maven dependency to the project. As Joomla, PHPUnit, or any other 3rd party is not a set of class packaged in a jar, the brilliant idea of Maven for PHP is to unpack all these dependencies in the target/phpinc directory automatically AND concatenating this directory to the php setting include_path during compile and test phase. You can do the same using the command line by running:

    php -d include_path=

    That’s also why, It is very important to not put anything from this directory under version control (add a cvs.ignore or svn properties svn:ignore) as it contains dependencies that have no reason to be put under version control in Maven paradigm (they have to reside in a Maven repository)

    So I create a new zip file joomla-1.5.10.jar with a directory inside named ‘Joomla’ that contains a standard binary distribution…this jar is published in artifactory with a groupid org.joomla (arbitrary chosen by me)

    Artifactory will generate a default pom.xml. Normally it should contains more meta data and be created by the Joomla team itself. (if they ever support Maven)

    <?xml version="1.0" encoding="UTF-8"?>
    <project>
      <modelVersion>4.0.0</modelVersion>
      <groupId>org.joomla</groupId>
      <artifactId>joomla</artifactId>
      <version>1.5.10</version>
      <description></description>
    </project>

    The artifact is deployed and viewable at http://maven.waltercedric.com/artifactory/webapp/browserepo.html

    joomla.in.artifactory

    With the code below I can bind my component to a new version or old version of Joomla just by modifying the component pom.xml. Note the version number 1.5.10 (the latest version of Joomla! to date)

    <dependency>
        <groupId>org.joomla</groupId>
        <artifactId>joomla</artifactId>
        <version>1.5.10</version> 
    </dependency>

    Test cases classes are directly in the eclipse project under src/test/php (this directory is created by the archetype php5-lib-archetype), In bold, this is how you can import the whole Joomla! framework!

    require_once ('PHPUnit/Framework.php');
    require_once ('Joomla/index.php');

    //I load the PHP class that I would like to test
    require_once ('admin/class/logUtils.php');

    class LogUtilsTest extends PHPUnit_Framework_TestCase {

    //a poor PHPUNit testcase
    function testisAnEmail() {

            $LogUtils = new LogUtils();
            $this->assertEquals(true, $LogUtils->isAnEmail("This email address is being protected from spambots. You need JavaScript enabled to view it."));
            $this->assertEquals(false, $LogUtils->isAnEmail("cedric.walterwaltercedric.com"));
            $this->assertEquals(true, $LogUtils->isAnEmail("This email address is being protected from spambots. You need JavaScript enabled to view it."));

        }
    }

    More to come soon.