Welcome Guest, Not a member yet? Register   Sign In
PyroCMS v0.9.7.4 - an open-source modular general purpose CMS

[eluser]Phil Sturgeon[/eluser]
Ooo yes, yes I do! Think you could replace that one? My Fireworks is playing up and cba faffing with GIMP.

To make it multi-lingual I just planned on renaming them to logo-EN.png and using "logo-".DEFAULT_LANGUAGE.".png".

[eluser]Yorick Peterse[/eluser]
[quote author="Phil Sturgeon" date="1246901890"]Ooo yes, yes I do! Think you could replace that one? My Fireworks is playing up and cba faffing with GIMP.

To make it multi-lingual I just planned on renaming them to logo-EN.png and using "logo-".DEFAULT_LANGUAGE.".png".[/quote]

I'll mail it to you later tonight, for now I'm going to write the specification for the Yummy library (Widgets lib for PyroCMS Smile )

[eluser]Phil Sturgeon[/eluser]
Why is it called Yummy? Tongue

[eluser]Yorick Peterse[/eluser]
[quote author="Phil Sturgeon" date="1246904567"]Why is it called Yummy? Tongue[/quote]

Because it tastes awesome, doh Tongue

[eluser]Yorick Peterse[/eluser]
Making a lot of progress with the Yummy library, might even release an early build later tonight. So far it's able to run any given widget, as long as it's actived (which is stored in a database table). The widget table is relatively simply, it has the following structure :

Code:
-------------------------------------------------------------------------------------------------
- ID (int) | name (varchar[50]) | title(varchar[50]) | body(text) | activated(enum[true/false]) -
-------------------------------------------------------------------------------------------------

The ID/activated field goes without saying. The name is the exact name of the widget. If your widget is named "Foo" then the name should be "Foo". The same goes with the class name and the folder name, they all need to match (class names will still work as the first letter is capitalized anyway).

The body field is a text field that contains a JSON string with variables, arrays, pretty much anything. You could actually store anything in this field, it doesn't has to be JSON (but it is recommended).

[eluser]Phil Sturgeon[/eluser]
What exactly will be stored in the body? How do things like RSS feeds get processed, etc?

[eluser]Yorick Peterse[/eluser]
[quote author="Phil Sturgeon" date="1246913103"]What exactly will be stored in the body? How do things like RSS feeds get processed, etc?[/quote]

Anything could be stored in the body, XML, JSON, text, HTML etc. For development purpose I made a simple widget named "Delicious". It doesn't do much besides creating a variable and loading the widget view. Right now it doesn't use the database yet, but if it would it would fetch the following from the body field :

Code:
{"message":"Hello World","author":"Yorick Peterse"}

The widget right now looks as following :

Code:
<?php
/**
* A simple example of a basic Yummy widget
*
* @name     Delicious
* @author     Yorick Peterse
* @link    http://www.yorickpeterse.com/    
* @version     way-too-unstable
* @license    MIT License
*
* Copyright (c) 2009 Yorick Peterse
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*/
class Delicious extends Yummy {
    
    // Run the plugin
    function run()
    {
    // Set the variable
    $array['username'] = 'Yorick Peterse';
    
    // Load a view file for this widget
    $this->display('WIDGET NAME','WIDGET VIEW FILE NAME',$array);
    }
    
    
    // Install the plugin
    function install()
    {
    
    }
    
}
?>

and the view file :

Code:
<div>
    <h3>Welcome &lt;?php echo $username; ?&gt;</h3>
    <p>This is a very simple example of a widget with a view file.</p>
</div>

[eluser]Phil Sturgeon[/eluser]
Great. I'm intrigued to see more :-)

As far as install goes, i'd leave that for now. I plan to offer modules and themes over REST so we may as well handle Widgets in the same way. For now we can just knock up a few useful ones and then any new ones can be added when we have the "addons" module finished.

[eluser]Yorick Peterse[/eluser]
[quote author="Phil Sturgeon" date="1246913841"]Great. I'm intrigued to see more :-)

As far as install goes, i'd leave that for now. I plan to offer modules and themes over REST so we may as well handle Widgets in the same way. For now we can just knock up a few useful ones and then any new ones can be added when we have the "addons" module finished.[/quote]

The install function is required for the widgets to work properly. It doesn't do much besides creating the row required for the widget, but it's still vital.

[eluser]Phil Sturgeon[/eluser]
Ok, well as long as its restricted so random buggers cant set off the install then thats cool.




Theme © iAndrew 2016 - Forum software by © MyBB