In preparation of 4.1 stable release of Agile Toolkit

Thursday, July 7th, 2011|Uncategorized|by Romans|2 Comments

We listen to your feedback and are cleaning code, adding PHPDOC support and more stuff. The “master” branch in github was switched to a version in preparation of 4.1 release.

If you were using 4.0 and are not quite ready to update then checkout “4.0″ branch from git. If you were on 4.1-beta1 then you are welcome to try “master”. If it produces errors, you can fall back to “4.1″ branch.

Of course we would love if you use “master” and gave us feedback on the errors you encounter. There are few minor thing to consider if you are switching from 4.1b1 though. Official upgrade guide is not out yet, hence the blog post:

Read more

Learn how to use Object Oriented Programming in PHP

Sunday, July 3rd, 2011|Beginner tips, Misc|by Romans|

Whenever I come over object-oriented tutorial or a book, it always uses either Java or C++. I have never found this a big problem, but there are many people out there, who are NOT familiar with those languages and can never find a good tutorial to Object Oriented Programming.

Another problem is that PHP has no built-in interface with the user. You need to generate HTML and it’s not easy to do so, that’s why it makes any object-oriented examples useless or silly.

I want to give you the PROPER example of a good object-oriented paradigms in PHP language. At the end I will explain how this Geometrical universe can be used for Web Software programming:

Read more

Agile Toolkit Translations

Friday, May 20th, 2011|Uncategorized|by Romans|

I wanted to tell thanks to those few, who have offered to translate Agile Toolkit into different languages. Verison 4.1 is coming with multi-lingual support and we will also work with volunteers to translate documentation on this website.

If you are willing to help us out with translations as we prepare documentation, you need just the knowledge of Git. www.agiletoolkit.org is built on the framework itself, so it separates content from the logic. Here are the steps for you to get startedt:

  1. open https://github.com/atk4/atk4-web and click “fork”. You will get new repository such as yourname/atk4-web
  2. clone repository to your local computer
  3. checkout devel
  4. git submodules init
  5. git submodules update
  6. modify main.php by adding ‘pl’ argument for app creation. This sets locale.
    open http://localhost/?page=learn/install/lamp header and first paragraph should be in polish.
  7. inside locale/pl you will have 3 directories. ‘lib’, ‘page’ and ’templates’. Copy only the content you are going to change from templates/jui -> locale/pl/templates
  8. commit back to your repository.
  9. if directories do not exist for your language, then you can create them easily.
  10. create “pull request” once you have added some pages.

Follow on the files as they are being changed. We are doing severe improvements on our front page and introduction. Look into lib/Sitemap.php to see how documentation is going to be laid out.

 

Huge thanks to those helping us out and making Agile Toolkit more accessible to more people!

What’s coming up in Agile Toolkit 4.1?

Saturday, May 14th, 2011|Brainstorming, Core changes, Version 4|by Romans|5 Comments

Sneak peak into 4.1 which is scheduled to be released this summer.

  • New Theme. Your web application will look even sexier by default. We will also keep current “jui” theme. Both themes are using jQuery UI CSS framework and 960 grid system, but will also allow full-width applications.
  • Possibly improved template parser. I’ve run couple of tests on real-life application. Agile Toolkit is quite fast. The component with takes most of the time is SMlite (our template parser). By rewriting it more efficiently we might be able to improve raw performance of applications. There are still few bugs to iron out. (If you are really good with regular expressions, please contact me, I could use some help!)
  • Testing for the rest of us. Honestly, I think other testing suites for PHP suck. So we’ll have our own. Writing test scripts will be as easy as adding 5-line function. You will see a visual console right away which will automatically capture output, will save testing results into database with revisions and additional information, will allow to convert unit tests into speed-tests and memory consumption tests. It will also have some other nifty features.
  • PDO support (although we will primarily support only MySQL)
  • Model to SQL convertor.
  • New add-on: Sexy password checker based on crack-lib. To add: $field->add(‘StrengthChecker’,null,’after_field’);
  • New add-on: Infinite-add form
  • New add-on: AJAX CRUD
  • Filestore_Image: Support for image uploads, automates resize, crop and other management.
  • SEO goodies: Simpler way to customize meta-tags

Many other enhancements, listed here: http://agiletoolkit.org/whatsnew or in github: https://github.com/atk4/atk4/commits/devel

As you probably know, Agile Toolkit is free to use if you are using it in Open-Source project. We plan to also offer it for free for personal, education and non-profit projects. We are also will be giving away commercial licenses to early adopters. If you are already using Agile Toolkit, get in touch with us for a free license.

As our launch draws closer, we will deploy community forum and other resources. Stay tuned by following or subscribing!

Agile Toolkit for Business Survey

Monday, May 9th, 2011|Misc|by Romans|

Please take a moment to fill out our 10-question survey about Web Frameworks in your company.

http://svy.mk/iFkeJn

Sending Email from PHP using Templates

Monday, May 2nd, 2011|Beginner tips, Version 4|by Romans|3 Comments

Agile Toolkit bundles a powerful emailing class. However instead of focusing on adding SMTP support and related features (which are rarely used in live environment anyway) this class focuses on use of Mail Templates and simplifying email sending in general.

[php]
$mail=$this->add(‘TMail’);
$mail->loadTemplate(‘test-mail’);
$mail->setTag(‘name’,'John’);
$mail->setTag(‘product’,'VAC-293′);
$mail->setTag(‘link’,$this->api
->getDestinationURL(‘./register’,array(‘code’=>’123′))
    ->useAbsoluteURL());
$mail->send($email);
[/php]

See this code in action:

http://codepad.agiletoolkit.org/tmail

AJAX Web Form for Adding Multiple Records to MVC Database

Saturday, April 30th, 2011|Beginner tips, Version 4|by Romans|2 Comments

Some time ago a PHP developer asked me – “How to add 50 employees though a single page”. Building a fluid data-entry web form which would allow adding unlimited records to the database without making user wait is not an easy task and normally require knowledge of JavaScript, AJAX, jQuery, PHP, HTML and CSS.

This blog post describes a simpler way to implement this complex task. I will be taking advantage of a Simple PHP UI Framework — Agile Toolkit. This will help me focus on the UI logic of the form instead of technical implementation and get job done within a very short time and little effort.

I set a number of goals in front of me, which are impossible to achieve with plain PHP or even with others, more complex frameworks. This example also helps to illustrate approach of Agile Toolkit in building Web UI, creating re-usable code and using AJAX. My goals are:

  • Code must be no longer than 50 lines of code, no custom HTML or JavaScript;
  • Must look very simple to read and understand;
  • User can continue entering data without stopping using Tab key and keyboard only;
  • Data must be submitted and saved automatically;
  • Must work with any Model therefore can be used for purpose of adding any type of record;
  • Must never reload page or make user wait. Should work even on slow internet connection;
  • Resulting code must be re-usable and customizable.

Agile Toolkit was a great help. I successfully completed all the requirements and produced a clean data entry screen. In fact, the solution works so great that I turned it into official add-on. Any user of Agile Toolkit can take advantage of this add-on by writing:

[php]
$this->add(‘InfiniteAddForm’)->setModel(‘Employee’);
[/php]

To find out more and download Agile Toolkit for free, open-source version, visit http://agiletoolkit.org. If you are curious about how I solved this task, continue to read this article.

Read more

Comparison of Propel, Doctrine and Agile Toolkit ORM

Sunday, April 24th, 2011|Brainstorming, Version 4|by Romans|4 Comments

In this article I am comparing many different aspects of the 3 different ORM systems. ORM means Object Relational Mapping and it is a way to present database data in object-oriented way. Agile Toolkit is a full PHP UI Framework but it comes with a built-in ORM (Object Relational Mapping). Propel and Doctrine are the two most popular ORM engines for PHP today. In this article I am comparing many different aspects of the 3 different ORM systems.

Read more

What needs to be done for 4.0.4 version

Friday, April 22nd, 2011|Brainstorming, Version 4|by Romans|

We are looking forward to releasing 4.0.4 version and are thinking what kind of features people need in a stable branch. Currently we would like to add:

  • Question feed from StackOverflow embedded into example app
  • Issue feed from github.com
  • Back-port support for setModel() from 4.1 branch

Are there anything else what you are willing to see in next STABLE release. Our priority is stability of the code and compatibility for existing 4.0 software, but please comment and suggest.

Adding Twitter button to AJAX page

Monday, April 18th, 2011|Beginner tips, Version 4|by Romans|1 Comment

Twitter button is simple to add if you follow official guide. The code produced by the guide would contain a regular link and a JavaScript include. Executing the code would make the button look cool. Here is a sample code:

<a href="http://twitter.com/share" data-count="vertical" data-via="atk4">Tweet</a>
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>

Unfortunately this code wouldn’t work if you will try to put it on the AJAX page. AJAX will not allow you to include script from a different domain name for security reasons.

A common way to get around this restriction is to place file locally. However, twitter may decide to change the file, and we will end up with outdated copy. We need to build a proxy instead.

In terms of Agile Toolkit, the proxy would be implemented as a class, which you add to the page. The syntax of such a class would be as straightforward as this:

[php]

$this->add(‘Controller_JSProxy’)
->proxy(‘http://platform.twitter.com/widgets.js’);

[/php]

This adds include to the current page from the specified URL. Below is the implementation of the proxy controller.

[php]

class Controller_JSProxy extends AbstractController {
function proxy($url){
$this->owner->js(true,’$.atk4.includeJS("’.
$this->api->getDestinationURL(
null,array($this->name=>1)).’");’);
if(isset($_GET[$this->name])){
readfile($url);
exit;
}
}
}
[/php]