first commit

This commit is contained in:
2025-03-12 17:06:23 +01:00
commit 2241f7131f
13185 changed files with 1692479 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
sfNiftyPlugin Copyright (c) 2006-2007 Alban CRETON (acreton@gmail.com) - Gnetworks (http://www.gnetworks.co.jp)
Nifty Corners Cube Copyright (c) 2006-2007 Alessandro Fulciniti
Nifty Corners Cube is released under the GNU GPL licence (http://www.gnu.org/copyleft/gpl.html)

View File

@@ -0,0 +1,121 @@
= sfNifty plugin =
sfNifty provide some helper to use the '''Nifty Corner Cube''' javascript library (http://www.html.it/articoli/niftycube/index.html) of '''Alessandro Fulciniti'''(a.fulciniti@html.it)[[BR]]
The concept of this library is to '''rounded corners of DOM Elements without images'''.
== Installation ==
* Install the plugin
{{{
$ symfony plugin-install http://plugins.symfony-project.com/sfNiftyPlugin
}}}
* Clear your cache
{{{
$symfony cc
}}}
=== Use the helpers ===
To round corners :
''function nifty_round_elements( $element, $options = "" )''
* $element
'''tag selector'''
- "p"[[BR]]
- "h2"
'''id selector'''
- "div#header"[[BR]]
- "h2#about"
'''class selector'''
- "div.news"[[BR]]
- "span.date"[[BR]]
- "p.comment"
'''descendant selector (with id)'''
- "div#content h2"[[BR]]
- "div#menu a"
'''descendant selector (with class)'''
- "ul.news li"[[BR]]
- "div.entry h4"
'''grouping (any number and combination of the previous selectors)'''
- "h2,h3"[[BR]]
- "div#header,div#content,div#footer"[[BR]]
- "ul#menu li,div.entry li"
* $options
'''tl'''
top left corner
'''tr'''
top right corner
'''bl'''
bottom left corner
'''br'''
bottom right corner
'''top'''
upper corners
'''bottom'''
lower corners
'''left'''
left corners
'''right'''
right corners
'''all'''
(default) all the four corners
'''none'''
no corners will be rounded (to use for nifty columns)
'''small'''
small corners (2px)
'''normal'''
(default) normal size corners (5px)
'''big'''
big size corners (10px)
'''transparent'''
inner transparent, alias corners will be obtained. This option activates automatically if the element to round does not have a background-color specified.
'''fixed-height'''
to be applied when a fixed height is set via CSS
'''same-height'''
Parameter for nifty columns: all elements identified by the CSS selector of the first parameter will have the same height. If the effect is needed without rounded corners, simply use this parameter in conjuction with the keyword none.
* Exemples
{{{
<?php echo javascript_tag( nifty_round_elements( "div#content_div", "big") ) ?>
<?php echo javascript_tag( nifty_round_elements( "div.menu", "top") ) ?>
<?php echo javascript_tag( nifty_round_elements( "div.encart", "small br tl") ) ?>
<?php echo javascript_tag( nifty_round_elements( "h2, h3, div#content" ) ) ?>
}}}
=== Read the complete documentation ===
...of Nifty Library, here : http://www.html.it/articoli/niftycube/index.html
=== Versions ===
1.0.0 => First version
1.0.1 => correcting link bug in niftyHelper.php
1.0.2 => refactoring, use Prototype for adding window.onload events

View File

@@ -0,0 +1,51 @@
<?php
/**
* sfNifty Class Helpers
*
* This file is part of the sfNifty package.
* (c) 2006-2007 Alban Creton <acreton@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
*
* File containing nifty helper functions
*
* @category Plugins
* @package sfNifty
* @author Alban Creton <acreton@gmail.com>
* @license See LICENSE that came packaged with this software
* @version 1.1.0
*/
/**
* Get Js string to round an element's corners.
*
* @param string id of the html element
* @param string rounding options
*
* @return string Js string to round the elements corner
*/
function nifty_round_elements($elements, $options = "")
{
$response = sfContext::getInstance()->getResponse();
$response->addJavascript(sfConfig::get('sf_prototype_web_dir').'/js/prototype', 'first');
$response->addJavascript('/plugins/sfNiftyPlugin/js/niftycube', 'last');
$response->addStylesheet('/plugins/sfNiftyPlugin/css/niftyCorners', 'last');
if(sfNifty::addId($elements))
{
return "Event.observe(window, 'load', function(){Nifty('" . $elements . "','" . $options . "');}, false);";
}
else
{
return "";
}
}
// Compatibility
function nifty_round_div($elements, $options = "")
{
return nifty_round_elements( $elements, $options );
}

View File

@@ -0,0 +1,62 @@
<?php
/**
* sfNifty Class File
*
* This file is part of the sfNifty package.
* (c) 2006-2007 Alban Creton <acreton@gmail.com>
* (c) 2006-2007 Jonathan H. Wage
*
* For the full copyright and license information, please view the LICENSE
*
* File containing class for the sfNifty plugin.
*
* @category Plugins
* @package sfNifty
* @author Alban Creton <acreton@gmail.com>
* @copyright 2006-2007 Jonathan H. Wage
* @license See LICENSE that came packaged with this software
* @version 1.2.0
*/
/**
* sfNifty Class
*
* Class the sfNifty plugin
*
* @category Plugins
* @package sfNifty
* @author Alban Creton <acreton@gmail.com>
* @license See LICENSE that came packaged with this software
* @version 1.2.0
*/
class sfNifty
{
/**
* Elements
*
* @var array
* @access private
*/
private static $elements = array();
/**
* Add an element in rounded list.
*
* @param string $id $id of the html element
* @return bool $bool
*/
public static function addId($id)
{
if(isset(self::$elements[$id]))
{
return false;
}
else
{
self::$elements[$id] = true;
return true;
}
}
}

View File

@@ -0,0 +1,35 @@
/*Nifty Corners Cube CSS by Alessandro Fulciniti
The following classes are added dinamically by javascript,
and their use should be avoided in the markup */
b.niftycorners,b.niftyfill{display:block}
b.niftycorners *{display:block;height: 1px;line-height:1px;font-size: 1px;
overflow:hidden;border-style:solid;border-width: 0 1px}
/*normal*/
b.r1{margin: 0 3px;border-width: 0 2px}
b.r2{margin: 0 2px}
b.r3{margin: 0 1px}
b.r4{height: 2px}
b.rb1{margin: 0 8px;border-width:0 2px}
b.rb2{margin: 0 6px;border-width:0 2px}
b.rb3{margin: 0 5px}
b.rb4{margin: 0 4px}
b.rb5{margin: 0 3px}
b.rb6{margin: 0 2px}
b.rb7{margin: 0 1px;height:2px}
b.rb8{margin: 0;height:2px}
b.rs1{margin: 0 1px}
/*transparent inside*/
b.t1{border-width: 0 5px}
b.t2{border-width: 0 3px}
b.t3{border-width: 0 2px}
b.t4{height: 2px}
b.tb1{border-width: 0 10px}
b.tb2{border-width: 0 8px}
b.tb3{border-width: 0 6px}
b.tb4{border-width: 0 5px}
b.tb5{border-width: 0 4px}
b.tb6{border-width: 0 3px}
b.tb7{border-width: 0 2px;height:2px}
b.tb8{border-width: 0 1px;height:2px}
b.ts1{border-width: 0 2px}

View File

@@ -0,0 +1,300 @@
/* Nifty Corners Cube - rounded corners with CSS and Javascript
Copyright 2006 Alessandro Fulciniti (a.fulciniti@html.it)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
var niftyOk=(document.getElementById && document.createElement && Array.prototype.push);
var niftyCss=false;
String.prototype.find=function(what){
return(this.indexOf(what)>=0 ? true : false);
}
var oldonload=window.onload;
if(typeof(NiftyLoad)!='function') NiftyLoad=function(){};
if(typeof(oldonload)=='function')
window.onload=function(){oldonload();AddCss();NiftyLoad()};
else window.onload=function(){AddCss();NiftyLoad()};
function AddCss(){
/*
niftyCss=true;
var l=CreateEl("link");
l.setAttribute("type","text/css");
l.setAttribute("rel","stylesheet");
l.setAttribute("href","niftyCorners.css");
l.setAttribute("media","screen");
document.getElementsByTagName("head")[0].appendChild(l);
*/
}
function Nifty(selector,options){
if(niftyOk==false) return;
if(niftyCss==false) AddCss();
var i,v=selector.split(","),h=0;
if(options==null) options="";
if(options.find("fixed-height"))
h=getElementsBySelector(v[0])[0].offsetHeight;
for(i=0;i<v.length;i++)
Rounded(v[i],options);
if(options.find("height")) SameHeight(selector,h);
}
function Rounded(selector,options){
var i,top="",bottom="",v=new Array();
if(options!=""){
options=options.replace("left","tl bl");
options=options.replace("right","tr br");
options=options.replace("top","tr tl");
options=options.replace("bottom","br bl");
options=options.replace("transparent","alias");
if(options.find("tl")){
top="both";
if(!options.find("tr")) top="left";
}
else if(options.find("tr")) top="right";
if(options.find("bl")){
bottom="both";
if(!options.find("br")) bottom="left";
}
else if(options.find("br")) bottom="right";
}
if(top=="" && bottom=="" && !options.find("none")){top="both";bottom="both";}
v=getElementsBySelector(selector);
for(i=0;i<v.length;i++){
FixIE(v[i]);
if(top!="") AddTop(v[i],top,options);
if(bottom!="") AddBottom(v[i],bottom,options);
}
}
function AddTop(el,side,options){
var d=CreateEl("b"),lim=4,border="",p,i,btype="r",bk,color;
d.style.marginLeft="-"+getPadding(el,"Left")+"px";
d.style.marginRight="-"+getPadding(el,"Right")+"px";
if(options.find("alias") || (color=getBk(el))=="transparent"){
color="transparent";bk="transparent"; border=getParentBk(el);btype="t";
}
else{
bk=getParentBk(el); border=Mix(color,bk);
}
d.style.background=bk;
d.className="niftycorners";
p=getPadding(el,"Top");
if(options.find("small")){
d.style.marginBottom=(p-2)+"px";
btype+="s"; lim=2;
}
else if(options.find("big")){
d.style.marginBottom=(p-10)+"px";
btype+="b"; lim=8;
}
else d.style.marginBottom=(p-5)+"px";
for(i=1;i<=lim;i++)
d.appendChild(CreateStrip(i,side,color,border,btype));
el.style.paddingTop="0";
el.insertBefore(d,el.firstChild);
}
function AddBottom(el,side,options){
var d=CreateEl("b"),lim=4,border="",p,i,btype="r",bk,color;
d.style.marginLeft="-"+getPadding(el,"Left")+"px";
d.style.marginRight="-"+getPadding(el,"Right")+"px";
if(options.find("alias") || (color=getBk(el))=="transparent"){
color="transparent";bk="transparent"; border=getParentBk(el);btype="t";
}
else{
bk=getParentBk(el); border=Mix(color,bk);
}
d.style.background=bk;
d.className="niftycorners";
p=getPadding(el,"Bottom");
if(options.find("small")){
d.style.marginTop=(p-2)+"px";
btype+="s"; lim=2;
}
else if(options.find("big")){
d.style.marginTop=(p-10)+"px";
btype+="b"; lim=8;
}
else d.style.marginTop=(p-5)+"px";
for(i=lim;i>0;i--)
d.appendChild(CreateStrip(i,side,color,border,btype));
el.style.paddingBottom=0;
el.appendChild(d);
}
function CreateStrip(index,side,color,border,btype){
var x=CreateEl("b");
x.className=btype+index;
x.style.backgroundColor=color;
x.style.borderColor=border;
if(side=="left"){
x.style.borderRightWidth="0";
x.style.marginRight="0";
}
else if(side=="right"){
x.style.borderLeftWidth="0";
x.style.marginLeft="0";
}
return(x);
}
function CreateEl(x){
return(document.createElement(x));
}
function FixIE(el){
if(el.currentStyle!=null && el.currentStyle.hasLayout!=null && el.currentStyle.hasLayout==false)
el.style.display="inline-block";
}
function SameHeight(selector,maxh){
var i,v=selector.split(","),t,j,els=[],gap;
for(i=0;i<v.length;i++){
t=getElementsBySelector(v[i]);
els=els.concat(t);
}
for(i=0;i<els.length;i++){
if(els[i].offsetHeight>maxh) maxh=els[i].offsetHeight;
els[i].style.height="auto";
}
for(i=0;i<els.length;i++){
gap=maxh-els[i].offsetHeight;
if(gap>0){
t=CreateEl("b");t.className="niftyfill";t.style.height=gap+"px";
nc=els[i].lastChild;
if(nc.className=="niftycorners")
els[i].insertBefore(t,nc);
else els[i].appendChild(t);
}
}
}
function getElementsBySelector(selector){
var i,j,selid="",selclass="",tag=selector,tag2="",v2,k,f,a,s=[],objlist=[],c;
if(selector.find("#")){ //id selector like "tag#id"
if(selector.find(" ")){ //descendant selector like "tag#id tag"
s=selector.split(" ");
var fs=s[0].split("#");
if(fs.length==1) return(objlist);
f=document.getElementById(fs[1]);
if(f){
v=f.getElementsByTagName(s[1]);
for(i=0;i<v.length;i++) objlist.push(v[i]);
}
return(objlist);
}
else{
s=selector.split("#");
tag=s[0];
selid=s[1];
if(selid!=""){
f=document.getElementById(selid);
if(f) objlist.push(f);
return(objlist);
}
}
}
if(selector.find(".")){ //class selector like "tag.class"
s=selector.split(".");
tag=s[0];
selclass=s[1];
if(selclass.find(" ")){ //descendant selector like tag1.classname tag2
s=selclass.split(" ");
selclass=s[0];
tag2=s[1];
}
}
var v=document.getElementsByTagName(tag); // tag selector like "tag"
if(selclass==""){
for(i=0;i<v.length;i++) objlist.push(v[i]);
return(objlist);
}
for(i=0;i<v.length;i++){
c=v[i].className.split(" ");
for(j=0;j<c.length;j++){
if(c[j]==selclass){
if(tag2=="") objlist.push(v[i]);
else{
v2=v[i].getElementsByTagName(tag2);
for(k=0;k<v2.length;k++) objlist.push(v2[k]);
}
}
}
}
return(objlist);
}
function getParentBk(x){
var el=x.parentNode,c;
while(el.tagName.toUpperCase()!="HTML" && (c=getBk(el))=="transparent")
el=el.parentNode;
if(c=="transparent") c="#FFFFFF";
return(c);
}
function getBk(x){
var c=getStyleProp(x,"backgroundColor");
if(c==null || c=="transparent" || c.find("rgba(0, 0, 0, 0)"))
return("transparent");
if(c.find("rgb")) c=rgb2hex(c);
return(c);
}
function getPadding(x,side){
var p=getStyleProp(x,"padding"+side);
if(p==null || !p.find("px")) return(0);
return(parseInt(p));
}
function getStyleProp(x,prop){
if(x.currentStyle)
return(x.currentStyle[prop]);
if(document.defaultView.getComputedStyle)
return(document.defaultView.getComputedStyle(x,'')[prop]);
return(null);
}
function rgb2hex(value){
var hex="",v,h,i;
var regexp=/([0-9]+)[, ]+([0-9]+)[, ]+([0-9]+)/;
var h=regexp.exec(value);
for(i=1;i<4;i++){
v=parseInt(h[i]).toString(16);
if(v.length==1) hex+="0"+v;
else hex+=v;
}
return("#"+hex);
}
function Mix(c1,c2){
var i,step1,step2,x,y,r=new Array(3);
if(c1.length==4)step1=1;
else step1=2;
if(c2.length==4) step2=1;
else step2=2;
for(i=0;i<3;i++){
x=parseInt(c1.substr(1+step1*i,step1),16);
if(step1==1) x=16*x+x;
y=parseInt(c2.substr(1+step2*i,step2),16);
if(step2==1) y=16*y+y;
r[i]=Math.floor((x*50+y*50)/100);
r[i]=r[i].toString(16);
if(r[i].length==1) r[i]="0"+r[i];
}
return("#"+r[0]+r[1]+r[2]);
}