new site: Farsi Film Training
new site: Farsi Film Training http://t.co/4WEIzfnd
documentary film non-profit project
FHI 360 required an e-learning site to train young aspiring documentary filmmakers throughout the Middle East. This is a placeholder site put in place until the e-learning site is complete. We built a simple contact form and a lengthy application form – all in Farsi. The Persian text runs right to left and as such we designed our template around that.
URL withheld due to confidentiality.
- Client:FHI 360
- Link:URL wittheld
- Location:Washington, DC
PayPal Payment Module (Joomla 1.5-1.7)
Simple configurable payment module
There are tons of commercial PayPal extensions available, but what if you just want to show a simple payment form that lets customers set the price, add a description and enter their name? This module does just that. Just install it, create a module and select “PayPal Payment”, then configure it as needed and assign it to a module position and menu item(s). You can also configure a return URL and “payment canceled” URL.
This has only been tested on Joomla 1.5 right now but may work fine on Joomla 1.6/1.7. ….. Updated so it now works on Joomla 1.6 and 1.7. OK, I only tested in on 1.7 but they are basically the same thing, and you should be using 1.7 anyway.
We created this module for DC Internationals, a language institute located in Washington, D.C. Check it out.
Each language has its own page and its own customized payment form. This was done by simply copying the module and assigning it to the various pages .. one per page.
Joomla World Conference, San Jose
Joomla World Conference, San Jose – November 16-18 2012 http://t.co/M6Z7CEIN
new site: Mineralogical Society of Washington, DC
new site: Mineralogical Society of Washington, D.C.: http://t.co/hJanamio
Founded in 1942, MSDC meets monthly at the Smithsonian Museum of Natural History, on the national Mall in Washington, DC. Members range from total novices to true experts. We redesigned their site using Joomla, so the society can now edit their pages more easily.
ATM Parts Distributor Site Using Joomla
ACG ATM parts, supplies, and repairs site with custom e-commerce using Joomla 1.7: http://t.co/drC8gZpV.
Features a custom e-commerce component integrating Joomla 1.7 with SouthWare, using web services.
Atlanta Computer Group specializes in ATM parts, supplies, and repairs. ACG uses SouthWare Netlink, for which we developed a custom Joomla application.
They use SouthWare for their enterprise resource planning (ERP) software, together with Netlink. Their previous site ran on a Windows platform, but they did not have a convenient way to editing their own pages while incorporating e-commerce into their site.
Working very closely with staff at Opus Integrated Business Systems (http://www.opus-is.com), we developed a Joomla SouthWare Netlink integration including component, plugins, and modules from the ground up. These use web services (SOAP) to connect to SouthWare / Netlink and display products, categories, pricing, and so on. Opus built the web services and some of the Ajax functionality, while we managed the Joomla integration and consumption of web services. The final site is fully SSL-encrypted and features seamless SouthWare e-commerce with Joomla as the framework and content management system.
Joomla Wins 2011 Packt Award for top CMS
Joomla Wins 2011 Packt Award for top CMS http://t.co/soIhdYPQ
Auto Metal Direct: car parts distributor using Joomla
Auto Metal Direct (http://t.co/1vFZf9ef) is a car parts distributor based in Atlanta. Their new site uses Joomla 1.7, and we built a custom Joomla extension integrating SouthWare e-commerce with Joomla using web services (SOAP). We developed a component, two plugins, and a couple modules. Meanwhile, the customer is now able to edit their own pages with ease, whereas before they had to rely on their webmaster for every change.
Multilingual Moodle
We’re working on two Joomla-Moodle multilingual e-learning sites for a non-profit customer of ours, in English and Persian.
Moodle used to have no built-in translation capability as best I can remember (back in 2003 …) but the text filter plugins in Moodle have changed that. Now you can enter <span> tags with lang attributes and a “multilang” class to enter content as follows:
<span lang="en" class="multilang">Some English text here</span><span lang="fa" class="multilang">Some Persian text here</span>
I purposely didn’t type in Persian above, since it may not display properly for everyone.
The idea with the above is that Moodle will then only show the currently selected language. That works, except for the course names, which are still untranslatable. For sites with just two or three languages you can just include both language versions in the course name, e.g. “Management 101 – Persian Translation Here”. Not ideal, but gets the job done. This was our solution in our 2003 run-in with Moodle and is still our solution today. There probably is a way to do this properly but it would involve much programming and redoing of Moodle’s title fields.
We’ll be using/building a Moodle theme that supports left-to-right as well as right-to-left languages. We are doing the same in Joomla.
We are using Joomdle to connect Moodle with Joomla. This works great for Joomla 1.5 and JoomFish 2. Joomdle has a development version that’s compatible with Joomla 1.7, but does not yet offer multilingual support, so we are stuck with Joomla 1.5 and JoomFish for now.
Joomla by default will show both <span> tags, so the template needs a little PHP love to hide the non-relevant language content. Here is what we came up with, which works great for just two languages:
<?php
//plethora mod
$registry = JFactory::getConfig();
$jfLang = $registry->getValue("joomfish.language", false);
if($jfLang->shortcode == 'fa'){
?>
<style type="text/css">
span[lang|="en"]{
display:none!important;
}
</style>
<?php
}
if($jfLang->shortcode == 'en'){
?>
<style type="text/css">
span[lang|="fa"]{
display:none!important;
}
</style>
<?php
}
//end
?>
We just inserted this at the end of the <head> portion of our template’s index.php file.
Main Swing: Joomla CMS conversion for DC jazz band
New Joomla site for DC jazz band, Main Swing: http://t.co/pYeQ8wwI
Main Swing, a chic cutting-edge jazz band based in Washington D.C., performs swing, bee-bop, blues, latin-jazz, and popular dance favorites. Their previous site consisted of a single-page HTML file. We built a new site using Joomla, allowing their site to grow more easily, and enabling the owners to edit the pages on their own. We also added an mp3 player with playlist support.
Joomla site for electronic health records company
MDI Solutions has a Joomla site, which we revamped and improved for them: http://t.co/3tX02gQo.
MDI Solutions, a provider of electronic health records and data integration services in both North America and the UK, approached Plethora Design for some visual and functional improvements to their existing Joomla site. We implemented numerous design and SEO improvements, including changes to the fonts, menu system, XML sitemap, meta descriptions, and titles, and added links at the bottom of all pages for additional search engine optimization as well as providing an alternate way for users of the site to access information. We also adjusted the home page to accommodate a new page for MDI’s UK market, using modules as home page content.
Washington DC language program site using Joomla
DC Internationals – MESALI uses Joomla: http://t.co/83iAKdV.
MESALI / DC Internationals offers foreign language classes including Arabic, Pashto, Kurdish, Turkish, Urdu, Persian, and many more.
MESALI runs ads on NPR radio (WAMU 88.5 in DC), and approached us for help migrating to a better hosting environment and cleaning up the site overall. We improved the layout and styling of their Joomla site while migrating their tuition payment forms away from their previous host.
We also helped out on SEO. When we got involved they were hardly being found on Google. Now you can Google “arabic classes dc” and find them on page one. That took only a matter of weeks to accomplish.
Joomla 1.5 golf site
Real Deal Golf is a new golf-themed site using Joomla: http://t.co/yKzmFvc.
Realdealgolf.com is a golf community with auctions, deals, and maps. Users can customize their profiles, connect with other users, send private messages, locate other users nearby on the map (using a Google Maps integration), bid on penny auctions, and see daily deals for their area.
Front Page Slideshow Link Problem
Front Page Slideshow Link Problem http://t.co/dhKOgCA. We encountered an issue when trying to save slides that we did not intend to link; they were getting save with “URL” as the link. The solution was to manually enter “#” instead.
Front Page Slideshow Link Problem
FPSS is a great slideshow addon for Joomla, Drupal, and standalone slideshows.
They have a new version for Joomla 1.7, with a much improved interface. When it comes to linking slides, it seems you can choose to display links for all slides, or not. But what if you want links on some slides but not others? In such a case, if the user did not supply a URL, the link will say “http://www.yoursite.com/URL”. You could enter “#” or “javascript:;” as the URL, but one cannot expect non web developers to remember to do this. The user should not be required to take additional action just to NOT link a slide.
We wrote a quick fix for this. Open up the default.php template file for the FPSS layout you’re using. We used JJ-Oobs so we opened up /modules/mod_fpss/tmpl/JJ-Obs/default.php. Right after “foreach($slides as $slide):” insert the following
if($slide->link == 'URL'){
$slide->link = 'javascript:;';
}
We used a “javascript:;” URL rather than “#” because this way if you slideshow is far down the page, clicking it will not take you back to the top of the page … using “#” can conflict with named anchors but “javascript:;” does not.
Joomla site wins Web Award
Our Joomla site for the Vineyard Arts Project (vineyardartsproject.org) won a Web Award in September 2011: http://t.co/UPOsUdp.
Founded in 2007, Vineyard Arts Project is a non-profit, tax-exempt organization whose mission is to foster, develop, and promote the live arts as experiences central to education and the community of Martha’s Vineyard. Its founder and artistic director is Ashley Melone, whose most recent credits include ballet coordinator for Darren Aronofsky’s film Black Swan, for which Natalie Portman won an Oscar.
Having designed their original site in 2008, we were asked to redesign it with an emphasis on upcoming programs. As with the previous site, the site features beautiful photos of dancers in motion, but we opted for a light and airy look: white, light blue, and orange. The layout was built as a custom Joomla template, and is iPad and iPhone compatible.
The original site also used a custom Joomla template, with a Flash home page based on photos of various Vineyard Arts Project dancers. This minimalist gray / orange design was accentuated by the warm colors in the home page photo, and put the viewer’s attention squarely on the content, whether it be photos or text. The new design maintains that, but using a light color scheme and more emphasis on user participation through social media.
Joomla site for community organization
New Joomla site for Council of North County Neighborhoods: http://tinyurl.com/3auwy58
The mission of the Council is to bring together the North County’s neighborhoods to promote communication and cooperation between member organizations of Northern Pinellas County, to foster a sense of community, to provide a forum for member organizations, and most important is to act as a neighborhood advocate for the benefit of our member organizations and to bring a common voice to state and county government including and not limited to the Pinellas County Board of County Commissioners and State Legislators.
Joomla site for systems engineering company in northern Virginia
We designed a new Joomla site for Stratos Solutions in Fairfax, Virginia: http://tinyurl.com/3qklhms.
Stratos Solutions is a professional technical services company specializing in Systems Engineering and Technical Assistance (SETA advisory services) in support of the U.S. Intelligence Community (IC). We designed and built a new site for them using Joomla 1.6, to allow them to edit the site without outside help. We also built a private document sharing tool for them, also using Joomla.
Joomla site for dance center in Texas
We designed a new Joomla site for Protégé Danz Center in Bartonsville, Texas: http://tinyurl.com/5trfepe
This new Bartonsville, Texas dance studio was in need of a content management system and new site in advance of the opening of their studio. We designed a custom Joomla 1.6 template, with Mootools JavaScript effects, image slideshows, embedded video, Twitter and Facebook feeds, and a custom-designed image menu.
new VirtueMart e-commerce site
Tools for All http://tinyurl.com/6b3vbec, an Australian tool supplier. The site uses the Mynxx template for Joomla and VirtueMart.
just added: Aardweg Landscaping
just added: Aardweg Landscaping http://tinyurl.com/3vjpt5m, a landscape designer serving suburban Philadelphia.
Steven Aardweg’s required a new site with full CMS capability and SEO-optimized HTML and content.
We built a Joomla 1.6 site for him, while adding many new pages and a full project portfolio area, to give his completed projects the full attention it deserves. After all, customers looking for a landscape designer will very quickly want to see examples of completed projects. On his previous site, his work did not get the proper emphasis, and this has been rectified. Because Aardweg Landcaping is built with Joomla, it allows for full content management functionality, so that the owner can edit all pages, menus, forms, and modules.
just added: Virginia Martial Arts Academy
just added: Virginia Martial Arts Academy http://tinyurl.com/3kbsuoz, a Joomla 1.6 site.
Virginia Martial Arts Academy offers programs in Tae Kwon Do / Hapkido and Combat Jujitsu for children through adults. Their previous site was difficult for them to maintain, and featured some complicated trial membership forms that we moved into Joomla 1.6 for easier management, using RsForm Pro. The VMAA site also includes some Facebook modules allowing people to ‘like’ the site and add comments.
Moreno Diaz Law Firm – Our first Concrete5 Site!
just added: Moreno Diaz Law Firm http://tinyurl.com/4md4o72
This is the first site we create using Concrete5. Overall it was a good experience.
I feel that the editing process could be streamlined, as slick as it is. Let’s get my basic gripes out of the way:
- Inserting images and file links requires too many clicks. Why not show a “Use this image” or “Use this file” button after the file has successfully uploaded … the way WordPress does? The average user is going to have a hard time locating the file they just uploaded.
- File management should support directories. Maybe you can add those using FTP, but it isn’t possible with Concrete5. Instead, it offers “Sets” as a way of organizing files. After familiarizing myself with this, it worked OK, but I can’t help but worry that I am potentially overwriting existing files. Using directories allows me to know exactly where files are. It is the conventional approach, and using conventions is one sure-fire way of ensuring usability, even if it isn’t as slick as Sets. A first-time editor shouldn’t have to learn a new method of organizing files: use the conventions that people know … files and directories.
- Saving a page takes two clicks; Exit Edit Mode, and then Publish. Why not simple show a simple Save button showing a friendly icon of some sort, and save a version of the page automatically? Currently, you are presented with a screen asking you to name the version of this page. It’s great that versioning is built in, but it should be as painless as possible. In my opinion, a timestamp should be sufficient for the version name.
- Blocks are easy to use, and saving blocks for reuse is easy too, using the “Add to Scrapbook” feature. Unfortunately, these blocks do not function the same way as Drupal blocks or Joomla modules. When you insert a Concrete5 block from your Scrapbook and then want to edit the block once and have it update on multiple pages, it’s a no-go. You will need to edit it in place on one of your pages, then re-save it to your Scrapobook, then remove the previously inserted blocks from your pages, and finally re-insert the block from your Scrapbook. This is a severe limitation in my opinion, which will limit Concrete5′s usefulness on larger sites. Imagine having a block assigned to a few dozen pages. Who wants to reinsert a block that many times?
Please note that my comments are based on a default configuration using Concrete5. Perhaps some of these issues can be overcome with modifications, but I think that is beside the point. I do still think it is a great content management system for “brochure” sites of perhaps up to a dozen pages, but would not yet consider it for any larger-scale content management. For that I will stick with Joomla and Drupal.
Fixing Itemids for Joomla / K2's tag view
This article is about K2, which works with Joomla.
We created menu items pointing to “generic” tag views. Each tag has its own Itemid, which is fine. However, when you click on “read more” for any of the items on the generic tag page, the ‘read more’ link uses the default K2 Itemid rather than the Itemid of the current page / menu item. This does seem like a bug to me. The read more links should use the Itemids of the current page or at least the menu item that brought the viewer to that ‘read more’ link.
In our case, K2′s default Itemid is 17 (as set in the menu). We also have a menu item for a tag view, with an Itemid of 37.
The ‘read more’ URLs should have been in this format:
index.php?option=com_k2&view=itemlist&layout=generic&tag=Health%20Care&task=tag&Itemid=37
.. but were showing up as:
index.php?option=com_k2&view=itemlist&layout=generic&tag=Health%20Care&task=tag&Itemid=17
We have written a small override that solved this for us, since I could find no other way to solve this. We dislike core modifications but in this case it seemed to be the only way:
In /components/k2/models/item.php around line 62 (search for “read more link” .. it should be the first one), add this:
//mod to replace K2 Itemid with current page’s Itemid.
if(JRequest::getVar(‘Itemid’) && JRequest::getVar(‘layout’) && (JRequest::getVar(‘layout’) == ‘generic’) && JRequest::getVar(‘task’) && (JRequest::getVar(‘task’) == ‘tag’)){
//MAKE SURE TO CHANGE “Itemid=17″ TO WHATEVER ITEMID YOUR K2 USES:
$link = str_replace(‘Itemid=17′,’Itemid=’.JRequest::getInt(‘Itemid’),$link);
}
//end
EventList Twitter Plugin Updated
Twitter has switched to oAuth authentication, meaning that instead of the plugin using your login and password, it will use a series of keys and secret words. It also means the old versions of the plugin will no longer work. Users should uninstall the previous version (making a note of their settings), and install the new version. Get the new 1.6 version here. (plugin version 1.6, for Joomla 1.5 … not Joomla 1.6 which is still in beta!!).
Impressions of Joomla 1.6 Beta 3
Well, Joomla came out with another 1.6 beta, and it has certainly come a long way. I remember testing a 1.6 beta two years ago. Here are some highlights;
Access Level Control (ACL)
It now features a robust ACL system, though some of the inheritance rules will take some getting used to. This is often cited as a feature Drupal has and Joomla lacks, but soon enough that will be a moot point. From my understanding there will be just one more beta in about two weeks, and then it should be time for 1.6!
Nested categories
Joomla always suffered from a rigid approach to categorization, with Sections and Categories. A section could contain categories, but there could be no sub-categories. This long-running annoyance has finally been been vanquished with Joomla 1.6. It uses only categories (no more sections!), and they can be nested as deeply as you want. I’m sure at some point someone will nest a category 666 levels down, and run into a terrible bug there … but in theory it should be fine, because a category would simply be assigned to a parent category .. the number of sub-levels should have no bearing on it.
Drupal has of course supported nested categories for a long time, where they are called Taxonomy. I think Drupal’s Taxonomy is still more advanced than Joomla 1.6′s category system, but for many, perhaps most users, just having nested categories is en0ugh. Those who want to do more advance PHP magic will naturally be more inclined towards Drupal anyway, and to words like Taxonomy.
The elimination of Joomla’s sections does mean that template code that relies on section IDs will have to be changed to be 1.6-compatible. It will have to check for category IDs instead. It also opens up an interesting possibility of (for example) using a database query to select only those categories that are nested within the current category. That could come in handy in displaying category ‘blogs’ or headlines in a more automated fashion than creating menu links. And speaking of menu links;
Menu Management
Joomla’s menu management has gotten very slick;
- Changing the menu type is now faster.
- Much more control over the menu items: meta data, page titles, robot rules, page class styling, menu link title & CSS attributes.
- Module assignment from a menu item. You can still assign modules to menu items, but now you can also do this from the menu item itself, rather than having to edit the module separately.
- Batch processing multiple menu items
- Language filtering; show your menu item only for certain languages, or for all of them. Would be nice if you could select several languages and hide it on others, but that may be coming.
- Set template style
Redirect manager
Joomla 1.6 has a new component for managing URL redirects. Presumably this writes to the .htaccess file and created a 301 redirect.
Banner Manager
This is not too different from the 1.5 version, but features “Tracks”, which tracks clicks and impressions in date-filterable and CSV-exportable fashion. Finally we will be able to do some more robust reporting.
I am however baffled that banner clients still have no way to log in and view their banner’s statistics. I think most clients would want that, and offering that ability will help site owners gain more advertisers.
I wrote a Joomla 1.5 hack that got around this by using the “alias” field of the banner client to hold a username. That allows us to associate a banner client with a username, and then we can use that to display banner statistics to a given Joomla user (and only that user). Looks like I will have to port that hack to 1.6. Sigh.
Client login for Joomla 1.5 banner component
For the longest time I have been frustrated that the standard banner component doesn’t let banner clients login and view theirbanner statistics. I had been using OpenX but it is a resource hog and is really overkill when all I want is to be able to show a client how many clicks they’ve had so far. I don’t want them to just take my word for it.
Well, after trying out various solutions besides OpenX, I thought to myself 2 hours ago, “why can’t I just use Contact field in thebanner client area and enter a Joomla username, and then write a custom model for com_banners to display the statistics if the current Joomla user is the same as the one listed as the contact for a client?”
So that’s what I did. It is actually two queries. #1 checks the current username and selects all clients with that username (should be just one .. I limited it to one in the query), and selects the correct cid (client id). #2 selects all active banners for a given cid and spits them out, showing the banner, clicks, impressions, and CTR. I also added in some custom HTML to display a PayPal button … ideally this should be done in a View, not a Model, but the Banners component doesn’t seem to follow the MVC structure 100% so I didn’t either.
I did have to modify a few other files. Here are my modifications – this is on Joomla 1.5.18 but should work for any 1.5 release.
It’s as easy as 1-2-3;
1.
/components/com_banners/controller.php:
Add this after the end of function click():
2.
/components/com_banners/bannerstats.php
This is a new file – containing this code:
// Create the controller
$controller = new BannersController( array(‘default_task’ => ‘bannerstats’) );
// Perform the Requested task
$controller->execute(JRequest::getVar(‘task’, null, ‘bannerstats’, ‘cmd’));
// Redirect if set by the controller
$controller->redirect();
3.
/components/com_banners/models/bannerstats.php
This is a new file containing this code:
// Check to ensure this file is included in Joomla!
defined(‘_JEXEC’) or die( ‘Restricted access’ );
$document = &JFactory::getDocument();
jimport( ‘joomla.application.component.model’ );
jimport( ‘joomla.application.component.helper’ );
/**
* @package Joomla
* @subpackage Banners
*/
class BannersModelBannerstats extends JModel
{
function bannerstats(){
$banneruser = & JFactory::getUser();
$dbgetclient = &$this->getDBO();
echo “<h2>”.$banneruser->name.”‘s Ads</h2>”;
echo “<p>Already a customer? If your ad is about to reach the paid for number of clicks, you can make another payment using this button:</p>”;
echo ‘<form action=”https://www.paypal.com/cgi-bin/webscr” method=”post” target=”_blank”>
<input name=”cmd” value=”_xclick” type=”hidden”>
<input name=”lc” value=”US” type=”hidden”>
<input name=”business” value=”youremail@yourdomain.com” type=”hidden”>
<input name=”pal” value=”4UXZK24C297M6″>
<input name=”item_name” value=”The name for this transaction” type=”hidden”>
<input src=”/images/x-click-but01.gif” name=”submit” alt=”Make payments with PayPal – it\’s fast, free and secure!” border=”0″ type=”image” width=”62″ height=”31″>
<br>
‘;
$dbgetclient = &$this->getDBO();
echo “<h2>Active ads for: “.$banneruser->username.”: </h2>”;
$getclient = “SELECT cid FROM #__bannerclient WHERE contact=’”.$banneruser->username.”‘ LIMIT 1″;
$dbgetclient->setQuery( $getclient );
$getclientresult = $dbgetclient->loadObjectList();
for($i = 0; $i < count($getclientresult); $i++) {
$cid = $getclientresult[$i]->cid;
//echo “cid: “.$cid.”<br />”;
}
$dbgetbanner = &$this->getDBO();
$getbanner = “SELECT * FROM #__banner WHERE cid=”.$cid.”";
$dbgetbanner->setQuery( $getbanner );
$getbannerresult = $dbgetbanner->loadObjectList();
for($i = 0; $i < count($getbannerresult); $i++) {
echo “<img src=’”.JURI::root().”images/banners/”.$getbannerresult[$i]->imageurl.”‘ border=’0′><br />”;
echo ‘URL: ‘.$getbannerresult[$i]->clickurl.’<br />’;
echo ‘Clicks: ‘.$getbannerresult[$i]->clicks.’<br />’;
echo ‘Views: ‘.$getbannerresult[$i]->impmade.’<br />’;
echo ‘CTR (clickthrough rate): ‘.number_format((100*($getbannerresult[$i]->clicks)/($getbannerresult[$i]->impmade)),2).’ %<hr />’;
}
}
}
?>
You can then create a link in the User Menu pointing to index.php?option=com_banners&task=bannerstats.
It will detect the current logged-in user’s username, check the “contact” field of the banner clients, and select the active banners for that client. Needless to say, the contact field should contain that person’s username and nothing else, or it will not work.
In the future maybe there can be a special field allowing us to choose a username or enter one, instead of using the Contact field which is not really meant for that. I had considered making this a separate component, but it is really something I would like to see become part of the regular com_banners component.
Feedback is welcome – as far as I can tell this is secure and works, but others may have a better idea about that.
