We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25663 MODX Staff
    • 12,272 Posts
    [Mod note: Thread split; pertinent part of previous post quoted here]
    Quote from: chanh at Aug 20, 2005, 01:09 PM

    Modx has many wonderful features but it lack one thing that will be a big disenable for it to be as successful as Mambo is an addons installer.

    In my opinion the reason Mambo is as successful as it is now is due to its installer for component, module, bots and template. The installers make Mambo so easy for an average Joe to extend Mambo and for the developers to enhance Mambo.

    So if Modx has a similars installer to install snippets, tempalte or themes, etc. With the installer, in time, Modx will be as successful and popular as Mambo and even surpass it!

    The installer as you mention is on the radar, but the coding for it has not yet begun. We’re in the process of streamlining and enhancing the API first. The internal resource installer is going to be a wonderful addition as you mention. Care to help us get this going? smiley
      Ryan Thrash, MODX Co-Founder
      Follow me on Twitter at @rthrash or catch my occasional unofficial thoughts at thrash.me
      • 34162
      • 1 Posts
      I think we can learn some example from Mambo. For instant, the xml file, the packaging of the files for the package or addon in a zip file, the installer will install the zip into the proper place or uninstall it if the user no longer need it.

      Here is a XML sample of my module that I written for Mambo.

      <?xml version="1.0" encoding="iso-8859-1"?>
      <mosinstall type="module" version="4.5.1">
      <name>MosCmenuTree</name>
      <creationDate>12/29/2004</creationDate>
      <author>Chanh Ong</author>
      <copyright>(C) 2004 - 2013 OngETC</copyright>
      <license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
      <authorEmail>[email protected]</authorEmail>
      <authorUrl>ongetc.com</authorUrl>
      <version>1.06</version>
      <description>Content Menu Tree (Readme.txt for more detail), created by Chanh Ong</description>
          <files>
      	<filename module="mod_clo">mod_clo.php</filename>
      	<filename>mod_clo.class.php</filename>
      	<filename>mod_clo/dtree.js</filename>
      	<filename>mod_clo/dtree.css</filename>
      	<filename>mod_clo/readme.txt</filename>
          </files>
          <images>
      	<filename>mod_clo/images/barrow.gif</filename>
      	<filename>mod_clo/images/karrow.gif</filename>
      	<filename>mod_clo/images/oarrow.gif</filename>
      	<filename>mod_clo/images/rarrow.gif</filename>
      	<filename>mod_clo/images/tarrow.gif</filename>
      	<filename>mod_clo/images/uarrow.gif</filename>
      	<filename>mod_clo/images/varrow.gif</filename>
      	<filename>mod_clo/images/warrow.gif</filename>
      	<filename>mod_clo/images/xarrow.gif</filename>
      	<filename>mod_clo/images/zarrow.gif</filename>
      	<filename>mod_clo/images/new.gif</filename>
      	<filename>mod_clo/images/upd.gif</filename>
      	<filename>mod_clo/img/base.gif</filename>
      	<filename>mod_clo/img/cd.gif</filename>
      	<filename>mod_clo/img/empty.gif</filename>
      	<filename>mod_clo/img/folder.gif</filename>
      	<filename>mod_clo/img/folderopen.gif</filename>
      	<filename>mod_clo/img/globe.gif</filename>
      	<filename>mod_clo/img/imgfolder.gif</filename>
      	<filename>mod_clo/img/join.gif</filename>
      	<filename>mod_clo/img/joinbottom.gif</filename>
      	<filename>mod_clo/img/line.gif</filename>
      	<filename>mod_clo/img/minus.gif</filename>
      	<filename>mod_clo/img/minusbottom.gif</filename>
      	<filename>mod_clo/img/musicfolder.gif</filename>
      	<filename>mod_clo/img/nolines_minus.gif</filename>
      	<filename>mod_clo/img/nolines_plus.gif</filename>
      	<filename>mod_clo/img/page.gif</filename>
      	<filename>mod_clo/img/plus.gif</filename>
      	<filename>mod_clo/img/plusbottom.gif</filename>
      	<filename>mod_clo/img/question.gif</filename>
      	<filename>mod_clo/img/trash.gif</filename>
          </images>
          <params>
      	<param name="secid" type="text" default="1" 
      	   label="Sect ID" description="Section ID ex: 1,2" />
      	<param name="catid" type="text" default="1" 
      	   label="Cat ID" description="Category ID ex: 1,2" />
      	<param name="ltype" type="list" default="tree" 
      	   label="Tree Type" description="Display content using">
      		<option value="tree">tree</option>
      		<option value="dropdown">dropdown</option>
      		<option value="bycat">bycat</option>
      		<option value="list">list</option>
      	</param>
      	<param name="orderby" type="list" default="id" 
      	  label="Order by" description="Order by">
      		<option value="id">id</option>
      		<option value="name">name</option>
      	</param>
      	<param name="basetext" type="text" default="" 
      		label="Basetext" 
      		description="If Base=text, specify the text to use" />
      	<param name="separator" type="text" default="" 
      		label="Separator" 
      		description="By default a moduleheading is shown (if Show title=yes in the module config), it can be set to other HTML code" />
      	<param name="openAll" type="radio" default="0" 
      		label="openAll" 
      		description="By default a menu tree is shown with all folders closed, except the one of the selected node. With this parameter all folders are open. Overrides closeSameLevel" >
      		<option value="1">True</option>
      		<option value="0">False</option>
      	</param>
      	<param name="useSelection" type="radio" default="1" 
      		label="useSelection" 
      		description="Nodes can be selected(highlighted)." >
      		<option value="1">True</option>
      		<option value="0">False</option>
      	</param>
      	<param name="useLines" type="radio" default="1" 
      		label="useLines" 
      		description="Tree is drawn with lines." >
      		<option value="1">True</option>
      		<option value="0">False</option>
      	</param>
      	<param name="useIcons" type="radio" default="1" 
      		label="useIcons" 
      		description="Tree is drawn with icons." >
      		<option value="1">True</option>
      		<option value="0">False</option>
      	</param>
      	<param name="useStatusText" type="radio" default="0" 
      		label="useStatusText" 
      		description="Displays node names in the statusbar instead of the url." >
      		<option value="1">True</option>
      		<option value="0">False</option>
      	</param>
      	<param name="closeSameLevel" type="radio" default="0" 
      		label="closeSameLevel" 
      		description="Only one node within a parent can be expanded at the same time." >
      		<option value="1">True</option>
      		<option value="0">False</option>
      	</param>
          </params>
          <EXTRAparams>
          </EXTRAparams>
      </mosinstall>
      
      


      Thanks

      PS: I attach the Mambo installer component and the domit parser for you to take a look.

      I also upload one of my module that I developed for Mambo which will generate a dynamic tree menu from content to show the whole picture of how Mambo installer work from a devloper zip file and from the internal installer component and the parser that the installer uses.
        • 34162
        • 1 Posts
        FWIW, I think the XML packaging for modules makes a lot of sense ... and fits right in with my suggestion to move aspects, like, say, configuration, to XML. smiley
          • 32963
          • 1,732 Posts
          Hi chanh,

          We’re indeed please to have you on board the MODx team. I’m fully in agreement with Ryan’s comments.

          As it relates to the installer it’s on our to do list. The installer will not only install snippets, chunks, template and TVs but it will also be able to install documents, folders (with nested documents), users and system files. It will also make use of XML by using either DOMIT or miniXML parsers.

          The installer will function similar to modern day Visual Installers. The users will be able to create custom install screens and take advantage of system events.

          We would love to hear your views on how best to go about build such a system using the DOMIT or miniXML parser.




            xWisdom
            www.xwisdomhtml.com
            The fear of the Lord is the beginning of wisdom:
            MODx Co-Founder - Create and do more with less.
            • 34162
            • 1 Posts
            I am still a newbie in regarding how Modx work so I am still have a lot to learn.

            I can only provide you my view on how Mambo work and my observation so hopefully Modx can avoid those shortcoming in Mambo.

            Although Mambo installer does it jobs but it got some issues:
            . The file permission of those files are set to be writtable by "nobody" which is risky
            . There are many cases that the components need to have the functionality of module or bots so currently it requires a separate install for each of that feature and cause a lot of confusion from the user perspective

            Look like you guys already well on your ways adding this feature in Modx which I am very glad to hear. I would love to check out this feature when you have it available in Modx and to provide my input. I would love to contribute more as I learn more about the inner working of Modx.

            Thanks

            Here is a little exerpt from Mambo site regarding the conversion and the trouble they encounter with MiniXML:
            *****
            Mambo 4.5.1 has upgraded its XML parser to DOMIT! (http://www.engageinteractive.com/domit/). This has been done to solve a conflict in the MiniXML library with PHP Version 4.2.2. DOMIT is also a far more mature library and development is ongoing where other libraries seem to have stagnated.
            ******
              • 32963
              • 1,732 Posts
              Quote from: chanh at Aug 20, 2005, 11:38 PM

              Mambo 4.5.1 has upgraded its XML parser to DOMIT! (http://www.engageinteractive.com/domit/). This has been done to solve a conflict in the MiniXML library with PHP Version 4.2.2. DOMIT is also a far more mature library and development is ongoing where other libraries seem to have stagnated.

              Thank Chanh.

              I think DOMIT is great but MiniXML seems a lot less complicated. In any event I think we might be going with DOMIT LITE as it seems to be the faster of the two
                xWisdom
                www.xwisdomhtml.com
                The fear of the Lord is the beginning of wisdom:
                MODx Co-Founder - Create and do more with less.
                • 4673
                • 577 Posts
                Installers are cool but I’d like to take it one step even further:

                Having the ability to browse what’s available from my modx site and download directly to the site. Skipping the whole down to pc, ftp to site, click install.

                You could even have it keep a zip on the server and what not.

                Also, allows the ability to run version control from the beginning.

                If it’s gonna be done than let’s push for it all smiley

                www.gossamer-threads.com (perl site -- uses a similar process for their SQL products).
                  Tangent-Warrior smiley
                  • 4011
                  • 19 Posts
                  Also Typo3 and SMF use this type of procedure where you have full version control over the core and all hacks / addons etc. Really appreciated if MODx ’d go that direction too.
                    • 28215
                    • 4,149 Posts
                    splittingred Reply #9, 20 years ago
                    Quote from: Carsten at Aug 21, 2005, 10:26 AM

                    Installers are cool but I’d like to take it one step even further:
                    Having the ability to browse what’s available from my modx site and download directly to the site. Skipping the whole down to pc, ftp to site, click install.
                    You could even have it keep a zip on the server and what not.
                    Also, allows the ability to run version control from the beginning.
                    If it’s gonna be done than let’s push for it all smiley
                    www.gossamer-threads.com (perl site -- uses a similar process for their SQL products).

                    I really enjoy this idea - PEAR/PHP does this...but I’ve also noticed that there’s all sorts of issues with permissions and the like once you start doing this (especially with OS X servers). It might be worth the time to check out how they do it...I know it’s via XML packaging and the such.
                      shaun mccormick | bigcommerce mgr of software engineering, former modx co-architect | github | splittingred.com
                      • 28042 ☆ A M B ☆
                      • 24,524 Posts
                      One of the CMS packages I used before, I don’t remember if it was Xoops or Mambo (yes, this was that long ago...) did something similar. You could select a zip file on your local machine, and it would upload it to the appropriate folder and unzip and install it automatically. The modules had to be prepared and packaged in a very specific manner. It also had a very nice patching system, using search and replace algorithms.
                        Studying MODX in the desert - http://sottwell.com
                        Tips and Tricks from the MODX Forums and Slack Channels - http://modxcookbook.com
                        Join the Slack Community - http://modx.org