Friday, May 2, 2014

JQuery Mobile with (Tera)WURFL

http://www.google.co.in/search?q=developing+mobile+interface+with+php&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a&channel=ffl

http://dbapi.scientiamobile.com/wiki/index.php/Main_Page

device detection: http://wurfl.sourceforge.net/  simple class: http://code.google.com/p/php-mobile-detect/
Mobile Interface creation:
  http://jquerymobile.com/
Tera-WURFL from http://stackoverflow.com/questions/2502790/developing-mobile-app-iphone-blackberry-android-for-an-existing-website

http://stackoverflow.com/questions/1848885/where-to-begin-with-smartphone-web-development/1938164#1938164

Fire fox User Agent Plugin

http://techie-buzz.com/tips-and-tricks/emulate-mobile-browser-in-firefox.html

Other tools

http://sixrevisions.com/tools/10-excellent-tools-for-testing-your-site-on-mobile-devices/

mobile phone W3 validator

http://validator.w3.org/mobile/

Friday, January 31, 2014

Codeignitor

http://ellislab.com/codeigniter/user-guide/installation/index.html

Installation Instructions

CodeIgniter is installed in four steps:
  1. Unzip the package.
  2. Upload the CodeIgniter folders and files to your server. Normally the index.php file will be at your root.
  3. Open the application/config/config.php file with a text editor and set your base URL. If you intend to use encryption or sessions, set your encryption key.
  4. If you intend to use a database, open the application/config/database.php file with a text editor and set your database settings.
If you wish to increase security by hiding the location of your CodeIgniter files you can rename the system and application folders to something more private. If you do rename them, you must open your main index.php file and set the $system_folder and $application_folder variables at the top of the file with the new name you've chosen.
For the best security, both the system and any application folders should be placed above web root so that they are not directly accessible via a browser. By default, .htaccess files are included in each folder to help prevent direct access, but it is best to remove them from public access entirely in case the web server configuration changes or doesn't abide by the .htaccess.
After moving them, open your main index.php file and set the $system_folder and $application_folder variables, preferably with a full path, e.g. '/www/MyUser/system'.
One additional measure to take in production environments is to disable PHP error reporting and any other development-only functionality. In CodeIgniter, this can be done by setting the ENVIRONMENT constant, which is more fully described on the security page.
That's it!

removing index.php to make SEF URLs using .htaccess

http://stackoverflow.com/questions/10688236/when-i-tried-to-remove-index-php-from-codeigniter-url-i-get-redirect-to-domain

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|assets/)
RewriteRule ^(.*)$ /index.php/$1 [L]
 

Thursday, January 23, 2014

YII framework tutorial for beginers

To create a YII base site
go to the folder where you want to create it
and run the following command
"YIIROOT_PATH\framework\yiic" webapp webAccessible
generates a site stub inside webAccessible folder
PS: YIIROOT_PATH\framework need not be web accessible

first login is
demo:demo
and
admin:admin

config files are in

protected\config folder of the stub
set DataBase details in protected/config/main.php
'db'=>array(
PS:comment default which is sqlite and uncomment the one below it for MYSQL
Gii tool
=======
edit protected\config\main.php
uncomment 3 lines pertaining to gii
set a password
edit 'ipFilters' carefully with the server name you use
http://www.yiiframework.com/doc/api/1.1/GiiModule#ipFilters-detail

or use localhost to use gii

http://localhost/YII_SITE_PATH/index.php?r=gii
pw:Crud password
CRUD files created by Gii will be array("protected".DS."controllers".DS."CRUD_NAMEController.php",
========= "protected".DS."models".DS."CRUD_NAME.php",
"protected".DS."views".DS."CRUD_NAME" /*this is folder*/);


Additionally the following files are created
protected\runtime\gii-1.1.14\CrudCode.php
protected\runtime\gii-1.1.14\ModelCode.php

Changing Field types(eg:text to drop down ) in CRUD forms
============================================
http://jmmurphy.blogspot.in/2013/05/using-yii-model-relations.html
http://stackoverflow.com/questions/17264317/need-help-to-create-crud-screen-with-dropdown-relation-using-yii-framework
Altering crud forms for multiple models in one go
======================================
http://www.yiiframework.com/wiki/384/creating-and-updating-model-and-its-related-models-in-one-form-inc-image/
this also contain example of transaction management $trans = Yii::app()->db->beginTransaction(); $trans->commit(); and $trans->rollback();

Module files created by GII will be in the folder
===================
protected\modules\MODULE_NAME\
they are created based on the templates in framework\gii\generators\module\templates\default.
additionally the file 'protected\runtime\gii-1.1.14\ModuleCode.php' is also created

Modules can be created without gii tool also though not necessary
http://www.linkedin.com/groups/how-create-modules-in-yii-1483367.S.156442090

Setting Module paramenters in protected/config/main.php
http://www.yiiframework.com/doc/guide/1.1/pt/basics.module

http://localhost/YII_SITE_PATH/index.php?r=greeting/index
or
http://YII_SITE/index.php/greeting/index
or even
=======
http://YII_SITE/greeting/index

after creating/editing .htaccess and protected/config/main.php

'urlFormat'=>'path',
'showScriptName'=>false,
//'caseSensitive'=>false, //NEVER SET THIS THIS WILL NOT LET MODULES LOAD

(should also enable mod_rewrite pache module for this to work)
as mentioned in
http://www.yiiframework.com/wiki/214/url-hide-index-php/

contollerId/ActionId
protected/controllers/GreetingController.php
protected/views/greeting/index.php



pass variable from controller to view by altering controller code from
=========================================================
$this->render('index);
to
$this->render('index',array('content' => $this->message));

and use $content variable in view file

you can use $this->message directly in view file as well

using database
--------------------------

http://vimeo.com/18448007

edit protected/config/main.php
comment
'db'=>array(
'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
uncomment the 'db' config of MYSQL below setting database details correctly

gii Model generator
=================
generates
models\Message.php where Message is the name of the model specified in 'Model generator' form

to use message from database
$message = Message::model()->findByPK(4);
$this->message = $message->content;
CRUD Generator
==================
use model name made with "Model Generator" and a suitable controller name

Make user login from db
==================
http://danaluther.blogspot.in/2010/03/yii-authentication-via-database.html (also mentions how to use CRDU in command line,check my addendum also )
http://www.yiiframework.com/doc/guide/1.1/en/topics.auth

Add additional admin users
============================
$auth=Yii::app()->authManager;
//if not already added run the following comment just once
//$role = $auth->createRole('admin', 'administrator');
$record=User::model()->findByAttributes(array('username'=>$username));//Check http://www.yiiframework.com/doc/api/1.1/CActiveRecord for all search functions available for User::model()
$userId = $record->id;
$auth->assign('admin',$userId);
Assigning Biz rule for role 'mcqadder' and checking in script
============================================
return in_array('mcqadder',array_keys(Yii::app()->authManager->getAuthAssignments(Yii::app()->user->id)));

Yii::app()->user->checkAccess('mcqadder')

Usefull functions to get parameter URL etc
=======================================
//Yii::app()->request->getQuery($key, $defaultValue) and getPost() with the same parameters.
//Yii::app()->controller->id and Yii::app()->controller->action->id
//ie(Yii::app()->request->url);
Create YII site url with params
=======================
Yii::app()->createUrl('faq/index', array('cid' => 'asas'))
Redirect
============
Yii::app()->request->redirect(Yii::app()->user->returnUrl);
Login and logut with code
===================
http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#login-and-logout
leave login for a certain period using Cookie
==================================
http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#cookie-based-login

to change site name
==================
edit protected/config/main.php
change 'name' =>

to set title and meta dynamically
==============================
use the following code in ControllerAction
$this->pageTitle = 'New Title';

Yii::app()->clientScript->registerMetaTag('foo, bar', 'keywords');
Yii::app()->clientScript->registerMetaTag('foodescription, bardescription', 'description');
to set default meta values set them in protected/controllers/SiteController.php
Edit overall layout
===============
http://www.yiiframework.com/wiki/249/understanding-the-view-rendering-flow/
edit protected/views/layouts/main.php
Change Contact email
==================
'adminEmail' in protected/config/main.php
Change remove//Default Logins
==========================
http://stackoverflow.com/questions/10772615/yii-framework-remove-demo-admin-accounts
under protected/components you'll find UserIdentity.php, the users and their passwords will be declared in the authenticate function using an array.

To modify top menu
==================
edit protected\views\layouts\main.php
to ad external link or open in target_blank
array('label'=>'Gii', 'url'=>'http://SiteURL','linkOptions'=>array('target'=>'_blank')),

Useful Extensions
===============
GIIX to create CRUD forrelationsal tables
----------------------------------------------------------
http://www.yiiframework.com/extension/giix
https://github.com/rcoelho/giix
https://github.com/rcoelho/giix/blob/master/INSTALL

Running Queries
==============
http://sonsonz.wordpress.com/2011/05/05/executing-sql-statements/
Load Javascript
============
http://www.yiiframework.com/wiki/572/how-to-include-javascript-css/
Events and behaviors
===================
http://www.yiiframework.com/wiki/44/
Admin panel Basics
========================
http://www.yiiframework.com/wiki/33/
another method with yii behavior feature
http://www.yiiframework.com/wiki/63/organize-directories-for-applications-with-front-end-and-back-end-using-webapplicationend-behavior

Auth permissions
===================
http://www.yiiframework.com/doc/guide/1.1/en/topics.auth
http://www.benjaminlhaas.com/blog/installing-yii-users-and-rights-5-steps