Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <script type="text/javascript">
- // workaround pro zobrazeni novinek
- // tento kod neni treba po odstraneni puvodni implementace
- jQuery("#novinky_obsah2").children().show();
- // TODO: zbavit se inline stylu
- // upravy layoutu - tady by to nemelo zustat, je nutne upravit styly
- jQuery("#novinky_obsah2, #novinky_obsah, #novinky_obsah2 > div").css({display: 'block', position:'relative', overflow: 'hidden', float: 'none'});
- jQuery("#novinky_obsah2").css({height : 'auto', position : 'absolute'});
- // funkce pro merge defaultnich parametru s predanymi
- // muze se hodit leckde, proto je definovana v globalnim namespace
- function mergeObjects(defaultObject, customObject) {
- for (var property in customObject) {
- if (! customObject.hasOwnProperty(property)) {
- continue;
- }
- defaultObject[property] = customObject[property];
- }
- return defaultObject;
- }
- // vytvoreni fake objektu console v pripade, ze prohlizec nezna tento objekt ci jeho metodu log
- // pro uplnost uvedme, ze volani console.log je dostupne ve FF s doplnkem Firebug
- if (! window.console) {
- window.console = {log: function() {}};
- }
- if (! console.log) {
- console.log = function() {};
- }
- /**
- * Trida ContentAutoscroll umoznuje rotovat potomky daneho elementu
- * parametry konstruktoru:
- * container : jQuery selektor elementu, jehoz (jejichz) potomci maji rotovat
- * config : (nepovinny parametr) objekt parametru, ktere maji prepsat defaultni konfiguraci)
- * timeout : cas mezi dvema rotacemi
- * animationDuration : rychlost animace - hodnota v ms | slow | fast
- * Predpoklada se, ze cilovy element ma nastaveno position: absolute a nema omezenu vysku.
- * Jeho predek ma position relative ci absolute a ma vysku omezenu na hodnotu vysky jednotlivych rotovanych potomku, jejichz vyska
- * by nejspis mela byt jednotna. Vlastnost rodice ciloveho elementu overflow se predpoklada nastavena na hidden.
- * Implementace posouva pri kazde animaci cilovy element o vysku jeho rodice vzhuru.
- * Pri zobrazeni posledniho potomka je pred provedenim animace nastavena hodnota top ciloveho elementu na nula,
- * cimz se zobrazi prvni potomek. Z tohoto duvodu je pri inicializaci vytvoren za poslednim potomkem klon potomka prvniho.
- *
- * 5.11.2010
- * info@smallslave.cz
- */
- function ContentAutoscroll(container, config) {
- console.log("ContentAutoscroll()", arguments);
- if (this.constructor != arguments.callee) {
- throw new Error("function ContentAutoscroll is a constructor.");
- }
- if (arguments.length < 1) {
- throw new Error("At least one parameter expected");
- }
- this.initParams(config);
- this.initContainerElement(container);
- this.createFirstItemCloneAtTheEndOfContainer();
- this.visibleHeight = this.containerElement.parent().height();
- this.totalHeight = this.containerElement.height();
- this.scheduleAnimation();
- console.log("ContentAutoscroll() - complete");
- }
- ContentAutoscroll.prototype.initParams = function(config) {
- this.params = {
- // interval v ms, po kterem dojde ke zmene obsahu
- interval : 5000,
- // rychlost animace: ms, pripadne retezec 'slow' ci 'fast'
- animationDuration : 500
- };
- mergeObjects(this.params, config);
- };
- ContentAutoscroll.prototype.initContainerElement = function(selector) {
- this.containerElement = jQuery(selector);
- if (this.containerElement.length < 1) {
- console.log("WARNING: ContentAutoscroll() - container element identified by " + selector + " doesn't exist");
- }
- };
- ContentAutoscroll.prototype.createFirstItemCloneAtTheEndOfContainer = function() {
- var firstItem = this.containerElement.children().first();
- var clone = firstItem.clone();
- this.containerElement.append(clone);
- };
- ContentAutoscroll.prototype.scheduleAnimation = function() {
- console.log("ContentAutoscroll.scheduleAnimation", this);
- var self = this;
- setTimeout(function() {self.animate();}, this.params.interval);
- };
- ContentAutoscroll.prototype.animate = function() {
- console.log("ContentAutoscroll.animate", this);
- var currentTop = this.containerElement.position().top;
- if (this.totalHeight + currentTop <= this.visibleHeight) {
- currentTop = 0;
- this.containerElement.css('top', '0');
- }
- var newTop = currentTop - this.visibleHeight;
- var self = this;
- console.log("ContentAutoscroll.animate - newTop = ", newTop);
- this.containerElement.animate({'top': newTop + 'px'}, this.animationDuration, function() {self.scheduleAnimation();});
- };
- // vytvoreni objektu ContentAutoscroll (po vytvoreni dokumentu)
- // tuto variantu jsem nemohl pouzit, nebot jsem testoval v prohlizeci primo nad cilovym dokumentem
- // pouzival jsem tedy primo volani konstruktoru tridy:
- // new ContentAutoscroll("#novinky_obsah2");
- jQuery(function() {
- // pouziti vychozi konfigurace
- // new ContentAutoscroll("#novinky_obsah2");
- // alternativni zpusob s predanim parametru - nastavime timeout a rychlost animace
- new ContentAutoscroll("#novinky_obsah2", {interval : 3000, animationDuration : 'fast'});
- });
- </script>
- <?php
- class novinky {
- public function write(){
- $i=1;
- $page = $_SESSION['page'];
- $result = mysql_query("SELECT content FROM "._DB_PREFIX_."block_novinky WHERE `page_name`='$page'");
- if($result){
- while($row = mysql_fetch_array($result)){
- $obsah[$i] = "<div id=\"novinka".$i."\"><div id=\"novinky_text\">".$row['content']."</div></div>";
- $i++;
- }
- }
- ?>
- <div id="novinky">
- <div id="novinky_obsah">
- <div id="novinky_obsah2">
- <?
- $i=1;
- echo $obsah[1];
- echo $obsah[2];
- echo $obsah[3];
- ?></div></div></div><?
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement