last edit 2007-06-18 22:16:38 by randomblink

Additions:

Web Application Development

Zikula Modules are, at their simplest, Web Applications developed Modularly. When developing a Web App ( or any other kind of app ) you generally would create ALL the pieces you need and then package it together. However, with Zikula, you are given a complete system that your module will ADD TO. The basic system is already built for you. User Management, News Management, Security Development, etc. All you have to build the part of your website that ISN'T already put together.
The nice thing about this, besides the obvious, is that your module can tie into other modules, run on its own, or connect with other websites / packages as you see fit. It all boils down to your PHP skills and abilities. If PHP can do it? You can make Zikula do it.



edited 2007-06-18 22:14:56 by randomblink

Deletions:

Web Application Development

Zikula Modules are, at their simplest, Web Applications developed Modularly. When developing a Web App ( or any other kind of app ) you generally would create ALL the pieces you need and then package it together. However, with Zikula, you are given a complete system that your module will ADD TO. The basic system is already built for you. User Management, News Management, Security Development, etc. All you have to build the part of your website that ISN'T already put together.
The nice thing about this, besides the obvious, is that your module can tie into other modules, run on its own, or connect with other websites / packages as you see fit. It all boils down to your PHP skills and abilities. If PHP can do it? You can make Zikula do it.
For my project I am building a Team Roster Management Module for my Roller Girl League Website.
What does that mean? Well, with all good Application Development, we need to define this.
Now I could have this module manage everything for me... users, status, categories of skill / injury, etc. BUT, I am going to ( try to ) cover linking our module in with other modules that I know I will be installing on my site... User, Categories, etc.
What do I want to do with this module?
  1. User Management
    I want to be able to manage my website users / members as Roller Girls, Recruits, Volunteers, etc. Let's go ahead and list out the various functions I think I will need for this to work. I believe I will want to allow the members to manage their own membership status'. This means, I will need to set up some groups when this module installs. This way the League Officers Group can have the 'Zikula Permissions' set to allow them to set Girls as Recruits, or Newbs as well as assign girls to 'League Chairperson' positions. We also need a place for coaches ( of the girls themselves ) to place themselves on Injury Listing.
    This gives the team the ability to manage their own team without requiring a Zikula Guru to do this behind the scenes. I want this site to be userfriendly for the day when I finally am not able to help out ( hopefully because I am making too much money somewhere else ).
    I also need to setup a way for the girls / coaches / refs to mark their game stats. Show how many penalties they have season-long, per game, etc. But I probably should cover that with a Game Management section of my module, so I won't touch it in my User Management area. OR if I really wanted to get crazy, I could build another module... call it Game Management or something, and link to it. For now, that is overkill. I just want the girls to be able to run everything simply. So I will 'manage' the game stats through here.
    • Group Membership: Recruits / Newbs / Roller Girls / Active Roster / Volunteer / League Officers / League Chairs
    • Skater Status: Injury Status ( Minor Injury / Major Injury / Recently Healed ) / Playable / On Roster
  2. Profile Management
    Roller Girls ( and the Team Refs / Coaches / etc. ) need a place to show off and let their adoring public know more about them. I want to allow the girls to put together a little 'My Space'-ish area. Where they can link to personal blogs, photo galleries, etc. Also someplace to put a 'Baseball Card' looking picture for their fans. Just a little area for the girls to put a little somethin ugly out for the world to see.
    • Profile Picture: Upload / Replace
    • Profile Text: Name / Team Position / Team Rank ( Lead Jammer, Pivot, Lead Blocker, etc ) / And some HTML space if they just wanna go crazy with some linkage to other sites and such.
  3. Bout Management
    Roller Girl games are referred to as 'Bouts' and I REALLY want to let the girls track these. One of the nice things is, I could eventually put together another module? Call it Roller Derby Bout Master. Then, I could create an Adminstrator section where you could enter in the URL of other Roller Derby Zikula Websites. Then that Bout Master Module could communicate with those websites Bout Master and you could details, links, etc that are shared between those websites. And, and, and... phew! Yeah, for now... I just wanna give my girls a place where they can list out the details of their bouts... Who they played, where it was played, was it an exhibition bout? ranked bout? practice scrimmage? I also need to give the girls a localized place to manage that bout. hmmmm. I should prolly start planning out an official Bout Master for real. Anyway, let's just give the girls a place to manage their bouts on a small scale. I figure I can just port these Bout Management functions / capabilities out to my Bout Master Module when I am ready to start development on it.
    • Bout Arrangement: Create New Bout / Edit Bout / Signup Sheet / Roster / Bout Location / etc
    • Bout Management: Volunteer List / Ticket Sales URL / Bout Advertisement / Sponsors / etc.
    • Bout Meetings: Meeting Date / Location / Agenda
Hmmmm. The more I think about it? The more I have come to realize that I need a separate Module to manage Bout Data. Bouts can be huge deals. They need calendars for arranging meetings... ticket sales could be incorporated through a PayPal? module of some sort... Volunteer lists can be crazy to manage on paper... And we could offer a place for volunteers to sign up ( or 'Volunteer' ) right there on the site. Then the Bout Managers could track everything... Volunteer usage, wasted areas of time, To Do Lists, etc. Let's just cover the basics in this module and track the girls and their information. It's a great place to start!



edited 2007-06-18 21:48:41 by randomblink

Additions:
2. Are comfortable with PHP to at least the level where you can edit PHP files without too much worry.
I am also going to assume that you are working with the new 0.8 MS2 Zikula. Phoenix is a great package, but why settle for the old stuff? Anyway...


Deletions:
2. Learned PHP to at least the level where you can edit PHP files without too much worry.


edited 2007-06-18 20:31:37 by randomblink

Additions:
So, we will be developing based on the 'Example' module. This means a certain layout of the directory structure. If you look to the right you should see the directory structure of the Example Module. I will be converting each page of this Module to a linkable page. This way I can adjust each page as needed.

Module Development :: Database Design and Layout


Deletions:
So, we will be developing based on the 'Example' module. This means a certain layout of the directory structure. If you look to the right you should see the directory structure of the Example Module. I will converting each page of this Module to a linkable page. This way I can adjust each page as needed.


edited 2007-06-18 20:20:36 by randomblink

Additions:
<li class='pn_file'>((ModulesExamplePntemplatesExampleAdminDelete example_admin_delete.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleAdminMain example_admin_main.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleAdminMenu example_admin_menu.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleAdminModify example_admin_modify.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleAdminModifyconfig example_admin_modifyconfig.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleAdminNew example_admin_new.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleAdminView example_admin_view.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleBlockFirst example_block_first.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleBlockFirstModify example_block_first_modify.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleInitDelete example_init_delete.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleInitInteractive example_init_interactive.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleInitStep2 example_init_step2.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleInitStep3 example_init_step3.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleInitUpgrade example_init_upgrade.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleUserDisplay example_user_display.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleUserMain example_user_main.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleUserMenu example_user_menu.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleUserRowOverview example_user_row_overview.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleUserRowRead example_user_row_read.htm))</li>
<li class='pn_file'>((ModulesExamplePntemplatesExampleUserView example_user_view.htm))</li>


Deletions:
<li class='pn_file'>example_admin_delete.htm</li>
<li class='pn_file'>example_admin_main.htm</li>
<li class='pn_file'>example_admin_menu.htm</li>
<li class='pn_file'>example_admin_modify.htm</li>
<li class='pn_file'>example_admin_modifyconfig.htm</li>
<li class='pn_file'>example_admin_new.htm</li>
<li class='pn_file'>example_admin_view.htm</li>
<li class='pn_file'>example_block_first.htm</li>
<li class='pn_file'>example_block_first_modify.htm</li>
<li class='pn_file'>example_init_delete.htm</li>
<li class='pn_file'>example_init_interactive.htm</li>
<li class='pn_file'>example_init_step2?.htm</li>
<li class='pn_file'>example_init_step3?.htm</li>
<li class='pn_file'>example_init_upgrade.htm</li>
<li class='pn_file'>example_user_display.htm</li>
<li class='pn_file'>example_user_main.htm</li>
<li class='pn_file'>example_user_menu.htm</li>
<li class='pn_file'>example_user_row_overview.htm</li>
<li class='pn_file'>example_user_row_read.htm</li>
<li class='pn_file'>example_user_view.htm</li>



edited 2007-06-18 20:14:07 by randomblink

Additions:
<li class='pn_file'>((ModulesExamplePnstyleStyle style.css))</li>

Deletions:
<li class='pn_file'>style.css</li>


edited 2007-06-18 20:07:56 by randomblink

Additions:
<li class='pn_file'>((ModulesExamplePnadmin pnadmin.php))</li>
<li class='pn_file'>((ModulesExamplePnadminapi pnadminapi.php))</li>
<li class='pn_file'>((ModulesExamplePninit pninit.php))</li>
<li class='pn_file'>((ModulesExamplePntables pntables.php))</li>
<li class='pn_file'>((ModulesExamplePnuser pnuser.php))</li>
<li class='pn_file'>((ModulesExamplePnuserapi pnuserapi.php))</li>
<li class='pn_file'>((ModulesExamplePnversion pnversion.php))</li>


Deletions:
<li class='pn_file'>pnadmin.php</li>
<li class='pn_file'>pnadminapi.php</li>
<li class='pn_file'>pninit.php</li>
<li class='pn_file'>pntables.php</li>
<li class='pn_file'>pnuser.php</li>
<li class='pn_file'>pnuserapi.php</li>
<li class='pn_file'>pnversion.php</li>



edited 2007-06-18 19:50:48 by randomblink

Additions:
<li class='pn_file'>((ModulesExamplePnblocksFirst first.php))</li>

Deletions:
<li class='pn_file'>first.php</li>


edited 2007-06-18 19:50:26 by randomblink

Additions:
div.pn_floater_box
width: 400px;
height: 300px;
overflow: scroll;
float: right;
border: 2px solid black;
<div class='pn_floater_box'>
<li class='pn_file'>first.php</li>
</div>
So, we will be developing based on the 'Example' module. This means a certain layout of the directory structure. If you look to the right you should see the directory structure of the Example Module. I will converting each page of this Module to a linkable page. This way I can adjust each page as needed.


Deletions:
So, we will be developing based on the 'Example' module.
This means a certain layout of the directory structure.
<li class='pn_file'>first.php</li>
""



edited 2007-06-18 19:28:17 by randomblink

Additions:
<li class='pn_file'>first.php</li>
<li class='pn_folder'>pnlang</li>
<li class='pn_file'>admin.php</li>
<li class='pn_file'>first.php</li>
<li class='pn_file'>init.php</li>
<li class='pn_file'>pnblocks.php</li>
<li class='pn_file'>user.php</li>
<li class='pn_file'>userapi.php</li>
<li class='pn_file'>version.php</li>
<li class='pn_file'>admin.php</li>
<li class='pn_file'>first.php</li>
<li class='pn_file'>init.php</li>
<li class='pn_file'>pnblocks.php</li>
<li class='pn_file'>user.php</li>
<li class='pn_file'>userapi.php</li>
<li class='pn_file'>version.php</li>
<li class='pn_folder'>pnstyle</li>
<li class='pn_file'>style.css</li>
<li class='pn_folder'>pntemplates</li>
<li class='pn_folder'>plugins</li>
<li class='pn_file'>modifier.examplebold.php</li>
<li class='pn_file'>example_admin_delete.htm</li>
<li class='pn_file'>example_admin_main.htm</li>
<li class='pn_file'>example_admin_menu.htm</li>
<li class='pn_file'>example_admin_modify.htm</li>
<li class='pn_file'>example_admin_modifyconfig.htm</li>
<li class='pn_file'>example_admin_new.htm</li>
<li class='pn_file'>example_admin_view.htm</li>
<li class='pn_file'>example_block_first.htm</li>
<li class='pn_file'>example_block_first_modify.htm</li>
<li class='pn_file'>example_init_delete.htm</li>
<li class='pn_file'>example_init_interactive.htm</li>
<li class='pn_file'>example_init_step2?.htm</li>
<li class='pn_file'>example_init_step3?.htm</li>
<li class='pn_file'>example_init_upgrade.htm</li>
<li class='pn_file'>example_user_display.htm</li>
<li class='pn_file'>example_user_main.htm</li>
<li class='pn_file'>example_user_menu.htm</li>
<li class='pn_file'>example_user_row_overview.htm</li>
<li class='pn_file'>example_user_row_read.htm</li>
<li class='pn_file'>example_user_view.htm</li>
""


Deletions:
<li class='pn_file'>((TeamRoster_DIR_pnblocks_first first.php))</li>


edited 2007-06-18 18:57:35 by randomblink

Additions:

Zikula Module Layout

If you need details on 'How to layout the folder structure of a module' then you should check out the developer documentation on module development.
If you look in the 'Value Addons' folder of modules you will see quite a list of modules. Now remember, think of each folder as a separately installable web application. Autolinks, Downloads, Polls, etc. When developing a module, I 'Very Much' prefer to select one of the Example Modules and edit as needed. It helps to layout the basics ( even those files I won't be using ) and organize my thoughts. However, that was in the old Zikula... Phoenix. 0.7.6.2, we are developing this module for 0.8 MS2. We have '3' different Example Modules.
  1. Example : This module seems to resemble the old 0.7.6.2 Zikula Modules the most for me.
  2. ExampleDB? : This module uses some new Zikula DB Commands.
    As much as I LOVE Databases ( seriously, I do ), I think I will shy away from this one because it would mean ALOT more learning.
  3. ExampleObj? : This module uses a new Object Oriented approach. I will DEFINITELY be using this in the future. But since I don't have the time to learn AND develop a module right now? I will not be going in this direction.
So, we will be developing based on the 'Example' module.
This means a certain layout of the directory structure.
<style type='text/css'> li.pn_folder { list-style-image: URL( 'http://community.zikula.org/modules/Downloads/images/icon_folder.gif' ); } li.pn_file { list-style-image: URL( 'http://community.zikula.org/images/icons/extrasmall/filenew.gif' ); } </style> <ul> <li class='pn_folder'>pnblocks</li> <ul> <li class='pn_file'>first.php</li> <li class='pn_file'>index.html</li> </ul> <li class='pn_folder'>pndocs</li> <ul> <li class='pn_file'>changelog.txt</li> <li class='pn_file'>credits.txt</li> <li class='pn_file'>help.txt</li> <li class='pn_file'>index.html</li> <li class='pn_file'>license.txt</li> <li class='pn_file'>rename.pl</li> </ul> <li class='pn_folder'>pnimages</li> <ul> <li class='pn_file'>04B_21__.TTF</li> <li class='pn_file'>admin.gif</li> <li class='pn_file'>admin.png</li> <li class='pn_file'>admin.psd</li> <li class='pn_file'>heading.gif</li> <li class='pn_file'>index.html</li> <li class='pn_folder'>deu</li> <ul> <li class='pn_file'>heading.gif</li> <li class='pn_file'>index.html</li> </ul> <li class='pn_folder'>eng</li> <ul> <li class='pn_file'>heading.gif</li> <li class='pn_file'>index.html</li> </ul> </ul> <li class='pn_file'>index.html</li> <li class='pn_file'>pnadmin.php</li> <li class='pn_file'>pnadminapi.php</li> <li class='pn_file'>pninit.php</li> <li class='pn_file'>pntables.php</li> <li class='pn_file'>pnuser.php</li> <li class='pn_file'>pnuserapi.php</li> <li class='pn_file'>pnversion.php</li> </ul>



edited 2007-06-18 16:48:51 by randomblink

Additions:
1. User Management
I want to be able to manage my website users / members as Roller Girls, Recruits, Volunteers, etc. Let's go ahead and list out the various functions I think I will need for this to work. I believe I will want to allow the members to manage their own membership status'. This means, I will need to set up some groups when this module installs. This way the League Officers Group can have the 'Zikula Permissions' set to allow them to set Girls as Recruits, or Newbs as well as assign girls to 'League Chairperson' positions. We also need a place for coaches ( of the girls themselves ) to place themselves on Injury Listing.
This gives the team the ability to manage their own team without requiring a Zikula Guru to do this behind the scenes. I want this site to be userfriendly for the day when I finally am not able to help out ( hopefully because I am making too much money somewhere else ).
I also need to setup a way for the girls / coaches / refs to mark their game stats. Show how many penalties they have season-long, per game, etc. But I probably should cover that with a Game Management section of my module, so I won't touch it in my User Management area. OR if I really wanted to get crazy, I could build another module... call it Game Management or something, and link to it. For now, that is overkill. I just want the girls to be able to run everything simply. So I will 'manage' the game stats through here.
    • Group Membership: Recruits / Newbs / Roller Girls / Active Roster / Volunteer / League Officers / League Chairs
  • Profile Management
    Roller Girls ( and the Team Refs / Coaches / etc. ) need a place to show off and let their adoring public know more about them. I want to allow the girls to put together a little 'My Space'-ish area. Where they can link to personal blogs, photo galleries, etc. Also someplace to put a 'Baseball Card' looking picture for their fans. Just a little area for the girls to put a little somethin ugly out for the world to see.
    • Profile Picture: Upload / Replace
    • Profile Text: Name / Team Position / Team Rank ( Lead Jammer, Pivot, Lead Blocker, etc ) / And some HTML space if they just wanna go crazy with some linkage to other sites and such.
  • Bout Management
    Roller Girl games are referred to as 'Bouts' and I REALLY want to let the girls track these. One of the nice things is, I could eventually put together another module? Call it Roller Derby Bout Master. Then, I could create an Adminstrator section where you could enter in the URL of other Roller Derby Zikula Websites. Then that Bout Master Module could communicate with those websites Bout Master and you could details, links, etc that are shared between those websites. And, and, and... phew! Yeah, for now... I just wanna give my girls a place where they can list out the details of their bouts... Who they played, where it was played, was it an exhibition bout? ranked bout? practice scrimmage? I also need to give the girls a localized place to manage that bout. hmmmm. I should prolly start planning out an official Bout Master for real. Anyway, let's just give the girls a place to manage their bouts on a small scale. I figure I can just port these Bout Management functions / capabilities out to my Bout Master Module when I am ready to start development on it.
    • Bout Arrangement: Create New Bout / Edit Bout / Signup Sheet / Roster / Bout Location / etc
    • Bout Management: Volunteer List / Ticket Sales URL / Bout Advertisement / Sponsors / etc.
    • Bout Meetings: Meeting Date / Location / Agenda
Hmmmm. The more I think about it? The more I have come to realize that I need a separate Module to manage Bout Data. Bouts can be huge deals. They need calendars for arranging meetings... ticket sales could be incorporated through a PayPal? module of some sort... Volunteer lists can be crazy to manage on paper... And we could offer a place for volunteers to sign up ( or 'Volunteer' ) right there on the site. Then the Bout Managers could track everything... Volunteer usage, wasted areas of time, To Do Lists, etc. Let's just cover the basics in this module and track the girls and their information. It's a great place to start!


Deletions:
1. User Management
    1. want to be able to manage my website users / members as Roller Girls, Recruits, Volunteers, etc. Let's go ahead and list out the various functions I think I will need for this to work.
      • Group Membership: Recruits / Newbs / Roller Girls / Active Roster / Volunteer



    2. edited 2007-06-18 16:09:04 by randomblink

      Additions:
      For Zikula specific Module Design Walkthroughs, please refer back to: Module Programming Part 1
I will try to avoid duplicating detailed instructions from there except where I feel clarification is needed or if a point needs to be made. Also, I have never worked with the pnWikki? package, so it will be a little slow going as I learn both this system, and get better re-acquainted with the Zikula Module system.
I am going to assume that you have done the following:
  1. Downloaded and Installed Zikula already.
  2. Learned PHP to at least the level where you can edit PHP files without too much worry.
With those specifications out of the way, we can move on...
Zikula Modules are, at their simplest, Web Applications developed Modularly. When developing a Web App ( or any other kind of app ) you generally would create ALL the pieces you need and then package it together. However, with Zikula, you are given a complete system that your module will ADD TO. The basic system is already built for you. User Management, News Management, Security Development, etc. All you have to build the part of your website that ISN'T already put together.
The nice thing about this, besides the obvious, is that your module can tie into other modules, run on its own, or connect with other websites / packages as you see fit. It all boils down to your PHP skills and abilities. If PHP can do it? You can make Zikula do it.
For my project I am building a Team Roster Management Module for my Roller Girl League Website.
What does that mean? Well, with all good Application Development, we need to define this.
Now I could have this module manage everything for me... users, status, categories of skill / injury, etc. BUT, I am going to ( try to ) cover linking our module in with other modules that I know I will be installing on my site... User, Categories, etc.
What do I want to do with this module?
  1. User Management
    1. want to be able to manage my website users / members as Roller Girls, Recruits, Volunteers, etc. Let's go ahead and list out the various functions I think I will need for this to work.
      • Group Membership: Recruits / Newbs / Roller Girls / Active Roster / Volunteer
      • Skater Status: Injury Status ( Minor Injury / Major Injury / Recently Healed ) / Playable / On Roster


    2. Deletions:
      For Zikula specific Module Design Walkthroughs, please refer back to: Module Programming Part 1
I will try to avoid duplicating detailed instructions from there except where I feel clarification is needed or if a point needs to be made.



edited 2007-06-18 15:49:14 by randomblink

Additions:
For Zikula specific Module Design Walkthroughs, please refer back to: Module Programming Part 1
I will try to avoid duplicating detailed instructions from there except where I feel clarification is needed or if a point needs to be made.


Deletions:
For Zikula specific Module Design Walkthroughs, please refer back to: Module Programming Part 1
I will try to avoid duplicating detailed instructions from there except where I feel clarification is needed or if a point needs to be made.



edited 2007-06-18 15:48:54 by randomblink

Additions:

Team Roster Module Design Walkthrough


Welcome one and all...
I plan on writing this walkthrough as I go along and design this module for a site I am currently 'Postnuking' called Green County Roller Girls. Since I don't know what level of programmer you are currently, I will be making a LOT of assumptions. Mostly I will go along with my flow of writing and teaching, if you have a problem with that? Then please visit the main site's Developer Documentation area and be happy. Otherwise, come along and quit yer sniveling.

Web Application Development


For Zikula specific Module Design Walkthroughs, please refer back to: Module Programming Part 1
I will try to avoid duplicating detailed instructions from there except where I feel clarification is needed or if a point needs to be made.


Deletions:
Testing


Oldest known version of this page was edited on 2007-06-18 15:43:47 by randomblink [ ]

Testing
last edit:
latest author:
Owner: