Mittwoch, 10. Februar 2010

Permanentes Rotieren eines Bildes mit Hilfe von dynamisch erzeugten CSS und ohne jQuery

var j = 0;
var i = 0;

function getRandom( min, max ) {
if( min > max ) {
return( -1 );
}
if( min == max ) {
return( min );
}

return min + parseInt( Math.random() * ( max-min+1 ) );
}


function langsamRotieren() {

if( document.styleSheets[0].cssRules ) {
if (j == 0) {
j = getRandom(0,3600);
}
j++;
document.getElementById("rotatingImage").className = 'rot' + j % 3600 ;
window.setTimeout("langsamRotieren()",1);
} else if ( document.styleSheets[0].rules ) {
j = getRandom(0,4);
document.getElementById("rotatingImage").className = 'rot' + j ;
}
}



function init() {

if( document.styleSheets ) {
var myStyle = document.createElement("style");
var styles = document.styleSheets.length;

myStyle.setAttribute( "type", "text/css" );
document.getElementsByTagName("head")[0].appendChild(myStyle);

myStyle = document.styleSheets[styles-1];

if( document.styleSheets[0].cssRules ) {
while (i < 3600) {
i++;
myStyle.insertRule(".rot" + i + " { -moz-transform: rotate(" + (i/10)*1 + "deg);-webkit-transform: rotate(" + (i/10)*1 + "deg); }", 0);

}
} else if ( document.styleSheets[0].rules ) {
while (i < 4) {
i++;
myStyle.addRule(".rot" + i , "filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=" + i + ");");
}
}
}

langsamRotieren ();

}

init();
</script>

Montag, 8. Februar 2010

Flash liefert unvollständiges XML

Damit das XML, das von Flash geliefert wird, von PHP simpleXML geparst
werden kann,
einfach mal die $HTTP_RAW_POST_DATA auslesen und entsprechend ergänzen..

Wordpress cron job anstossen

wenn in wordpress ein 'cron-job' eines Plugins angestossen werden soll, dann kann man das plugin kurz deaktiveren und wieder aktivieren. Dabei wird der job einmal ausgeführt.

Freitag, 5. Februar 2010

virtualbox mit DHCP-Adresse versorgen

wenn man schon so alleine ist, dass man eine virtualbox braucht,
kann man wenigstens mit ihr sprechen, als ob sie ein anderer rechner ist, wenn man im Menu Netzwerkadapter 'Netzwerkbrücke' auswählt.

Fertig.

die Instanz holt sich dann vom DHCP Server eine eigene Adresse, auf dass man dann auch von einem weiteren Rechner im Netzwerk auf die virtualbox zugreifen kann.

Wie das jetzt auf einer ISO-Ebene weiter unten aussieht, will ich gar nicht wissen.

logo links unten - aber bitte nicht über die navigation

Fürs JavaScript:

function getScrollWidth() {
var w = window.pageXOffset || document.body.scrollLeft;
return w ? w : 0;
}

function getScrollHeight() {
var h = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
return h ? h : 0;
}


function showLogo() {
var naviHeight= window.document.getElementById('navigation').offsetHeight;

var bodyHeight = document.body.clientHeight;
var vertiScroll = getScrollWidth();
var spaceForLogo = bodyHeight - naviHeight ;
var whiteSpaceLogo = 140;


if ((spaceForLogo < whiteSpaceLogo) || (vertiScroll > 50)) {

window.document.getElementById('leftDown').style.display = 'none';
}

if ((whiteSpaceLogo < getScrollHeight() || spaceForLogo > whiteSpaceLogo) && (vertiScroll < 50) ){

window.document.getElementById('leftDown').style.display = 'block';
}


return true;

}

showLogo();

Im CSS

.leftDown {
bottom:10px;
position:fixed;
}

Für den body-Tag
onResize="showLogo();" onscroll="showLogo();"

Na dann, allzeit angstfreies scrollen

sprites rulez!

http://spritegen.website-performance.org/

Das in bold fehlt erstmal :-)

.sprite-google {
float:left;padding: 3px;
background: url(images/sprite.png) no-repeat top left;
background-position: 0 -493px;
width: 20px;
height: 20px; }

....also hat ja nicht jeder den gleichen Seitenaufbau für die Seiten - aber die gleiche sprite-Datei ...

bread crumb unterdrücken - wenn kein eigener unterpunkt da

# brot krumen
MENU2 = HMENU
MENU2{
special = rootline
entryLevel = 2
special.value = 3
special.range = 1|-1

typoscript - leeres resultset vom sql-statement -> keine anzeige

ist nichts auf der colPos = 4
dann wird auch das wrap nicht gemacht

MEINMARKER = CONTENT
MEINMARKER {
stdWrap.required = 1
stdWrap.wrap = <div id="meineBox">|</div>
table = tt_content
select {
where = colPos = 4
orderBy = sorting
languageField = sys_language_uid
}
}

.htaccess für zum Glücklichmachen von YSlow

Kann man auch hübscher machen -
aber kaum schneller :-)

ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType text/css A2592000
ExpiresByType text/javascript A2592000
ExpiresByType application/x-javascript A2592000

FileETag none

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/x-shockwave-flash
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/x-httpd-eruby
AddOutputFilterByType DEFLATE text/html

hotfix:imagemagick bei xampp auf win im safe_mode = on

.. da kommen dann auch Thumbnails,
wenn man mit

if(!$path){ $path = $gfxConf['im_path']; }

if ((TYPO3_OS == 'WIN') and (ini_get('safe_mode') == 1) ) {
$path = '';
}

die t3lib/class.t3lib_div.php die Methode imageMagickCommand(
erweitert.

It's a bug - not a feature

Banner werden nicht angezeigt

Hurra - man arbeitet in einer Agentur - und da muss man auch mal Werbebanner plazieren.
Fein, wenn die auch angezeigt werden.

1.) Banner-Dateien nicht in einem Ordner 'banner' ablegen
2.) Banner-Dateien nicht sinnvoll benennen z.B. fluffi_120x600.jpg

Böse:
/fileadmin/banner/fluffi.jpg
Gut:
/fileadmin/KrautUndRueben/fluffi.jpg

Kaspersky filtert solche Dateien bei aktiviertem 'Anti-Spy'-'Anti-Banner' aus.

notepad++ unter vista typoscript beibringen

Herunterladen der Datei userDefineLang.xml von z.B. http://moodle.shs-imst.tsn.at...userDefineLang.xml
und in /Users/XXXX/AppData/Roaming/Notepad++ legen.

Für die Autovervollständigung

Die Datei
http://moodle.shs-imst.tsn.at...typoscript.api

frisieren, in dem

'\r\n'

durch

'"/>\n\t\t<KeyWord name="'

ersetzt wird - oder diesen XML Code als TypoScript.xml
unter /Program Files/Notepad++/plugins/APIs/TypoScript.xml ablegen.

Administratorenrechte vorausgesetzt.

<?xml version="1.0" encoding="Windows-1252" ? >
<notepadplus >
<autocomplete >
<keyword name="ACT" />
<keyword name="ACTIFSUB" />
<keyword name="addHeight" />
<keyword name="addWidth" />
<keyword name="admPanel" />
<keyword name="allWrap" />
<keyword name="ATagParams" />
<keyword name="bodyTag" />
<keyword name="CASE" />
<keyword name="case" />
<keyword name="COA" />
<keyword name="cObject" />
<keyword name="code" />
<keyword name="collapse" />
<keyword name="config" />
<keyword name="CONTENT" />
<keyword name="content" />
<keyword name="content_from_pid_allowOutsideDomain" />
<keyword name="CR_" />
<keyword name="crop" />
<keyword name="CUR" />
<keyword name="data" />
<keyword name="DB" />
<keyword name="defaultTemplateObjectMain" />
<keyword name="defaultTemplateObjectSub" />
<keyword name="directory" />
<keyword name="disablePrefixComment" />
<keyword name="displayActiveOnLoad" />
<keyword name="dontHideOnMouseUp" />
<keyword name="entryLevel" />
<keyword name="expAll" />
<keyword name="external" />
<keyword name="extTarget" />
<keyword name="field" />
<keyword name="FILE" />
<keyword name="file" />
<keyword name="fileadmin/" />
<keyword name="fontColor" />
<keyword name="fontFile" />
<keyword name="fontSize" />
<keyword name="freezeMouseover" />
<keyword name="global" />
<keyword name="GMENU" />
<keyword name="GMENU_LAYERS" />
<keyword name="gmenu_layers" />
<keyword name="headerComment" />
<keyword name="headerData" />
<keyword name="hideMenuWhenNotOver" />
<keyword name="HMENU" />
<keyword name="HTML" />
<keyword name="if" />
<keyword name="IFSUB" />
<keyword name="IMAGE" />
<keyword name="Image" />
<keyword name="imgParams" />
<keyword name="includeLibs" />
<keyword name="index_enable" />
<keyword name="index_externals" />
<keyword name="inheritMainTemplates" />
<keyword name="inheritSubTemplates" />
<keyword name="inlineStyle2TempFile" />
<keyword name="intTarget" />
<keyword name="isTrue" />
<keyword name="key" />
<keyword name="layerStyle" />
<keyword name="linkWrap" />
<keyword name="lockPosition" />
<keyword name="lockPosition_addSelf" />
<keyword name="main" />
<keyword name="marks" />
<keyword name="meta" />
<keyword name="mode" />
<keyword name="niceText" />
<keyword name="NO" />
<keyword name="noBlur" />
<keyword name="obj" />
<keyword name="offset" />
<keyword name="PAGE" />
<keyword name="PAGE_TARGET" />
<keyword name="placement" />
<keyword name="plugin" />
<keyword name="range" />
<keyword name="relativeToParentLayer" />
<keyword name="relativeToTriggerItem" />
<keyword name="removeDefaultJS" />
<keyword name="required" />
<keyword name="RO" />
<keyword name="rootline" />
<keyword name="special" />
<keyword name="shortcutIcon" />
<keyword name="simulateStaticDocuments_noTypeIfNoTitle" />
<keyword name="spamProtectEmailAddresses" />
<keyword name="spamProtectEmailAddresses_atSubst" />
<keyword name="stdWrap" />
<keyword name="stylesheet" />
<keyword name="sub" />
<keyword name="target" />
<keyword name="temp" />
<keyword name="TEMPLATE" />
<keyword name="template" />
<keyword name="templateObjects" />
<keyword name="templateType" />
<keyword name="TEXT" />
<keyword name="text" />
<keyword name="textMaxLength" />
<keyword name="TMENU" />
<keyword name="TMENU_LAYERS" />
<keyword name="tmenu_layers" />
<keyword name="topOffset" />
<keyword name="transparentBackground" />
<keyword name="typeNumupper" />
<keyword name="user_" />
<keyword name="value" />
<keyword name="workOnSubpart" />
<keyword name="wrap" />
<keyword name="XY" />
<keyword name="ypMenu" />
</autocomplete>
</notepadplus>


Getestet mit Notepad++ 5.5.1