joomlacloud

  • I am currently refactoring my whole PHP code, interfaces, abstract classes, default implementations, factories and a lot of tricks in code will  make joomlacloud maybe the  more advanced  PHP code I&39;ve ever written.
    Concepts are emerging, code is lot less hard coded than 20 lines of PHP (which may also work well)

    • Scanner is responsible for returning a subset of data: can be the whole site, the current article etc...many implementations can be used and or created
    • Analyzer is responsible for analyzing words and take them or not into account: based on length, dictionary etc...
    • Limiter is responsible for limiting size of collection: the top 20, only the first 100 words, sorting etc...many implementations can be used and or created
    • Tokennizer is the process of transforming a list of words into a list of token, etc...many implementations can be used and or created
    • Plugins are responsible on how the list of words are written or displayed, .etc...many implementations can be used and or created
    • Caching factories to save mips on the server...

    This make the code more complex to develop but also a lot  more easy to read or extends...

    • ??? I am aware of a "Division by Zero" exception on 2 hostname. While I can not explain it, I am still inverstigating on it.Contact me if You have this problem.
      As usual it work locally (WinXP) and on www.waltercedric.com (Linux SuSE)
    • NEW: Add more css type from 1 to 40 for having more size in tagcloud, add a normalize() CSS name method in class superCloudEngine
    • BUG: CSS editor was always editing the same css: joomlacoud an not the one choosen by user.
    • BUG: Change default title in english.php instead of "TagCloud of www.waltercedric.com" replaced with "Please edit this Title in Edit General Language"
    • BUG: Blacklist dictionnary was always going  to the english version not to your local if it exist.
    • NEW: Use 3 cache directory, one for component, one for module, one for mambot,  so you can empty cache of one of these without loosing others data
    • NEW: Add a manual oh how to link component to a menu entry
    • NEW: Module detect if component is installed or not and warn user instead of crashing.
    • NEW: Add creation date and next refresh date at the end of tagcloud -> can be switch off by setStatisctics=false
    • NEW: Format of creation date can be choosen by user
    • TODO: Need a CSS specialist to create great CSS !
    • TODO: Relationship plugin not available/working on it
    • TODO:: propose Google adSense search as option when user click on a tag
  • I am currently polishing the admin panel and testing the installer.

    I've get rid of my own caching mechanism in favor of the one integrated in Joomla. I think it is now time to invest power into looking in Joomla API to avoid loosing time implemeenting basic functionnalities...

    JoomlaCloud version 1.0.0 has been released now (both in download and at Joomla Forge) and is up and running on this site: see the top menu entry "TagCloud"

    JoomlaCloud is the FIRST component to bring tag clouds to Joomla!

    A Tag Cloud is a text-based depiction of tags across a body of content to show frequency of tag usage and enable topic browsing. In general, the more commonly used tags are displayed with a larger font or stronger emphasis. Each term in the tag cloud is a link to the collection of items that have that tag. [from Wikipedia]

    Your feedback is welcomed, You can submit me interesting CSS, languages translations, ideas...

    next release will be OpenComment 1.0.0 ;-)

  •  You can see below the output of the first  2 plugins of JoomlaCloud, the plugins has scanned my online content (17000 unique words found)

    core 1
    CSS driven
    output like www.tagcloud.com
    core 2
    No CSS
    Changing font height


    What it can do
    • Do not count words found in a dictionary,
    • Do not count words less than XX character,
    • Do not display words which have less than YY occurences,
    • Limit number of words displayed to ZZ,
    • Separator between word is configurable,
    • CSS driven,
    • Database caching (primary),
    • Editor for CSS, Language, dictionary for both engine and core.
    • Display Tag cloud result when component is linked in a menu
    What must be done before a release
    • The cache mechanism has to be better design, it only able to store a Tag cloud  site wide, it must take section and categoryid, itemid into account
    • Create a mambot which will scan content of articles readen and store it in database for efficiency (Prio 2)
    • Create a simple module to display the sitewide tagcloud (Prio 1)
    • BUG (discovered by CS): scanner classes were not using generic database and tablename prefix. An empty dataset of words has trigger a division by 0...the right way is to use the __ prefix when building a SQL statement....

    Version has been released in my download section, at joomla forge, and at demo.waltercedric.com (see it live running and change settings in admin panel)

    By the way, Joomla forge host now more than 943 open source projects, and has more than 22537 registered users :-)

  • I've tried to design a logo for my new component. The code (Engine) is ready. I hope to release it for beta testing soon...

    Status:

    1. Cache support in days: Tag cloud will only be generated each XX days
    2. Localization, engllish and french inside.
    3. Locale Dictionnary to omits words when couting occurences, do not count words less than
    4. Display some statistics: word counting...
    5. Full Object Oriented
    6. Ouput plugin support to allow different Tag cloud output design

    But no admin panel (I hate creating them, need way too much time)

  • The code is now working with an advance caching mechanism (a recommended feature since TagCloud can be overkill on big site).

    I also wrote:
    • A mambot: joomlacloudbot.php which is activated onContent and scan scan onDemandyour articles, site.
    • A module mod_joomlacloud.php displaying onDemand a site wide tag cloud or only a section, category, item
    Dont ask for a release,
    • It will be out when it is ready!
    • I am doing this on my spare night time ;-)
    • The principle of tagCloud is quite easy, can be done in 20 lines of php BUT I wrote my component by keeping in mind the word extensibility!
    Some words on architecture:
    • Analyser classes are responsible for tokenizing text using different strategies, removing certain words based on dictionary, words length too small...etc
    • Scanner classes are responsible for giving back a subset of data of your site
    • Limiter classes are cutting the collection of tokenized words, for example you only want the tag cloud of the most 100 words, or only the least used words or...
    • Cache classes are storing TagCloud result in Database for efficiency, but using file datastore is also possible, or no cache
    • Engine classes are of 3 Types:
    • SuperCloudEngine is giving some basic functionalities for creating a TagCloud
    • PluginsCloudEngine can customized the way links are created in the cloud
    • LazyCloudEngine is using a PluginsCloudEngine and a... cache for efficiency, creating cloud onDemand and saving them to database
    and for a total of 80 files....

    Right now, what is still open:
    • Testing administrator panel, I assume it is 70% correct
    • Testing installer -> only boring, modifying XML by hand
    • Testing module and mambots, maybe some more code to write
    Everything is checked daily in CVS

    For a planning point of view, I will deliver first JoomlaCloud since it has never been released in the wild, then finishing migration of OpenComment to Joomla 1.1 API

     {mosgoogle center}