1 (edited by KeyDog 2009-01-24 14:39)

Topic: Extension Directory

http://keydogbb.info/img/menu_solution.gif THE DIRECTORY http://keydogbb.info/img/menu_solution.gif


Extension Directory  this is the old one - I'm not adding all the new stuff to this one - please use all in one - above. thanks

now all in one directory with easy filtering

http://keydogbb.info/img/demodirectory.png


filter by date - or just click on column head and newest additions should show at top

http://keydogbb.info/img/demodirectory2.png

Re: Extension Directory

Really nice.

Re: Extension Directory

How does it work? You input the info manually, or does it parse the manifest.xml or something like that?

4 (edited by KeyDog 2009-01-12 14:36)

Re: Extension Directory

It gets them from an xml file - which I input manually in that case.
That's kind of the problem - it would be cool if I knew how to input data into database directly and  then call the data - at the moment it's fine for small lists. But large datasets will be hell smile

---->
dhtmlxGrid is an Ajax-enabled JavaScript grid control with cutting-edge functionality, powerful data binding, and excellent performance with large datasets. The component is easy-to-use and provides great flexibility due to its rich client-side API. dhtmlxGrid supports different datasources, including XML, JSON, CSV, JS array, and HTML table. Since v1.6 grid data can be loaded from custom XML format.

http://www.dhtmlx.com/docs/products/dht … ndex.shtml

Re: Extension Directory

Well.. Looking at the XML here It looks like it would be easy to make a database driven XML sheet.

Something like this would be useful for Punbb, as we no longer use Punres to store extensions and modifications.

Sorry. Unactive due to personal life.

Re: Extension Directory

It's under GPL - open source projects can use it. So we're all good in that respect.

Cool thing with grid is:
you can search by word....
example:
NAME   ---> user inputs    SMILIE   it will get all occurences of that word in the name list dynamically.

If you or another dev can make it easier to input the info - its the future for such easy access db's of styles, extensions and mods/templates...

Re: Extension Directory

KeyDog wrote:

I wanted some feedback on this

Extension Directory

Wow, it's awesome ! Super smile

[no signature]

Re: Extension Directory

just added a paypal button to one of them so one can see visually also how the contributors can have link to their account in there....

thx for pos feedback smile

9 (edited by User33 2009-01-12 16:24)

Re: Extension Directory

I just made a script that will read the unofficial extensions directory and get you the version, author, etc. from the manifest.xml.

Now, I wouldn't know how to get the download links... because not everyone adds ZIPs to their extensions (as far as I know, I'm the only one that does).

The process takes some time because it downloads the whole manifest.xml and parses it, so I'd get the info, store it in a MySQL table and use that stored info to create the XML file that is parsed by that javascript thing. Then, whenever there's a new release you run the update process manually (or use PHP to create a pseudo-scheduled process and update it every 24 hours or so...)

Let me know if you want the script.

10

Re: Extension Directory

That's cool. And I then manually input that data for the meantime?
Fine with me. Someway to get DL no's would be cool. I see official ext have hits counters....
I'm sure it will be easy and fast to switch to zip's on ongoing basis.
Think I'm the only one who started that silly habit smile

11

Re: Extension Directory

Here's the script:

<?
function xml2array($xml)
{
    $xml_parser = xml_parser_create("UTF-8");
    xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($xml_parser, XML_OPTION_SKIP_WHITE, 0);
    xml_parse_into_struct($xml_parser, $xml, $vals);
    xml_parser_free($xml_parser);
    
    foreach($vals as $elem)
    {
        if($elem['type'] == 'open')
        {
            $open[$elem['level']][$elem['tag']] = array();
            $prev[$elem['level']] = $elem['tag'];
        }
        elseif($elem['type'] == 'close' ||$elem['type'] == 'complete')
        {
            if($elem['level']==1)
                $array[$elem['tag']] = (isset($elem['value'])) ? $elem['value'] : (($elem['type'] == 'close') ? $open[$elem['level']][$elem['tag']] : '');
            else
                $open[$elem['level']-1][$prev[$elem['level']-1]][$elem['tag']] = (isset($elem['value'])) ? $elem['value'] : (($elem['type'] == 'close') ? $open[$elem['level']][$elem['tag']] : '');
        }
    }
    
    return $array;
}

$ext_url = 'http://punbb.informer.com/unofficial/punbb-1.3/extensions/';

$html = file_get_contents($ext_url);

if(preg_match_all('/<li><a[^>]+>([^\/]+)\/<\/a><\/li>/i', $html, $matches))
{
    foreach($matches[1] as $ext)
        if($manifest = file_get_contents($ext_url.$ext.'/manifest.xml'))
        {
            $xml = xml2array($manifest);
            unset($xml['extension']['note']);
            unset($xml['extension']['install']);
            unset($xml['extension']['uninstall']);
            unset($xml['extension']['hooks']);
            $extensions[$ext] = $xml['extension'];
        }
}

$fh = @fopen('extensions_info.php', 'wb');
fwrite($fh, '<?php'."\n\n".'$extensions = '.var_export($extensions, true).';'."\n\n".'?>');
fclose($fh);

it creates a file called 'extensions_info_{time()}.php' with all the info. You can then include that PHP file and you'll get all the info as an array.

Here's part of what the 'extensions_info_{time()}.php' file would be:

<?php

$extensions = array (
  'ajax' => 
  array (
    'id' => 'jsbase',
    'title' => 'JS basic framework',
    'version' => '1.0',
    'description' => 'Ads prototype to punbb and it creates some basic calls to display more info about all kinds of things in the forum',
    'author' => 'Maikel Punie',
    'minversion' => '1.3dev',
    'maxtestedon' => '1.3',
  ),
  'akismet' => 
  array (
    'id' => 'akismet',
    'title' => 'Akismet',
    'version' => '1.1',
    'description' => 'Integrates Akismet spam protection into the forum.',
    'author' => 'Garciat',
    'minversion' => '1.3',
    'maxtestedon' => '1.3',
  ),
 ... ETC ...

12

Re: Extension Directory

thx

just a Q:  isn't the difference of the schema of the XMLs - the above creates one array and the one I have created have such different variables a real problem?

example: i have images that i'm making to links etc...

i'm not at a proficiency level to implement the above into what my grid is outputting to be honest smile

13 (edited by User33 2009-01-12 17:37)

Re: Extension Directory

Mine is not an XML, it's a PHP file.

Here's an example of how you use 'extensions_info.php':

<?
include 'extensions_info.php';
?>
<table>
    <tr>
        <th>ID</th>
        <th>Title</th>
        <th>Version</th>
        <th>Description</th>
        <th>Author</th>
        <th>Min Version</th>
        <th>Max Tested on</th>
    </tr>
<?
foreach($extensions as $k=>$v):
?>
    <tr>
        <th><?=$v['id']?></th>
        <th><?=$v['title']?></th>
        <th><?=$v['version']?></th>
        <th><?=$v['description']?></th>
        <th><?=$v['author']?></th>
        <th><?=$v['minversion']?></th>
        <th><?=$v['maxtestedon']?></th>
    </tr>
<?
endforeach;
?>
</table>

and that's how it looks: http://home.garciat.org/test2.php

14

Re: Extension Directory

ok that's cool.
now a bit of trouble I see with that data - from a user perspective

c.  there are loads of different levels of testing on the extensions.... (1.0 SVN, 1.3 SVN, 1.3 Beta, 1.3dev
b. several version number formats (0.9a, 1.0b.1, 1.0, 1.0.0 Beta, 0.5a)

Don't you think the directory should contain what works on latest version. I was thinking this directory would be main landing point for someone new, who has DL latest official version.

Should for next versions
- add date of current release
- link to devs page     or
- link to devs documentation thread/post ?

be included in the manifest.xml requirements?

looking at that php output - it just seems like it needs human filtering before putting in directory?

just some thoughts...

15

Re: Extension Directory

Well, yeah... there's not enough info about the extension and author on the manifest.

For now, I guess you should do it manually.

16

Re: Extension Directory

ok will do
big_smile

just added your and rich pedleys webpage with extensions to the database... like that anyone downloading will deffo find you ....

17

Re: Extension Directory

Im not saying we will officaly use this, but we will give it some though. I dont know what the other developers idea's are on this. We might need something on a bigger scale.

However if you are willing to support this on your own, then we will encouge users to look at it.

Sorry. Unactive due to personal life.

18

Re: Extension Directory

yeah, sure - see what they think

i intend to support it. if i did decide to drop it i'll give you plenty of warning time and the .xml ...

sound fair?

19

Re: Extension Directory

The appearance and general functioning appear quite nice. smile

It's sod all use if someone has javascript disabled, however. There always has to be a fallback method inplace.

20

Re: Extension Directory

They can send me a self-addressed stamped envelope and I'll send them the extensions on some floppy disks big_smile  (kidding)

after reading this
http://www.xs4all.nl/~sbpoley/webmatters/whatnojs.html

I do see your point,
then again there is no list catering to those people in the first place with all extensions now....

but agreed an official list needs a fallback...

what format do you suggest?

Re: Extension Directory

First, GREAT effort setting this up
Second, it would be nice if each listing contained a link to the relevent release topic here in the forums.

22

Re: Extension Directory

Thx for pos feedback.

I did intend to do that - using the information symbol in that last column as the link.
Just couple of practical questions:
Some releases are under a topic like Extensions by XYZ
This issue should be adressed for the future so that each release of an extension gets its own product page like you'd be familiar with from software sales sites. punbb.org/ext/divx_player   <--  something like that
You'd have one clean page with links and information.
Kind of like a sourceforge thing, so that even if dev stops updating etc the post isn't just deleted or links killed - like I came across at Flux.
Also it would look more professionel, i.e. cleaner and easy for people who aren't following threads or wanting to read though several pages of comments...
You'd have a bugs section, features, faq etc...

That's what we need aswell don't u think? A two-fold approach - directory (1) extension/style/template pages (2)

23

Re: Extension Directory

KeyDog wrote:

what format do you suggest?

Provided you can see all the same information and access the downloads, specifics are fairly irrelevant. Your coding abilities will dictate that more than anything else. smile

24

Re: Extension Directory

@MattF: ok

@anyone

How is this stuff visible on

iPhones
HTC's

and so on?
does it show - do these people even need to see that ?

25

Re: Extension Directory

added a further 3 extensions by YonasH to directory

now counting 34

chrs.