kajmakot/__init__.py0000644000175000001440000000000010571323776013643 0ustar gogouserskajmakot/context_processors.py0000644000175000001440000000040510570573660016061 0ustar gogousers# -*- coding: utf-8 -*- def poraka(request): """ Му става во контекстот пораката која сум ја ставил во сесија ['poraka'] """ return { 'poraka': request.session.get('poraka', '') } kajmakot/crontab/0000755000175000001440000000000010572663177013177 5ustar gogouserskajmakot/crontab/chisti_kluchevi.py0000755000175000001440000000147310570034620016715 0ustar gogousers#!/usr/bin/env python # -*- coding: utf-8 -*- """ Gi brishe istechenite kluchevi od baza. """ # postavi ja okolinata import os,sys,datetime if sys.path.count('/home/webstrana/django/django_src'): sys.path.append('/home/webstrana/django/django_src') if sys.path.count('/home/webstrana/django'): sys.path.append('/home/webstrana/django') os.environ['DJANGO_SETTINGS_MODULE'] = 'kajmakot.settings' from django.db import backend, connection, transaction # ishisti gi starite kluchevi cursor = connection.cursor() cursor.execute("DELETE FROM %s WHERE %s < NOW()" % (backend.quote_name('korisnik_aktivacija'), backend.quote_name('istekuva'))) cursor.execute("DELETE FROM %s WHERE %s < NOW()" % (backend.quote_name('korisnik_resetiranjelozinki'), backend.quote_name('istekuva'))) transaction.commit_unless_managed() kajmakot/crontab/pravi_bajati.py0000755000175000001440000000103510572663177016206 0ustar gogousers#!/usr/bin/env python # -*- coding: utf-8 -*- """ Ги прави бајати тие што не станале популарни последниве 48 часа.""" # postavi ja okolinata import os,sys,datetime if sys.path.count('/home/webstrana/django/django_src'): sys.path.append('/home/webstrana/django/django_src') if sys.path.count('/home/webstrana/django'): sys.path.append('/home/webstrana/django') os.environ['DJANGO_SETTINGS_MODULE'] = 'kajmakot.settings' from django.db import backend, connection, transaction kajmakot/feeds.py0000644000175000001440000000610410571665356013210 0ustar gogousers# -*- coding: utf-8 -*- from django.contrib.syndication.feeds import Feed from django.core.exceptions import ObjectDoesNotExist from kajmakot.models import Stranica class Svezhi(Feed): """ RSS на последните свежи статии подредени опаѓачки според кога се пријавени. """ title = u"Кајмакот / Свежи статии" link = "/svezhi/" description = u"Последни свежи статии во сите категории." title_template = 'rss/title.html' description_template = 'rss/description.html' def items(self): return Stranica.objects.filter(popularnaOd__isnull=True,svezha__exact=True).order_by('-prijavenaNa')[:20] def item_pubdate(self, item): return item.prijavenaNa class SvezhiPoKategorija(Feed): """ RSS на последните свежи статии по категорија подредени опаѓачки според кога се пријавени. """ title_template = 'rss/title.html' description_template = 'rss/description.html' def get_object(self, bits): return bits[0] def item_pubdate(self, item): return item.prijavenaNa def items(self, obj): return Stranica.objects.filter(kategorija__nasheUrl=obj,popularnaOd__isnull=True,svezha__exact=True).order_by('-prijavenaNa')[:20] def link(self, obj): return "/%s/" % obj def title(self, obj): return u"Кајмакот / Свежи статии за %s" % obj def description(self, obj): return u'Последени свежи статии во /%s/' % obj class Popularni(Feed): """ RSS на последните популарни статии подредени опаѓачки според кога станале популарни. """ title = u"Кајмакот" link = "/" description = u"Последни популарни статии во сите категории." title_template = 'rss/title.html' description_template = 'rss/description.html' def items(self): return Stranica.objects.filter(popularnaOd__isnull=False).order_by('-popularnaOd')[:20] def item_pubdate(self, item): return item.prijavenaNa # mozhda tuka popularnaOd да ставам? class PopularniPoKategorija(Feed): """ Популарни статии подредени опаѓачки според кога станале популарни. """ title_template = 'rss/title.html' description_template = 'rss/description.html' def get_object(self, bits): return bits[0] def item_pubdate(self, item): return item.prijavenaNa def items(self, obj): return Stranica.objects.filter(kategorija__nasheUrl=obj,popularnaOd__isnull=False).order_by('-popularnaOd')[:20] def link(self, obj): return "/%s/" % obj def title(self, obj): return u"Кајмакот / %s" % obj def description(self, obj): return u'Последени популарни статии во /%s/' % obj kajmakot/forms.py0000644000175000001440000000327210572657122013244 0ustar gogousers# -*- coding: utf-8 -*- from django import newforms as forms from django.newforms.widgets import * from django.newforms.util import ValidationError from kajmakot.models import Kategorija attrs1={'class':'formprvcekor'} class PrijaviURL(forms.Form): """ Форма за првиот чекор при пријавување на статија. """ url = forms.URLField(widget=TextInput(attrs=attrs1), initial="http://",verify_exists=True) class PrijaviStatija(forms.Form): """ Форма за вториот чекор при пријавување на статијата. Динамички ги зима категориите. """ def __init__(self, *args, **kwargs): super(PrijaviStatija, self).__init__(*args, **kwargs) self.fields['kategorija'].choices = [(kategorija.id, kategorija.ime.decode('utf-8')) for kategorija in Kategorija.objects.all()] naslov = forms.CharField( widget=TextInput( attrs={ 'class':'formprvcekor', 'onkeyup':'preostanatiznaci(this,\'naslovznaci\',70);', 'onkeydown':'preostanatiznaci(this,\'naslovznaci\',70);' } ), max_length=70) opis = forms.CharField( widget=Textarea( attrs={ 'class':'formprvcekor', 'onkeyup':'preostanatiznaci(this,\'opisznaci\',255);', 'onkeydown':'preostanatiznaci(this,\'opisznaci\',255);' } ), max_length=300 ) kategorija = forms.ChoiceField(choices=(), widget=RadioSelect(attrs=attrs1)) # ne mi gi prima attrs sega. kajmakot/forms.pyc0000644000175000001440000000376110571045510013401 0ustar gogousersm >KEc@ssdklZdkTdklZdklZhddPodocna probajte povtorno.') poraka = u'Проверете си ја е-пошта која ја наведовте за понатамошни инструкции за промена на лозинката.' uspeh = "$('poraka').innerHTML='" + poraka + "'" data = simplejson.dumps({'OK': uspeh}) else: data = simplejson.dumps(formata.errors) return HttpResponse(data, mimetype="text/javascript") else: return render_to_response('korisnik/resetiraj_eposhta.html',{'form': forms.ResetirajEposhta()}) def resetiraj(request, kluch): """ Ги менува лозинките на корисникот кој претходно побарал клуч за тоа. """ # ако нема ваква активација врати 404 aktivacija = get_object_or_404(ResetiranjeLozinki,kluch=kluch) if aktivacija.istekuva < datetime.datetime.today(): aktivacija.delete() # избриши го од табелата за активации и прати го пак да проба. return HttpResponseNotFound('Istecheno vi e baranjeto. Probajte povtorno') user = User.objects.get(email=aktivacija.eposhta) if request.method == "POST": formata = forms.ResetirajLozinka(request.POST) if formata.is_valid(): passw = formata.clean_data['password1'].encode('utf-8') user.set_password(passw) user.save() login(request, authenticate(username=user.username,password=passw)) aktivacija.delete() uspeh = 'window.location.pathname="/"' data = simplejson.dumps({'OK': uspeh}) else: data = simplejson.dumps(formata.errors) return HttpResponse(data, mimetype="text/javascript") else: return render_to_response('korisnik/resetiraj_lozinkite.html', {'form': forms.ResetirajLozinka(),'korisnik':user.username}) @pomoshni.potrebna_najava def promenilozinka(request): """ Ја менува лозинката на најавениот корисник """ if request.method == "POST": #formata = forms.ResetirajLozinka(request.POST) formata = forms.PromeniLozinka(request.user,request.POST) if formata.is_valid(): #podatoci = pomoshni.voutf(formata.clean_data) passw = formata.clean_data['password1'].encode('utf-8') request.user.set_password(passw) request.user.save() # shto da prai stranata poshto se e vo red so formata request.session['poraka'] = 'Успешно ја променивте вашата лозинка %s.' % request.user.username uspeh = 'window.location.pathname="/"' return HttpResponse(simplejson.dumps({'OK': uspeh}), mimetype="text/javascript") else: data = simplejson.dumps(formata.errors) return HttpResponse(data, mimetype="text/javascript") else: return render_to_response('korisnik/promenilozinka.html', {'form':forms.PromeniLozinka(request.user)}, context_instance=RequestContext(request)) @pomoshni.potrebna_najava def mojprofil(request, page=1): """ Профилот на регитрираниот корисник. Кои страници ги пријавил. Кога ќе имам коментари може и коментарите да ги дава. """ from kajmakot.views import generirajstranica return generirajstranica( request, Stranica.objects.filter(prijavenaOd=request.user).order_by('-prijavenaNa'), 'korisnik/mojprofil.html', page=page ) def profil(request,korisnik,page=1): """ Профил на корисник. """ juzer = get_object_or_404(User,username=korisnik) from kajmakot.views import generirajstranica return generirajstranica( request, Stranica.objects.filter(prijavenaOd=juzer).order_by('-prijavenaNa'), 'korisnik/profil.html', page=page ) kajmakot/manage.py0000755000175000001440000000104210566343632013343 0ustar gogousers#!/usr/bin/env python from django.core.management import execute_manager try: import settings # Assumed to be in the same directory. except ImportError: import sys sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) sys.exit(1) if __name__ == "__main__": execute_manager(settings) kajmakot/media/0000755000175000001440000000000010567074171012620 5ustar gogouserskajmakot/media/js/0000755000175000001440000000000010573630565013236 5ustar gogouserskajmakot/media/js/samoie.js0000644000175000001440000000217710572623234015052 0ustar gogousers /* Za da raboti vo glupiot IE :focus http://www.htmldog.com/articles/suckerfish/focus/ Go smeniv za da ne mi stava :focus na dugminjata */ function suckerfish(type, tag, parentId) { if (window.attachEvent) { window.attachEvent("onload", function() { var sfEls = []; var form = document.getElementById(parentId); var site = (parentId==null)?document.getElementsByTagName(tag):form.getElementsByTagName(tag); var dugmeto = document.getElementById('pratikopche'); for (var index = 0; index < site.length; ++index) { var item = site[index]; if ( item != dugmeto) { sfEls.push(item); } } type(sfEls); }); } } sfFocus = function(sfEls) { for (var i=0; i

Затвори'; // Effect.Appear($('poppDiv')); Effect.Appear('poppDiv', { duration: 1.0, afterFinish: function() { $('username').focus();} }) return(false); } function regpopup() { unpopp(); $('heder').innerHTML += ''; Effect.Appear('poppDiv', { duration: 1.0, afterFinish: function() { $('id_eposhta').focus();} }) return(false); } function registracija() { var ajaxloaderhtml = ''; new Insertion.Before($('pratikopche'), ajaxloaderhtml); $('for_eposhta').remove() $('pratikopche').remove() var eposhta = 'eposhta='+$F('id_eposhta'); $('najavaform').disable(); var myAjax = new Ajax.Request('/korisnik/registriraj/ajax/',{ method: 'post', parameters: eposhta, onSuccess: function(req) { $('poppDiv').innerHTML = req.responseText; $('id_eposhta').focus(); }, onFailure: function() { alert('Greshka so serverot.Agrhhh. :('); } }); $('id_eposhta').focus(); } function proveriuser() { /* Proveruva dali korisnichoto ime e zafateno */ var user = 'username=' + $F('id_username'); if ( user == 'username=' ) { alert('Прво внесете корисничко име.'); return false; } $('proverenuser').innerHTML = '' var myAjax = new Ajax.Request('/korisnik/proveriuser/ajax/',{ method: 'post', parameters: user, onSuccess: rezultat}); function rezultat(req) {$('proverenuser').innerHTML = req.responseText; } // ako dobil focus username stai pak da mu dade dugme za da proveri Event.observe('id_username', 'focus', initproveriuser, false) function initproveriuser() { $('proverenuser').innerHTML = ' (провери достапност)';} } function preostanatiznaci(poleto, rezultatot, max) { if (poleto.value.length > max) poleto.value = poleto.value.substring(0, max); else $(rezultatot).innerHTML= max - poleto.value.length; return true; } function procesiraj(e) { /* Procesira formata za greshki. view-to treba da vrati JSON format koj gi ima site greshki za formata. Jas odam edna po edna i gi prikazhuvam */ // poshto ne sekoga eventot e na samata forma tuku mozhe na nekoe od // nejzinite elementi pa vaka ja vrakjam samata forma var forma = Event.findElement(e, 'form'); var ajaxurl = forma.action; var parametri = forma.serialize(true); // zemi gi od formata pred da ja disabluvam forma.disable(); // da ne ja prakja formata po pet pati. // skrij go dugmeto za prakjanje i na negovo mesto stai ajaxloader var pratikopche = forma.getInputs('submit')[0]; // vo sushtina prvoto submit ajaxloaderhtml = '
Вчитувам...
'; new Insertion.Before(pratikopche, ajaxloaderhtml); pratikopche.hide() forma.enable(); // ischisti gi dosega greshkite (elementite so class=errorlist) var stari = forma.getElementsByClassName('errorlist'); for (i=0; i'; // fokusiraj na prvoto so greshki. if (i==1) { $('id_'+pair.key).focus(); } i++; // efekt da mu privleche vnimanie ama vo IE e sranje dava saatche deka raboti //new Effect.Highlight('for_'+pair.key, {duration: 2}); }); // ova tuka samo posle greshki da go vrati dugmeto poshto // koga nema greshki ili redirektiram ili ja trgam formata i glupo izgleda // da go vrakja prvo kopcheto pa posle da go prai toa, poshto malku kasni ne // redirektira odma. forma.enable(); $('ajaxloader').remove(); pratikopche.show(); } } // da ne go prosledi vistinskiot submit Event.stop(e); } function glasaj(stranicaid){ /* koga kje glasa - Trgni go linkot za glasanje od linkza_stranicaid - Skrij go brojot na glasovi poshto kje se azhiraat. - Smeni ja clasata na divot vo "glasano" - Prati na /glasaj/ i ocehkuvaj da ti vrati zamena za div-ot - Koga kje dojde zamenata smeni go. */ var storijadiv = $('storija_'+stranicaid) var linkza = $('linkza_'+stranicaid) linkza.blur() // ona accesibility okolu elementot shto go stavaat site go trgne koga gubi fokus linkza.href="javascript:void(0)" new Effect.Opacity('glasoviza_'+stranicaid, {duration:0.5, from:1.0, to:0.0}); new Effect.Opacity('akcijaza_'+stranicaid, {duration:0.5, from:1.0, to:0.0}); storijadiv.toggleClassName('glasano') var myAjax = new Ajax.Request( '/glasaj/', { method: 'post', parameters: 'stranicaid='+stranicaid, onSuccess: function(req) { storijadiv.innerHTML = req.responseText;}, onFailure: function () { alert('Agrh...'); } // demek sum mu vratil nekoja http greshka }); } function getPageSize(){ var xScroll, yScroll; if (window.innerHeight && window.scrollMaxY) { xScroll = document.body.scrollWidth; yScroll = window.innerHeight + window.scrollMaxY; } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac xScroll = document.body.scrollWidth; yScroll = document.body.scrollHeight; } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari xScroll = document.body.offsetWidth; yScroll = document.body.offsetHeight; } var windowWidth, windowHeight; if (self.innerHeight) { // all except Explorer windowWidth = self.innerWidth; windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode windowWidth = document.documentElement.clientWidth; windowHeight = document.documentElement.clientHeight; } else if (document.body) { // other Explorers windowWidth = document.body.clientWidth; windowHeight = document.body.clientHeight; } // for small pages with total height less then height of the viewport if(yScroll < windowHeight){ pageHeight = windowHeight; } else { pageHeight = yScroll; } // for small pages with total width less then width of the viewport if(xScroll < windowWidth){ pageWidth = windowWidth; } else { pageWidth = xScroll; } arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) return arrayPageSize; } function problemPrikazhi(stranicaid,naslov) { /* Prikazhuva na samata strana formular za prijavuvanje na problem so nekoja stranica */ var nizcela = $('nizcela'); var goleminastr = getPageSize(); naslov = naslov.escapeHTML(); shto = '
Кој е проблемот со статијава?

Пријавете го проблемот со статијава. Направете го Кајмакот поубаво место.


Затвори
'; new Insertion.After(nizcela, shto); ukradiformsubmit(); // poshto na pochetok ne postoi a sega postoi var problem = $('problem'); offset = window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop; nizcela.style.height = goleminastr[1] + 'px'; problem.style.top = 100 + offset + 'px'; nizcela.style.display = 'block'; problem.style.display = 'block'; } function problemSkrij() { $('problem').remove() $('nizcela').style.display = 'none'; } kajmakot/media/js/scriptaculous/0000755000175000001440000000000010570611275016130 5ustar gogouserskajmakot/media/js/scriptaculous/prototype.js0000644000175000001440000014353010570375354020546 0ustar gogousersvar Prototype={Version:"1.5.0",BrowserFeatures:{XPath:!!document.evaluate},ScriptFragment:"(?:)((\n|\r|.)*?)(?:)",emptyFunction:function(){ },K:function(x){ return x; }}; var Class={create:function(){ return function(){ this.initialize.apply(this,arguments); }; }}; var Abstract=new Object(); Object.extend=function(_2,_3){ for(var _4 in _3){ _2[_4]=_3[_4]; } return _2; }; Object.extend(Object,{inspect:function(_5){ try{ if(_5===undefined){ return "undefined"; } if(_5===null){ return "null"; } return _5.inspect?_5.inspect():_5.toString(); } catch(e){ if(e instanceof RangeError){ return "..."; } throw e; } },keys:function(_6){ var _7=[]; for(var _8 in _6){ _7.push(_8); } return _7; },values:function(_9){ var _a=[]; for(var _b in _9){ _a.push(_9[_b]); } return _a; },clone:function(_c){ return Object.extend({},_c); }}); Function.prototype.bind=function(){ var _d=this,args=$A(arguments),object=args.shift(); return function(){ return _d.apply(object,args.concat($A(arguments))); }; }; Function.prototype.bindAsEventListener=function(_e){ var _f=this,args=$A(arguments),_e=args.shift(); return function(_10){ return _f.apply(_e,[(_10||window.event)].concat(args).concat($A(arguments))); }; }; Object.extend(Number.prototype,{toColorPart:function(){ var _11=this.toString(16); if(this<16){ return "0"+_11; } return _11; },succ:function(){ return this+1; },times:function(_12){ $R(0,this,true).each(_12); return this; }}); var Try={these:function(){ var _13; for(var i=0,length=arguments.length;i0){ if(match=source.match(_19)){ _1b+=source.slice(0,match.index); _1b+=String.interpret(_1a(match)); source=source.slice(match.index+match[0].length); }else{ _1b+=source,source=""; } } return _1b; },sub:function(_1c,_1d,_1e){ _1d=this.gsub.prepareReplacement(_1d); _1e=_1e===undefined?1:_1e; return this.gsub(_1c,function(_1f){ if(--_1e<0){ return _1f[0]; } return _1d(_1f); }); },scan:function(_20,_21){ this.gsub(_20,_21); return this; },truncate:function(_22,_23){ _22=_22||30; _23=_23===undefined?"...":_23; return this.length>_22?this.slice(0,_22-_23.length)+_23:this; },strip:function(){ return this.replace(/^\s+/,"").replace(/\s+$/,""); },stripTags:function(){ return this.replace(/<\/?[^>]+>/gi,""); },stripScripts:function(){ return this.replace(new RegExp(Prototype.ScriptFragment,"img"),""); },extractScripts:function(){ var _24=new RegExp(Prototype.ScriptFragment,"img"); var _25=new RegExp(Prototype.ScriptFragment,"im"); return (this.match(_24)||[]).map(function(_26){ return (_26.match(_25)||["",""])[1]; }); },evalScripts:function(){ return this.extractScripts().map(function(_27){ return eval(_27); }); },escapeHTML:function(){ var div=document.createElement("div"); var _29=document.createTextNode(this); div.appendChild(_29); return div.innerHTML; },unescapeHTML:function(){ var div=document.createElement("div"); div.innerHTML=this.stripTags(); return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject("",function(_2b,_2c){ return _2b+_2c.nodeValue; }):div.childNodes[0].nodeValue):""; },toQueryParams:function(_2d){ var _2e=this.strip().match(/([^?#]*)(#.*)?$/); if(!_2e){ return {}; } return _2e[1].split(_2d||"&").inject({},function(_2f,_30){ if((_30=_30.split("="))[0]){ var _31=decodeURIComponent(_30[0]); var _32=_30[1]?decodeURIComponent(_30[1]):undefined; if(_2f[_31]!==undefined){ if(_2f[_31].constructor!=Array){ _2f[_31]=[_2f[_31]]; } if(_32){ _2f[_31].push(_32); } }else{ _2f[_31]=_32; } } return _2f; }); },toArray:function(){ return this.split(""); },succ:function(){ return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1); },camelize:function(){ var _33=this.split("-"),len=_33.length; if(len==1){ return _33[0]; } var _34=this.charAt(0)=="-"?_33[0].charAt(0).toUpperCase()+_33[0].substring(1):_33[0]; for(var i=1;i=_6e){ _6e=_6f; } }); return _6e; },min:function(_71){ var _72; this.each(function(_73,_74){ _73=(_71||Prototype.K)(_73,_74); if(_72==undefined||_73<_72){ _72=_73; } }); return _72; },partition:function(_75){ var _76=[],falses=[]; this.each(function(_77,_78){ ((_75||Prototype.K)(_77,_78)?_76:falses).push(_77); }); return [_76,falses]; },pluck:function(_79){ var _7a=[]; this.each(function(_7b,_7c){ _7a.push(_7b[_79]); }); return _7a; },reject:function(_7d){ var _7e=[]; this.each(function(_7f,_80){ if(!_7d(_7f,_80)){ _7e.push(_7f); } }); return _7e; },sortBy:function(_81){ return this.map(function(_82,_83){ return {value:_82,criteria:_81(_82,_83)}; }).sort(function(_84,_85){ var a=_84.criteria,b=_85.criteria; return ab?1:0; }).pluck("value"); },toArray:function(){ return this.map(); },zip:function(){ var _87=Prototype.K,args=$A(arguments); if(typeof args.last()=="function"){ _87=args.pop(); } var _88=[this].concat(args).map($A); return this.map(function(_89,_8a){ return _87(_88.pluck(_8a)); }); },size:function(){ return this.toArray().length; },inspect:function(){ return "#"; }}; Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray}); var $A=Array.from=function(_8b){ if(!_8b){ return []; } if(_8b.toArray){ return _8b.toArray(); }else{ var _8c=[]; for(var i=0,length=_8b.length;i1?this:this[0]; },uniq:function(){ return this.inject([],function(_98,_99){ return _98.include(_99)?_98:_98.concat([_99]); }); },clone:function(){ return [].concat(this); },size:function(){ return this.length; },inspect:function(){ return "["+this.map(Object.inspect).join(", ")+"]"; }}); Array.prototype.toArray=Array.prototype.clone; function $w(_9a){ _9a=_9a.strip(); return _9a?_9a.split(/\s+/):[]; } if(window.opera){ Array.prototype.concat=function(){ var _9b=[]; for(var i=0,length=this.length;i"; }}); function $H(_b0){ if(_b0&&_b0.constructor==Hash){ return _b0; } return new Hash(_b0); } ObjectRange=Class.create(); Object.extend(ObjectRange.prototype,Enumerable); Object.extend(ObjectRange.prototype,{initialize:function(_b1,end,_b3){ this.start=_b1; this.end=end; this.exclusive=_b3; },_each:function(_b4){ var _b5=this.start; while(this.include(_b5)){ _b4(_b5); _b5=_b5.succ(); } },include:function(_b6){ if(_b6-1?"&":"?")+_c6; } try{ Ajax.Responders.dispatch("onCreate",this,this.transport); this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous); if(this.options.asynchronous){ setTimeout(function(){ this.respondToReadyState(1); }.bind(this),10); } this.transport.onreadystatechange=this.onStateChange.bind(this); this.setRequestHeaders(); var _c7=this.method=="post"?(this.options.postBody||_c6):null; this.transport.send(_c7); if(!this.options.asynchronous&&this.transport.overrideMimeType){ this.onStateChange(); } } catch(e){ this.dispatchException(e); } },onStateChange:function(){ var _c8=this.transport.readyState; if(_c8>1&&!((_c8==4)&&this._complete)){ this.respondToReadyState(this.transport.readyState); } },setRequestHeaders:function(){ var _c9={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,"Accept":"text/javascript, text/html, application/xml, text/xml, */*"}; if(this.method=="post"){ _c9["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:""); if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){ _c9["Connection"]="close"; } } if(typeof this.options.requestHeaders=="object"){ var _ca=this.options.requestHeaders; if(typeof _ca.push=="function"){ for(var i=0,length=_ca.length;i=200&&this.transport.status<300); },respondToReadyState:function(_ce){ var _cf=Ajax.Request.Events[_ce]; var _d0=this.transport,json=this.evalJSON(); if(_cf=="Complete"){ try{ this._complete=true; (this.options["on"+this.transport.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(_d0,json); } catch(e){ this.dispatchException(e); } if((this.getHeader("Content-type")||"text/javascript").strip().match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i)){ this.evalResponse(); } } try{ (this.options["on"+_cf]||Prototype.emptyFunction)(_d0,json); Ajax.Responders.dispatch("on"+_cf,this,_d0,json); } catch(e){ this.dispatchException(e); } if(_cf=="Complete"){ this.transport.onreadystatechange=Prototype.emptyFunction; } },getHeader:function(_d1){ try{ return this.transport.getResponseHeader(_d1); } catch(e){ return null; } },evalJSON:function(){ try{ var _d2=this.getHeader("X-JSON"); return _d2?eval("("+_d2+")"):null; } catch(e){ return null; } },evalResponse:function(){ try{ return eval(this.transport.responseText); } catch(e){ this.dispatchException(e); } },dispatchException:function(_d3){ (this.options.onException||Prototype.emptyFunction)(this,_d3); Ajax.Responders.dispatch("onException",this,_d3); }}); Ajax.Updater=Class.create(); Object.extend(Object.extend(Ajax.Updater.prototype,Ajax.Request.prototype),{initialize:function(_d4,url,_d6){ this.container={success:(_d4.success||_d4),failure:(_d4.failure||(_d4.success?null:_d4))}; this.transport=Ajax.getTransport(); this.setOptions(_d6); var _d7=this.options.onComplete||Prototype.emptyFunction; this.options.onComplete=(function(_d8,_d9){ this.updateContent(); _d7(_d8,_d9); }).bind(this); this.request(url); },updateContent:function(){ var _da=this.container[this.success()?"success":"failure"]; var _db=this.transport.responseText; if(!this.options.evalScripts){ _db=_db.stripScripts(); } if(_da=$(_da)){ if(this.options.insertion){ new this.options.insertion(_da,_db); }else{ _da.update(_db); } } if(this.success()){ if(this.onComplete){ setTimeout(this.onComplete.bind(this),10); } } }}); Ajax.PeriodicalUpdater=Class.create(); Ajax.PeriodicalUpdater.prototype=Object.extend(new Ajax.Base(),{initialize:function(_dc,url,_de){ this.setOptions(_de); this.onComplete=this.options.onComplete; this.frequency=(this.options.frequency||2); this.decay=(this.options.decay||1); this.updater={}; this.container=_dc; this.url=url; this.start(); },start:function(){ this.options.onComplete=this.updateComplete.bind(this); this.onTimerEvent(); },stop:function(){ this.updater.options.onComplete=undefined; clearTimeout(this.timer); (this.onComplete||Prototype.emptyFunction).apply(this,arguments); },updateComplete:function(_df){ if(this.options.decay){ this.decay=(_df.responseText==this.lastText?this.decay*this.options.decay:1); this.lastText=_df.responseText; } this.timer=setTimeout(this.onTimerEvent.bind(this),this.decay*this.frequency*1000); },onTimerEvent:function(){ this.updater=new Ajax.Updater(this.container,this.url,this.options); }}); function $(_e0){ if(arguments.length>1){ for(var i=0,elements=[],length=arguments.length;i"; },recursivelyCollect:function(_101,_102){ _101=$(_101); var _103=[]; while(_101=_101[_102]){ if(_101.nodeType==1){ _103.push(Element.extend(_101)); } } return _103; },ancestors:function(_104){ return $(_104).recursivelyCollect("parentNode"); },descendants:function(_105){ return $A($(_105).getElementsByTagName("*")); },immediateDescendants:function(_106){ if(!(_106=$(_106).firstChild)){ return []; } while(_106&&_106.nodeType!=1){ _106=_106.nextSibling; } if(_106){ return [_106].concat($(_106).nextSiblings()); } return []; },previousSiblings:function(_107){ return $(_107).recursivelyCollect("previousSibling"); },nextSiblings:function(_108){ return $(_108).recursivelyCollect("nextSibling"); },siblings:function(_109){ _109=$(_109); return _109.previousSiblings().reverse().concat(_109.nextSiblings()); },match:function(_10a,_10b){ if(typeof _10b=="string"){ _10b=new Selector(_10b); } return _10b.match($(_10a)); },up:function(_10c,_10d,_10e){ return Selector.findElement($(_10c).ancestors(),_10d,_10e); },down:function(_10f,_110,_111){ return Selector.findElement($(_10f).descendants(),_110,_111); },previous:function(_112,_113,_114){ return Selector.findElement($(_112).previousSiblings(),_113,_114); },next:function(_115,_116,_117){ return Selector.findElement($(_115).nextSiblings(),_116,_117); },getElementsBySelector:function(){ var args=$A(arguments),element=$(args.shift()); return Selector.findChildElements(element,args); },getElementsByClassName:function(_119,_11a){ return document.getElementsByClassName(_11a,_119); },readAttribute:function(_11b,name){ _11b=$(_11b); if(document.all&&!window.opera){ var t=Element._attributeTranslations; if(t.values[name]){ return t.values[name](_11b,name); } if(t.names[name]){ name=t.names[name]; } var _11e=_11b.attributes[name]; if(_11e){ return _11e.nodeValue; } } return _11b.getAttribute(name); },getHeight:function(_11f){ return $(_11f).getDimensions().height; },getWidth:function(_120){ return $(_120).getDimensions().width; },classNames:function(_121){ return new Element.ClassNames(_121); },hasClassName:function(_122,_123){ if(!(_122=$(_122))){ return; } var _124=_122.className; if(_124.length==0){ return false; } if(_124==_123||_124.match(new RegExp("(^|\\s)"+_123+"(\\s|$)"))){ return true; } return false; },addClassName:function(_125,_126){ if(!(_125=$(_125))){ return; } Element.classNames(_125).add(_126); return _125; },removeClassName:function(_127,_128){ if(!(_127=$(_127))){ return; } Element.classNames(_127).remove(_128); return _127; },toggleClassName:function(_129,_12a){ if(!(_129=$(_129))){ return; } Element.classNames(_129)[_129.hasClassName(_12a)?"remove":"add"](_12a); return _129; },observe:function(){ Event.observe.apply(Event,arguments); return $A(arguments).first(); },stopObserving:function(){ Event.stopObserving.apply(Event,arguments); return $A(arguments).first(); },cleanWhitespace:function(_12b){ _12b=$(_12b); var node=_12b.firstChild; while(node){ var _12d=node.nextSibling; if(node.nodeType==3&&!/\S/.test(node.nodeValue)){ _12b.removeChild(node); } node=_12d; } return _12b; },empty:function(_12e){ return $(_12e).innerHTML.match(/^\s*$/); },descendantOf:function(_12f,_130){ _12f=$(_12f),_130=$(_130); while(_12f=_12f.parentNode){ if(_12f==_130){ return true; } } return false; },scrollTo:function(_131){ _131=$(_131); var pos=Position.cumulativeOffset(_131); window.scrollTo(pos[0],pos[1]); return _131; },getStyle:function(_133,_134){ _133=$(_133); if(["float","cssFloat"].include(_134)){ _134=(typeof _133.style.styleFloat!="undefined"?"styleFloat":"cssFloat"); } _134=_134.camelize(); var _135=_133.style[_134]; if(!_135){ if(document.defaultView&&document.defaultView.getComputedStyle){ var css=document.defaultView.getComputedStyle(_133,null); _135=css?css[_134]:null; }else{ if(_133.currentStyle){ _135=_133.currentStyle[_134]; } } } if((_135=="auto")&&["width","height"].include(_134)&&(_133.getStyle("display")!="none")){ _135=_133["offset"+_134.capitalize()]+"px"; } if(window.opera&&["left","top","right","bottom"].include(_134)){ if(Element.getStyle(_133,"position")=="static"){ _135="auto"; } } if(_134=="opacity"){ if(_135){ return parseFloat(_135); } if(_135=(_133.getStyle("filter")||"").match(/alpha\(opacity=(.*)\)/)){ if(_135[1]){ return parseFloat(_135[1])/100; } } return 1; } return _135=="auto"?null:_135; },setStyle:function(_137,_138){ _137=$(_137); for(var name in _138){ var _13a=_138[name]; if(name=="opacity"){ if(_13a==1){ _13a=(/Gecko/.test(navigator.userAgent)&&!/Konqueror|Safari|KHTML/.test(navigator.userAgent))?0.999999:1; if(/MSIE/.test(navigator.userAgent)&&!window.opera){ _137.style.filter=_137.getStyle("filter").replace(/alpha\([^\)]*\)/gi,""); } }else{ if(_13a===""){ if(/MSIE/.test(navigator.userAgent)&&!window.opera){ _137.style.filter=_137.getStyle("filter").replace(/alpha\([^\)]*\)/gi,""); } }else{ if(_13a<0.00001){ _13a=0; } if(/MSIE/.test(navigator.userAgent)&&!window.opera){ _137.style.filter=_137.getStyle("filter").replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+_13a*100+")"; } } } }else{ if(["float","cssFloat"].include(name)){ name=(typeof _137.style.styleFloat!="undefined")?"styleFloat":"cssFloat"; } } _137.style[name.camelize()]=_13a; } return _137; },getDimensions:function(_13b){ _13b=$(_13b); var _13c=$(_13b).getStyle("display"); if(_13c!="none"&&_13c!=null){ return {width:_13b.offsetWidth,height:_13b.offsetHeight}; } var els=_13b.style; var _13e=els.visibility; var _13f=els.position; var _140=els.display; els.visibility="hidden"; els.position="absolute"; els.display="block"; var _141=_13b.clientWidth; var _142=_13b.clientHeight; els.display=_140; els.position=_13f; els.visibility=_13e; return {width:_141,height:_142}; },makePositioned:function(_143){ _143=$(_143); var pos=Element.getStyle(_143,"position"); if(pos=="static"||!pos){ _143._madePositioned=true; _143.style.position="relative"; if(window.opera){ _143.style.top=0; _143.style.left=0; } } return _143; },undoPositioned:function(_145){ _145=$(_145); if(_145._madePositioned){ _145._madePositioned=undefined; _145.style.position=_145.style.top=_145.style.left=_145.style.bottom=_145.style.right=""; } return _145; },makeClipping:function(_146){ _146=$(_146); if(_146._overflow){ return _146; } _146._overflow=_146.style.overflow||"auto"; if((Element.getStyle(_146,"overflow")||"visible")!="hidden"){ _146.style.overflow="hidden"; } return _146; },undoClipping:function(_147){ _147=$(_147); if(!_147._overflow){ return _147; } _147.style.overflow=_147._overflow=="auto"?"":_147._overflow; _147._overflow=null; return _147; }}; Object.extend(Element.Methods,{childOf:Element.Methods.descendantOf}); Element._attributeTranslations={}; Element._attributeTranslations.names={colspan:"colSpan",rowspan:"rowSpan",valign:"vAlign",datetime:"dateTime",accesskey:"accessKey",tabindex:"tabIndex",enctype:"encType",maxlength:"maxLength",readonly:"readOnly",longdesc:"longDesc"}; Element._attributeTranslations.values={_getAttr:function(_148,_149){ return _148.getAttribute(_149,2); },_flag:function(_14a,_14b){ return $(_14a).hasAttribute(_14b)?_14b:null; },style:function(_14c){ return _14c.style.cssText.toLowerCase(); },title:function(_14d){ var node=_14d.getAttributeNode("title"); return node.specified?node.nodeValue:null; }}; Object.extend(Element._attributeTranslations.values,{href:Element._attributeTranslations.values._getAttr,src:Element._attributeTranslations.values._getAttr,disabled:Element._attributeTranslations.values._flag,checked:Element._attributeTranslations.values._flag,readonly:Element._attributeTranslations.values._flag,multiple:Element._attributeTranslations.values._flag}); Element.Methods.Simulated={hasAttribute:function(_14f,_150){ var t=Element._attributeTranslations; _150=t.names[_150]||_150; return $(_14f).getAttributeNode(_150).specified; }}; if(document.all&&!window.opera){ Element.Methods.update=function(_152,html){ _152=$(_152); html=typeof html=="undefined"?"":html.toString(); var _154=_152.tagName.toUpperCase(); if(["THEAD","TBODY","TR","TD"].include(_154)){ var div=document.createElement("div"); switch(_154){ case "THEAD": case "TBODY": div.innerHTML=""+html.stripScripts()+"
"; depth=2; break; case "TR": div.innerHTML=""+html.stripScripts()+"
"; depth=3; break; case "TD": div.innerHTML="
"+html.stripScripts()+"
"; depth=4; } $A(_152.childNodes).each(function(node){ _152.removeChild(node); }); depth.times(function(){ div=div.firstChild; }); $A(div.childNodes).each(function(node){ _152.appendChild(node); }); }else{ _152.innerHTML=html.stripScripts(); } setTimeout(function(){ html.evalScripts(); },10); return _152; }; } Object.extend(Element,Element.Methods); var _nativeExtensions=false; if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){ ["","Form","Input","TextArea","Select"].each(function(tag){ var _159="HTML"+tag+"Element"; if(window[_159]){ return; } var _15a=window[_159]={}; _15a.prototype=document.createElement(tag?tag.toLowerCase():"div").__proto__; }); } Element.addMethods=function(_15b){ Object.extend(Element.Methods,_15b||{}); function copy(_15c,_15d,_15e){ _15e=_15e||false; var _15f=Element.extend.cache; for(var _160 in _15c){ var _161=_15c[_160]; if(!_15e||!(_160 in _15d)){ _15d[_160]=_15f.findOrStore(_161); } } } if(typeof HTMLElement!="undefined"){ copy(Element.Methods,HTMLElement.prototype); copy(Element.Methods.Simulated,HTMLElement.prototype,true); copy(Form.Methods,HTMLFormElement.prototype); [HTMLInputElement,HTMLTextAreaElement,HTMLSelectElement].each(function(_162){ copy(Form.Element.Methods,_162.prototype); }); _nativeExtensions=true; } }; var Toggle=new Object(); Toggle.display=Element.toggle; Abstract.Insertion=function(_163){ this.adjacency=_163; }; Abstract.Insertion.prototype={initialize:function(_164,_165){ this.element=$(_164); this.content=_165.stripScripts(); if(this.adjacency&&this.element.insertAdjacentHTML){ try{ this.element.insertAdjacentHTML(this.adjacency,this.content); } catch(e){ var _166=this.element.tagName.toUpperCase(); if(["TBODY","TR"].include(_166)){ this.insertContent(this.contentFromAnonymousTable()); }else{ throw e; } } }else{ this.range=this.element.ownerDocument.createRange(); if(this.initializeRange){ this.initializeRange(); } this.insertContent([this.range.createContextualFragment(this.content)]); } setTimeout(function(){ _165.evalScripts(); },10); },contentFromAnonymousTable:function(){ var div=document.createElement("div"); div.innerHTML=""+this.content+"
"; return $A(div.childNodes[0].childNodes[0].childNodes); }}; var Insertion=new Object(); Insertion.Before=Class.create(); Insertion.Before.prototype=Object.extend(new Abstract.Insertion("beforeBegin"),{initializeRange:function(){ this.range.setStartBefore(this.element); },insertContent:function(_168){ _168.each((function(_169){ this.element.parentNode.insertBefore(_169,this.element); }).bind(this)); }}); Insertion.Top=Class.create(); Insertion.Top.prototype=Object.extend(new Abstract.Insertion("afterBegin"),{initializeRange:function(){ this.range.selectNodeContents(this.element); this.range.collapse(true); },insertContent:function(_16a){ _16a.reverse(false).each((function(_16b){ this.element.insertBefore(_16b,this.element.firstChild); }).bind(this)); }}); Insertion.Bottom=Class.create(); Insertion.Bottom.prototype=Object.extend(new Abstract.Insertion("beforeEnd"),{initializeRange:function(){ this.range.selectNodeContents(this.element); this.range.collapse(this.element); },insertContent:function(_16c){ _16c.each((function(_16d){ this.element.appendChild(_16d); }).bind(this)); }}); Insertion.After=Class.create(); Insertion.After.prototype=Object.extend(new Abstract.Insertion("afterEnd"),{initializeRange:function(){ this.range.setStartAfter(this.element); },insertContent:function(_16e){ _16e.each((function(_16f){ this.element.parentNode.insertBefore(_16f,this.element.nextSibling); }).bind(this)); }}); Element.ClassNames=Class.create(); Element.ClassNames.prototype={initialize:function(_170){ this.element=$(_170); },_each:function(_171){ this.element.className.split(/\s+/).select(function(name){ return name.length>0; })._each(_171); },set:function(_173){ this.element.className=_173; },add:function(_174){ if(this.include(_174)){ return; } this.set($A(this).concat(_174).join(" ")); },remove:function(_175){ if(!this.include(_175)){ return; } this.set($A(this).without(_175).join(" ")); },toString:function(){ return $A(this).join(" "); }}; Object.extend(Element.ClassNames.prototype,Enumerable); var Selector=Class.create(); Selector.prototype={initialize:function(_176){ this.params={classNames:[]}; this.expression=_176.toString().strip(); this.parseExpression(); this.compileMatcher(); },parseExpression:function(){ function abort(_177){ throw "Parse error in selector: "+_177; } if(this.expression==""){ abort("empty expression"); } var _178=this.params,expr=this.expression,match,modifier,clause,rest; while(match=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){ _178.attributes=_178.attributes||[]; _178.attributes.push({name:match[2],operator:match[3],value:match[4]||match[5]||""}); expr=match[1]; } if(expr=="*"){ return this.params.wildcard=true; } while(match=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)){ modifier=match[1],clause=match[2],rest=match[3]; switch(modifier){ case "#": _178.id=clause; break; case ".": _178.classNames.push(clause); break; case "": case undefined: _178.tagName=clause.toUpperCase(); break; default: abort(expr.inspect()); } expr=rest; } if(expr.length>0){ abort(expr.inspect()); } },buildMatchExpression:function(){ var _179=this.params,conditions=[],clause; if(_179.wildcard){ conditions.push("true"); } if(clause=_179.id){ conditions.push("element.readAttribute(\"id\") == "+clause.inspect()); } if(clause=_179.tagName){ conditions.push("element.tagName.toUpperCase() == "+clause.inspect()); } if((clause=_179.classNames).length>0){ for(var i=0,length=clause.length;i=0?this.optionValue(_1ba.options[_1bb]):null; },selectMany:function(_1bc){ var _1bd,length=_1bc.length; if(!length){ return null; } for(var i=0,_1bd=[];i=this.offset[1]&&y=this.offset[0]&&x=this.offset[1]&&this.ycomp=this.offset[0]&&this.xcomp'); }, load: function() { if((typeof Prototype=='undefined') || (typeof Element == 'undefined') || (typeof Element.Methods=='undefined') || parseFloat(Prototype.Version.split(".")[0] + "." + Prototype.Version.split(".")[1]) < 1.5) throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0"); $A(document.getElementsByTagName("script")).findAll( function(s) { return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/)) }).each( function(s) { var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,''); var includes = s.src.match(/\?.*load=([a-z,]*)/); (includes ? includes[1] : 'effects').split(',').each( function(include) { Scriptaculous.require(path+include+'.js') }); }); } } Scriptaculous.load(); kajmakot/media/js/scriptaculous/effects.js0000644000175000001440000006322310570607600020110 0ustar gogousersString.prototype.parseColor=function(){var _1="#";if(this.slice(0,4)=="rgb("){var _2=this.slice(4,this.length-1).split(",");var i=0;do{_1+=parseInt(_2[i]).toColorPart();}while(++i<3);}else{if(this.slice(0,1)=="#"){if(this.length==4){for(var i=1;i<4;i++){_1+=(this.charAt(i)+this.charAt(i)).toLowerCase();}}if(this.length==7){_1=this.toLowerCase();}}}return (_1.length==7?_1:(arguments[0]||this));};Element.collectTextNodes=function(_5){return $A($(_5).childNodes).collect(function(_6){return (_6.nodeType==3?_6.nodeValue:(_6.hasChildNodes()?Element.collectTextNodes(_6):""));}).flatten().join("");};Element.collectTextNodesIgnoreClass=function(_7,_8){return $A($(_7).childNodes).collect(function(_9){return (_9.nodeType==3?_9.nodeValue:((_9.hasChildNodes()&&!Element.hasClassName(_9,_8))?Element.collectTextNodesIgnoreClass(_9,_8):""));}).flatten().join("");};Element.setContentZoom=function(_a,_b){_a=$(_a);_a.setStyle({fontSize:(_b/100)+"em"});if(navigator.appVersion.indexOf("AppleWebKit")>0){window.scrollBy(0,0);}return _a;};Element.getOpacity=function(_c){return $(_c).getStyle("opacity");};Element.setOpacity=function(_d,_e){return $(_d).setStyle({opacity:_e});};Element.getInlineOpacity=function(_f){return $(_f).style.opacity||"";};Element.forceRerendering=function(_10){try{_10=$(_10);var n=document.createTextNode(" ");_10.appendChild(n);_10.removeChild(n);}catch(e){}};Array.prototype.call=function(){var _12=arguments;this.each(function(f){f.apply(this,_12);});};var Effect={_elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},tagifyText:function(_14){if(typeof Builder=="undefined"){throw ("Effect.tagifyText requires including script.aculo.us' builder.js library");}var _15="position:relative";if(/MSIE/.test(navigator.userAgent)&&!window.opera){_15+=";zoom:1";}_14=$(_14);$A(_14.childNodes).each(function(_16){if(_16.nodeType==3){_16.nodeValue.toArray().each(function(_17){_14.insertBefore(Builder.node("span",{style:_15},_17==" "?String.fromCharCode(160):_17),_16);});Element.remove(_16);}});},multiple:function(_18,_19){var _1a;if(((typeof _18=="object")||(typeof _18=="function"))&&(_18.length)){_1a=_18;}else{_1a=$(_18).childNodes;}var _1b=Object.extend({speed:0.1,delay:0},arguments[2]||{});var _1c=_1b.delay;$A(_1a).each(function(_1d,_1e){new _19(_1d,Object.extend(_1b,{delay:_1e*_1b.speed+_1c}));});},PAIRS:{"slide":["SlideDown","SlideUp"],"blind":["BlindDown","BlindUp"],"appear":["Appear","Fade"]},toggle:function(_1f,_20){_1f=$(_1f);_20=(_20||"appear").toLowerCase();var _21=Object.extend({queue:{position:"end",scope:(_1f.id||"global"),limit:1}},arguments[2]||{});Effect[_1f.visible()?Effect.PAIRS[_20][1]:Effect.PAIRS[_20][0]](_1f,_21);}};var Effect2=Effect;Effect.Transitions={linear:Prototype.K,sinoidal:function(pos){return (-Math.cos(pos*Math.PI)/2)+0.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){return ((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;},wobble:function(pos){return (-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;},pulse:function(pos,_27){_27=_27||5;return (Math.round((pos%(1/_27))*_27)==0?((pos*_27*2)-Math.floor(pos*_27*2)):1-((pos*_27*2)-Math.floor(pos*_27*2)));},none:function(pos){return 0;},full:function(pos){return 1;}};Effect.ScopedQueue=Class.create();Object.extend(Object.extend(Effect.ScopedQueue.prototype,Enumerable),{initialize:function(){this.effects=[];this.interval=null;},_each:function(_2a){this.effects._each(_2a);},add:function(_2b){var _2c=new Date().getTime();var _2d=(typeof _2b.options.queue=="string")?_2b.options.queue:_2b.options.queue.position;switch(_2d){case "front":this.effects.findAll(function(e){return e.state=="idle";}).each(function(e){e.startOn+=_2b.finishOn;e.finishOn+=_2b.finishOn;});break;case "with-last":_2c=this.effects.pluck("startOn").max()||_2c;break;case "end":_2c=this.effects.pluck("finishOn").max()||_2c;break;}_2b.startOn+=_2c;_2b.finishOn+=_2c;if(!_2b.options.queue.limit||(this.effects.length<_2b.options.queue.limit)){this.effects.push(_2b);}if(!this.interval){this.interval=setInterval(this.loop.bind(this),15);}},remove:function(_30){this.effects=this.effects.reject(function(e){return e==_30;});if(this.effects.length==0){clearInterval(this.interval);this.interval=null;}},loop:function(){var _32=new Date().getTime();for(var i=0,len=this.effects.length;i=this.startOn){if(_36>=this.finishOn){this.render(1);this.cancel();this.event("beforeFinish");if(this.finish){this.finish();}this.event("afterFinish");return;}var pos=(_36-this.startOn)/(this.finishOn-this.startOn);var _38=Math.round(pos*this.options.fps*this.options.duration);if(_38>this.currentFrame){this.render(pos);this.currentFrame=_38;}}},render:function(pos){if(this.state=="idle"){this.state="running";this.event("beforeSetup");if(this.setup){this.setup();}this.event("afterSetup");}if(this.state=="running"){if(this.options.transition){pos=this.options.transition(pos);}pos*=(this.options.to-this.options.from);pos+=this.options.from;this.position=pos;this.event("beforeUpdate");if(this.update){this.update(pos);}this.event("afterUpdate");}},cancel:function(){if(!this.options.sync){Effect.Queues.get(typeof this.options.queue=="string"?"global":this.options.queue.scope).remove(this);}this.state="finished";},event:function(_3a){if(this.options[_3a+"Internal"]){this.options[_3a+"Internal"](this);}if(this.options[_3a]){this.options[_3a](this);}},inspect:function(){var _3b=$H();for(property in this){if(typeof this[property]!="function"){_3b[property]=this[property];}}return "#";}};Effect.Parallel=Class.create();Object.extend(Object.extend(Effect.Parallel.prototype,Effect.Base.prototype),{initialize:function(_3c){this.effects=_3c||[];this.start(arguments[1]);},update:function(_3d){this.effects.invoke("render",_3d);},finish:function(_3e){this.effects.each(function(_3f){_3f.render(1);_3f.cancel();_3f.event("beforeFinish");if(_3f.finish){_3f.finish(_3e);}_3f.event("afterFinish");});}});Effect.Event=Class.create();Object.extend(Object.extend(Effect.Event.prototype,Effect.Base.prototype),{initialize:function(){var _40=Object.extend({duration:0},arguments[0]||{});this.start(_40);},update:Prototype.emptyFunction});Effect.Opacity=Class.create();Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize:function(_41){this.element=$(_41);if(!this.element){throw (Effect._elementDoesNotExistError);}if(/MSIE/.test(navigator.userAgent)&&!window.opera&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1});}var _42=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});this.start(_42);},update:function(_43){this.element.setOpacity(_43);}});Effect.Move=Class.create();Object.extend(Object.extend(Effect.Move.prototype,Effect.Base.prototype),{initialize:function(_44){this.element=$(_44);if(!this.element){throw (Effect._elementDoesNotExistError);}var _45=Object.extend({x:0,y:0,mode:"relative"},arguments[1]||{});this.start(_45);},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle("left")||"0");this.originalTop=parseFloat(this.element.getStyle("top")||"0");if(this.options.mode=="absolute"){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop;}},update:function(_46){this.element.setStyle({left:Math.round(this.options.x*_46+this.originalLeft)+"px",top:Math.round(this.options.y*_46+this.originalTop)+"px"});}});Effect.MoveBy=function(_47,_48,_49){return new Effect.Move(_47,Object.extend({x:_49,y:_48},arguments[3]||{}));};Effect.Scale=Class.create();Object.extend(Object.extend(Effect.Scale.prototype,Effect.Base.prototype),{initialize:function(_4a,_4b){this.element=$(_4a);if(!this.element){throw (Effect._elementDoesNotExistError);}var _4c=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:_4b},arguments[2]||{});this.start(_4c);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle("position");this.originalStyle={};["top","left","width","height","fontSize"].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var _4e=this.element.getStyle("font-size")||"100%";["em","px","%","pt"].each(function(_4f){if(_4e.indexOf(_4f)>0){this.fontSize=parseFloat(_4e);this.fontSizeType=_4f;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=="box"){this.dims=[this.element.offsetHeight,this.element.offsetWidth];}if(/^content/.test(this.options.scaleMode)){this.dims=[this.element.scrollHeight,this.element.scrollWidth];}if(!this.dims){this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];}},update:function(_50){var _51=(this.options.scaleFrom/100)+(this.factor*_50);if(this.options.scaleContent&&this.fontSize){this.element.setStyle({fontSize:this.fontSize*_51+this.fontSizeType});}this.setDimensions(this.dims[0]*_51,this.dims[1]*_51);},finish:function(_52){if(this.restoreAfterFinish){this.element.setStyle(this.originalStyle);}},setDimensions:function(_53,_54){var d={};if(this.options.scaleX){d.width=Math.round(_54)+"px";}if(this.options.scaleY){d.height=Math.round(_53)+"px";}if(this.options.scaleFromCenter){var _56=(_53-this.dims[0])/2;var _57=(_54-this.dims[1])/2;if(this.elementPositioning=="absolute"){if(this.options.scaleY){d.top=this.originalTop-_56+"px";}if(this.options.scaleX){d.left=this.originalLeft-_57+"px";}}else{if(this.options.scaleY){d.top=-_56+"px";}if(this.options.scaleX){d.left=-_57+"px";}}}this.element.setStyle(d);}});Effect.Highlight=Class.create();Object.extend(Object.extend(Effect.Highlight.prototype,Effect.Base.prototype),{initialize:function(_58){this.element=$(_58);if(!this.element){throw (Effect._elementDoesNotExistError);}var _59=Object.extend({startcolor:"#ffff99"},arguments[1]||{});this.start(_59);},setup:function(){if(this.element.getStyle("display")=="none"){this.cancel();return;}this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle("background-image");this.element.setStyle({backgroundImage:"none"});}if(!this.options.endcolor){this.options.endcolor=this.element.getStyle("background-color").parseColor("#ffffff");}if(!this.options.restorecolor){this.options.restorecolor=this.element.getStyle("background-color");}this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16);}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i];}.bind(this));},update:function(_5c){this.element.setStyle({backgroundColor:$R(0,2).inject("#",function(m,v,i){return m+(Math.round(this._base[i]+(this._delta[i]*_5c)).toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=Class.create();Object.extend(Object.extend(Effect.ScrollTo.prototype,Effect.Base.prototype),{initialize:function(_60){this.element=$(_60);this.start(arguments[1]||{});},setup:function(){Position.prepare();var _61=Position.cumulativeOffset(this.element);if(this.options.offset){_61[1]+=this.options.offset;}var max=window.innerHeight?window.height-window.innerHeight:document.body.scrollHeight-(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=Position.deltaY;this.delta=(_61[1]>max?max:_61[1])-this.scrollStart;},update:function(_63){Position.prepare();window.scrollTo(Position.deltaX,this.scrollStart+(_63*this.delta));}});Effect.Fade=function(_64){_64=$(_64);var _65=_64.getInlineOpacity();var _66=Object.extend({from:_64.getOpacity()||1,to:0,afterFinishInternal:function(_67){if(_67.options.to!=0){return;}_67.element.hide().setStyle({opacity:_65});}},arguments[1]||{});return new Effect.Opacity(_64,_66);};Effect.Appear=function(_68){_68=$(_68);var _69=Object.extend({from:(_68.getStyle("display")=="none"?0:_68.getOpacity()||0),to:1,afterFinishInternal:function(_6a){_6a.element.forceRerendering();},beforeSetup:function(_6b){_6b.element.setOpacity(_6b.options.from).show();}},arguments[1]||{});return new Effect.Opacity(_68,_69);};Effect.Puff=function(_6c){_6c=$(_6c);var _6d={opacity:_6c.getInlineOpacity(),position:_6c.getStyle("position"),top:_6c.style.top,left:_6c.style.left,width:_6c.style.width,height:_6c.style.height};return new Effect.Parallel([new Effect.Scale(_6c,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(_6c,{sync:true,to:0})],Object.extend({duration:1,beforeSetupInternal:function(_6e){Position.absolutize(_6e.effects[0].element);},afterFinishInternal:function(_6f){_6f.effects[0].element.hide().setStyle(_6d);}},arguments[1]||{}));};Effect.BlindUp=function(_70){_70=$(_70);_70.makeClipping();return new Effect.Scale(_70,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(_71){_71.element.hide().undoClipping();}},arguments[1]||{}));};Effect.BlindDown=function(_72){_72=$(_72);var _73=_72.getDimensions();return new Effect.Scale(_72,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_73.height,originalWidth:_73.width},restoreAfterFinish:true,afterSetup:function(_74){_74.element.makeClipping().setStyle({height:"0px"}).show();},afterFinishInternal:function(_75){_75.element.undoClipping();}},arguments[1]||{}));};Effect.SwitchOff=function(_76){_76=$(_76);var _77=_76.getInlineOpacity();return new Effect.Appear(_76,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(_78){new Effect.Scale(_78.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(_79){_79.element.makePositioned().makeClipping();},afterFinishInternal:function(_7a){_7a.element.hide().undoClipping().undoPositioned().setStyle({opacity:_77});}});}},arguments[1]||{}));};Effect.DropOut=function(_7b){_7b=$(_7b);var _7c={top:_7b.getStyle("top"),left:_7b.getStyle("left"),opacity:_7b.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(_7b,{x:0,y:100,sync:true}),new Effect.Opacity(_7b,{sync:true,to:0})],Object.extend({duration:0.5,beforeSetup:function(_7d){_7d.effects[0].element.makePositioned();},afterFinishInternal:function(_7e){_7e.effects[0].element.hide().undoPositioned().setStyle(_7c);}},arguments[1]||{}));};Effect.Shake=function(_7f){_7f=$(_7f);var _80={top:_7f.getStyle("top"),left:_7f.getStyle("left")};return new Effect.Move(_7f,{x:20,y:0,duration:0.05,afterFinishInternal:function(_81){new Effect.Move(_81.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_82){new Effect.Move(_82.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_83){new Effect.Move(_83.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_84){new Effect.Move(_84.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_85){new Effect.Move(_85.element,{x:-20,y:0,duration:0.05,afterFinishInternal:function(_86){_86.element.undoPositioned().setStyle(_80);}});}});}});}});}});}});};Effect.SlideDown=function(_87){_87=$(_87).cleanWhitespace();var _88=_87.down().getStyle("bottom");var _89=_87.getDimensions();return new Effect.Scale(_87,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:_89.height,originalWidth:_89.width},restoreAfterFinish:true,afterSetup:function(_8a){_8a.element.makePositioned();_8a.element.down().makePositioned();if(window.opera){_8a.element.setStyle({top:""});}_8a.element.makeClipping().setStyle({height:"0px"}).show();},afterUpdateInternal:function(_8b){_8b.element.down().setStyle({bottom:(_8b.dims[0]-_8b.element.clientHeight)+"px"});},afterFinishInternal:function(_8c){_8c.element.undoClipping().undoPositioned();_8c.element.down().undoPositioned().setStyle({bottom:_88});}},arguments[1]||{}));};Effect.SlideUp=function(_8d){_8d=$(_8d).cleanWhitespace();var _8e=_8d.down().getStyle("bottom");return new Effect.Scale(_8d,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(_8f){_8f.element.makePositioned();_8f.element.down().makePositioned();if(window.opera){_8f.element.setStyle({top:""});}_8f.element.makeClipping().show();},afterUpdateInternal:function(_90){_90.element.down().setStyle({bottom:(_90.dims[0]-_90.element.clientHeight)+"px"});},afterFinishInternal:function(_91){_91.element.hide().undoClipping().undoPositioned().setStyle({bottom:_8e});_91.element.down().undoPositioned();}},arguments[1]||{}));};Effect.Squish=function(_92){return new Effect.Scale(_92,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(_93){_93.element.makeClipping();},afterFinishInternal:function(_94){_94.element.hide().undoClipping();}});};Effect.Grow=function(_95){_95=$(_95);var _96=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var _97={top:_95.style.top,left:_95.style.left,height:_95.style.height,width:_95.style.width,opacity:_95.getInlineOpacity()};var _98=_95.getDimensions();var _99,initialMoveY;var _9a,moveY;switch(_96.direction){case "top-left":_99=initialMoveY=_9a=moveY=0;break;case "top-right":_99=_98.width;initialMoveY=moveY=0;_9a=-_98.width;break;case "bottom-left":_99=_9a=0;initialMoveY=_98.height;moveY=-_98.height;break;case "bottom-right":_99=_98.width;initialMoveY=_98.height;_9a=-_98.width;moveY=-_98.height;break;case "center":_99=_98.width/2;initialMoveY=_98.height/2;_9a=-_98.width/2;moveY=-_98.height/2;break;}return new Effect.Move(_95,{x:_99,y:initialMoveY,duration:0.01,beforeSetup:function(_9b){_9b.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(_9c){new Effect.Parallel([new Effect.Opacity(_9c.element,{sync:true,to:1,from:0,transition:_96.opacityTransition}),new Effect.Move(_9c.element,{x:_9a,y:moveY,sync:true,transition:_96.moveTransition}),new Effect.Scale(_9c.element,100,{scaleMode:{originalHeight:_98.height,originalWidth:_98.width},sync:true,scaleFrom:window.opera?1:0,transition:_96.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(_9d){_9d.effects[0].element.setStyle({height:"0px"}).show();},afterFinishInternal:function(_9e){_9e.effects[0].element.undoClipping().undoPositioned().setStyle(_97);}},_96));}});};Effect.Shrink=function(_9f){_9f=$(_9f);var _a0=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var _a1={top:_9f.style.top,left:_9f.style.left,height:_9f.style.height,width:_9f.style.width,opacity:_9f.getInlineOpacity()};var _a2=_9f.getDimensions();var _a3,moveY;switch(_a0.direction){case "top-left":_a3=moveY=0;break;case "top-right":_a3=_a2.width;moveY=0;break;case "bottom-left":_a3=0;moveY=_a2.height;break;case "bottom-right":_a3=_a2.width;moveY=_a2.height;break;case "center":_a3=_a2.width/2;moveY=_a2.height/2;break;}return new Effect.Parallel([new Effect.Opacity(_9f,{sync:true,to:0,from:1,transition:_a0.opacityTransition}),new Effect.Scale(_9f,window.opera?1:0,{sync:true,transition:_a0.scaleTransition,restoreAfterFinish:true}),new Effect.Move(_9f,{x:_a3,y:moveY,sync:true,transition:_a0.moveTransition})],Object.extend({beforeStartInternal:function(_a4){_a4.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(_a5){_a5.effects[0].element.hide().undoClipping().undoPositioned().setStyle(_a1);}},_a0));};Effect.Pulsate=function(_a6){_a6=$(_a6);var _a7=arguments[1]||{};var _a8=_a6.getInlineOpacity();var _a9=_a7.transition||Effect.Transitions.sinoidal;var _aa=function(pos){return _a9(1-Effect.Transitions.pulse(pos,_a7.pulses));};_aa.bind(_a9);return new Effect.Opacity(_a6,Object.extend(Object.extend({duration:2,from:0,afterFinishInternal:function(_ac){_ac.element.setStyle({opacity:_a8});}},_a7),{transition:_aa}));};Effect.Fold=function(_ad){_ad=$(_ad);var _ae={top:_ad.style.top,left:_ad.style.left,width:_ad.style.width,height:_ad.style.height};_ad.makeClipping();return new Effect.Scale(_ad,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(_af){new Effect.Scale(_ad,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(_b0){_b0.element.hide().undoClipping().setStyle(_ae);}});}},arguments[1]||{}));};Effect.Morph=Class.create();Object.extend(Object.extend(Effect.Morph.prototype,Effect.Base.prototype),{initialize:function(_b1){this.element=$(_b1);if(!this.element){throw (Effect._elementDoesNotExistError);}var _b2=Object.extend({style:{}},arguments[1]||{});if(typeof _b2.style=="string"){if(_b2.style.indexOf(":")==-1){var _b3="",selector="."+_b2.style;$A(document.styleSheets).reverse().each(function(_b4){if(_b4.cssRules){cssRules=_b4.cssRules;}else{if(_b4.rules){cssRules=_b4.rules;}}$A(cssRules).reverse().each(function(_b5){if(selector==_b5.selectorText){_b3=_b5.style.cssText;throw $break;}});if(_b3){throw $break;}});this.style=_b3.parseStyle();_b2.afterFinishInternal=function(_b6){_b6.element.addClassName(_b6.options.style);_b6.transforms.each(function(_b7){if(_b7.style!="opacity"){_b6.element.style[_b7.style.camelize()]="";}});};}else{this.style=_b2.style.parseStyle();}}else{this.style=$H(_b2.style);}this.start(_b2);},setup:function(){function parseColor(_b8){if(!_b8||["rgba(0, 0, 0, 0)","transparent"].include(_b8)){_b8="#ffffff";}_b8=_b8.parseColor();return $R(0,2).map(function(i){return parseInt(_b8.slice(i*2+1,i*2+3),16);});}this.transforms=this.style.map(function(_ba){var _bb=_ba[0].underscore().dasherize(),value=_ba[1],unit=null;if(value.parseColor("#zzzzzz")!="#zzzzzz"){value=value.parseColor();unit="color";}else{if(_bb=="opacity"){value=parseFloat(value);if(/MSIE/.test(navigator.userAgent)&&!window.opera&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1});}}else{if(Element.CSS_LENGTH.test(value)){var _bc=value.match(/^([\+\-]?[0-9\.]+)(.*)$/),value=parseFloat(_bc[1]),unit=(_bc.length==3)?_bc[2]:null;}}}var _bd=this.element.getStyle(_bb);return $H({style:_bb,originalValue:unit=="color"?parseColor(_bd):parseFloat(_bd||0),targetValue:unit=="color"?parseColor(value):value,unit:unit});}.bind(this)).reject(function(_be){return ((_be.originalValue==_be.targetValue)||(_be.unit!="color"&&(isNaN(_be.originalValue)||isNaN(_be.targetValue))));});},update:function(_bf){var _c0=$H(),value=null;this.transforms.each(function(_c1){value=_c1.unit=="color"?$R(0,2).inject("#",function(m,v,i){return m+(Math.round(_c1.originalValue[i]+(_c1.targetValue[i]-_c1.originalValue[i])*_bf)).toColorPart();}):_c1.originalValue+Math.round(((_c1.targetValue-_c1.originalValue)*_bf)*1000)/1000+_c1.unit;_c0[_c1.style]=value;});this.element.setStyle(_c0);}});Effect.Transform=Class.create();Object.extend(Effect.Transform.prototype,{initialize:function(_c5){this.tracks=[];this.options=arguments[1]||{};this.addTracks(_c5);},addTracks:function(_c6){_c6.each(function(_c7){var _c8=$H(_c7).values().first();this.tracks.push($H({ids:$H(_c7).keys().first(),effect:Effect.Morph,options:{style:_c8}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(_c9){var _ca=[$(_c9.ids)||$$(_c9.ids)].flatten();return _ca.map(function(e){return new _c9.effect(e,Object.extend({sync:true},_c9.options));});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle "+"borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth "+"borderRightColor borderRightStyle borderRightWidth borderSpacing "+"borderTopColor borderTopStyle borderTopWidth bottom clip color "+"fontSize fontWeight height left letterSpacing lineHeight "+"marginBottom marginLeft marginRight marginTop markerOffset maxHeight "+"maxWidth minHeight minWidth opacity outlineColor outlineOffset "+"outlineWidth paddingBottom paddingLeft paddingRight paddingTop "+"right textIndent top width wordSpacing zIndex");Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.prototype.parseStyle=function(){var _cc=Element.extend(document.createElement("div"));_cc.innerHTML="
";var _cd=_cc.down().style,styleRules=$H();Element.CSS_PROPERTIES.each(function(_ce){if(_cd[_ce]){styleRules[_ce]=_cd[_ce];}});if(/MSIE/.test(navigator.userAgent)&&!window.opera&&this.indexOf("opacity")>-1){styleRules.opacity=this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1];}return styleRules;};Element.morph=function(_cf,_d0){new Effect.Morph(_cf,Object.extend({style:_d0},arguments[2]||{}));return _cf;};["setOpacity","getOpacity","getInlineOpacity","forceRerendering","setContentZoom","collectTextNodes","collectTextNodesIgnoreClass","morph"].each(function(f){Element.Methods[f]=Element[f];});Element.Methods.visualEffect=function(_d2,_d3,_d4){s=_d3.gsub(/_/,"-").camelize();effect_class=s.charAt(0).toUpperCase()+s.substring(1);new Effect[effect_class](_d2,_d4);return $(_d2);};Element.addMethods();kajmakot/media/css/0000755000175000001440000000000010573630554013410 5ustar gogouserskajmakot/media/css/stilie6.css0000644000175000001440000000107010572623237015476 0ustar gogousers.warning { height: 9em; background: url(/media/sliki/matte.gif); left: -100px; } .warning div { height: 35px; } .najavapopup, .regpopup { background: url(/media/sliki/matte.gif); } #paginator { margin-top: 4em; } .najavaform input.sffocus, .formprvcekor input.sffocus, .formprvcekor textarea.sffocus { color: rgb(165, 123, 70); background-color: rgb(255, 250, 219); background-image:url(../sliki/pencil.gif); background-repeat:no-repeat; background-position: bottom right; } #sesporaka { margin-bottom: 0; } kajmakot/media/css/stilsvezhi.css0000644000175000001440000000160110572140453016315 0ustar gogousers/* Override na stilovite za svezhite stranici. */ /* origin: #d9b87f , potemna #c5a46c, fae8ba rgb(217, 184, 127); rgb(207, 174, 117). #6bba70*/ #pointermenu2{ background: #6BBA70 url(../sliki/rightround2svezhi.gif) bottom right no-repeat; } #pointermenu2 ul { background: #6BBA70 url(../sliki/leftround2svezhi.gif) bottom left no-repeat; } #pointermenu2 ul li a span { color: #006E2E; } .glasano a{ background: transparent url(../sliki/vote-active-svezhi.gif) no-repeat left top; } .glasaj a:hover { background: transparent url(../sliki/vote-active-svezhi.gif) no-repeat left top; } #paginator li a, #paginator li span { border: 1px solid #6BBA70; color: #6BBA70; } #paginator li span { color: #ffffff; background-color: #6BBA70; } #paginator a:hover { border: 1px solid #008C00; } .storii h2 a, .storii h2 a:visited { color: #6BBA70; } kajmakot/media/css/stil.css0000644000175000001440000002360710573626755015115 0ustar gogousersbody { margin: 0; font-family: verdana, arial, helvetica, sans-serif; } div { } div#sodrzhina { width: 95%; margin-top: 0; margin-bottom: 0px; margin-left: auto; margin-right: auto; padding: 0px; } a, a:visited { color: #554fa0; } a:hover { color: #5b52cb; } input[disabled] { background-color: #eeeeee; color: #dbdbdb; } .warning { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 200000; background-image: url(../sliki/prodzirno.png); } .warning div { margin: 20px 0 0 20px; float: left; position: relative; padding-bottom: 10px; border: 1px solid black; background-color: #ffffff; } .zatvori { position: absolute; top: -18px; right: -18px; } #heder { background: #f1d79e; margin-bottom: 0; width: 100%; float: left; clear: both; } .logo { font-weight: bold; padding: 1em; float: left; position: relative; } .logo a { text-decoration: none; color: black; } .linkovi { float: right; position: relative; margin-top: 2em; width: 50%; text-align: right; font-size: 80%; color: #a57b46; } .linkovi a, .linkovi a:visited { margin-right: 2em; color: #554fa0; } .linkovi a:hover { text-decoration: none; } .najavapopup { position: absolute; top: 1em; right: 1em; border: 1px solid black; padding: 1em; background-image: url(../sliki/prodzirno.png); width: 14em; z-index: 999999; } .regpopup { position: absolute; top: 1em; right: 2em; border: 1px solid black; padding: 1em; background-image: url(../sliki/prodzirno.png); width: 20em; text-align: center; z-index: 999999; } #poppDiv img.iks { border: 0; position: absolute; top: 9px; right: 9px; } form.najavaform fieldset { padding: 1em; margin: 0; } form.najavaform label { color:#646729; font-size:90%; font-weight:bold; display:block; text-align: left; } input.najavaform:focus { background-color:#fbfbf2; background-image:url(../sliki/pencil.gif); background-repeat:no-repeat; background-position: bottom right; color: rgb(165, 123, 70); background-color: rgb(255, 250, 219); } input.najavaform, .najavaformsubmit { width: 100%; font-size: 100%; } /* sekoja storija */ .storii { position: relative; clear: left; margin: 3em 1em 1em 1em; } .storii h2 { margin: 0; font-size: 110%; } .storii h2 a, .storii h2 a:visited { color: #B89A68; } .storii h2 a:hover { color: #B89A68; } .storii p { margin: 0.5em; } .str_detali { font-size: 80%; margin-left: 1em; } p.podstatija { font-size: 80%; width: 60%; margin-left: 80px; padding-left: 2em; } p.podstatija, p.podstatija a, p.podstatija a:visited, .str_detali, .str_detali a, .str_detali a:visited { color: #c5a46c; color: grey; color: #88724C; } /* slikichkata za glasanje */ .glasaj a, .glasano a { display:block; float:left; width:80px; height:80px; text-align:center; text-decoration:none; cursor:pointer; margin-right: 10px; } .glasaj a { background:transparent url(../sliki/vote.gif) no-repeat left top; } .glasano a{ background:transparent url(../sliki/vote-active.gif) no-repeat left top; } .glasaj a:hover { background:transparent url(../sliki/vote-active.gif) no-repeat left top; } .glasaj a b.broj, .glasano a b.broj { font-family:Arial Black, Arial, Helvetica, sans-serif; font-size:24px; font-weight:normal; display:block; margin-top:12px; } .glasaj a b.broj { color:#ccdaba; } .glasano a b.broj { color:#e6f9d7; } .glasaj a:hover b.broj{ color:#e6f9d7; } .glasaj a b.akcija, .glasano a b.akcija { font-family:"Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; font-size:10px; font-weight:bold; text-transform:uppercase; display:block; margin:0; padding:0; height:auto !important; height:1px; /* fix for IE */ } .glasaj a b.akcija { color:#ccdaba; } .glasano a b.akcija { color: #e6f9d7; } .glasaj a:hover b.akcija{ color:#e6f9d7; } #levo { clear: none; width: 74%; margin: 0; padding: 0; } #desno { float: right; width: 25%; margin-top: 1em; } #desno div { background: url(../sliki/fading_corner_4.gif) no-repeat; margin-bottom: 2em; padding: 1em; min-height: 8em; height: auto; font-size: 100%; } #desno div p { margin: 0; font-size: 75%; } #desno div h2 { font-size: 95%; margin: 0; margin-bottom: 0.3em; } #desno div a img { border: none; } .rssfidovi img { padding: 0; margin: 0; } a.rssfidovi { line-height: 64px; } a.rssfidovi img { vertical-align: middle; } .rssfidovi ul { margin: 0; padding: 0; margin-top: 1em; clear: both; font-size: 80%; width: 100%; } .rssfidovi ul li { margin: 0; padding: 0; list-style-type: none; display: inline; float: left; width: 8em; } .rssfidovi a { text-decoration: none; } .rssfidovi a:hover { color: #fa9d39; } /*\*/ * html #desno div { height: 8em; } /**/ /*Credits: Dynamic Drive CSS Library */ /*URL: http://www.dynamicdrive.com/style/ */ #pointermenu2{ margin: 0; padding: 0; width: 100%; float: left; position: relative; background: #d9b87f url(../sliki/rightround2.gif) bottom right no-repeat; } #pointermenu2 ul{ margin: 0; float: left; padding-left: 8px; font: bold 13px Verdana; background: #d9b87f url(../sliki/leftround2.gif) bottom left no-repeat; } #pointermenu2 ul li{ display: inline; } #pointermenu2 ul li a, #pointermenu2 ul li p { float: left; color: white; font-weight: bold; margin: 0; padding: 7px 9px 7px 5px; text-decoration: none; } #pointermenu2 ul li a:visited { color: white; } #pointermenu2 ul li p { color: #fff0d1; } #pointermenu2 ul li a:hover, #pointermenu2 ul li a#selected { /*hover and selected link*/ color: #fff0d1; background: transparent url(../sliki/pointer.gif) bottom center no-repeat; } #pointermenu2 ul li a span { /* color: #CCCC99;*/ color: #B77723; } /* prijavuvanje stranica */ .upatstvo { background-color: #f8f7f4; border: 1px solid rgb(227, 221, 211); padding: 0.5em; } h2.upatstvo { color: rgb(236, 54, 29); color: #b77723; line-height: 1em; } .upatstvo ul li { padding: 0.4em; list-style: none; border-left-width: 3px; border-left-style: solid; border-left-color: rgb(227, 221, 211); } form.formprvcekor { margin: 0em; width: 90%; color: rgb(129, 122, 113); } form.formprvcekor legend { color: rgb(236, 54, 29); color: #b77723; padding: 0.5em 10px; } form.formprvcekor fieldset { padding: 1em; border: 1px solid rgb(238, 234, 228); } input.formprvcekor, textarea.formprvcekor, select.formprvcekor { width: 60%; color: rgb(129, 122, 113); margin: 0; padding: 0; } input.formprvcekor { font-size: 120%; padding: 3px 8px; } textarea.formprvcekor { padding: 5px 8px; height: 8em; font-size: 150%; } .formprvcekorsubmit { font-size: 110%; padding: 3px 8px; } input.formprvcekor:focus, textarea.formprvcekor:focus { color: rgb(165, 123, 70); background-color: rgb(255, 250, 219); background-image:url(../sliki/pencil.gif); background-repeat:no-repeat; background-position: bottom right; } select.formprvcekor:focus { color: rgb(165, 123, 70); background-color: rgb(255, 250, 219); } .formprvcekor ul li { list-style: none; margin: 0.3em; } /* za kategoriite */ #id_kategorija ul { margin: 0; padding: 0; } #id_kategorija ul li { list-style: none; display: inline; margin: 0; } .errorlist { font-size: 90%; color: rgb(255,0,0); background-image: url(../sliki/alert.gif); background-repeat: no-repeat; background-position: 0px 0px; padding-left: 20px; margin: 5px; display: inline; vertical-align: middle; } .errorlist li { list-style: none; display: inline; } p.pomosh, p.pomosh a { width: 60%; padding: 0; margin: 0; font-size: small; color: rgb(153, 153, 153); } #sesporaka { line-height: 35px; vertical-align: middle; color: rgb(165, 123, 70); margin: 1em 2em 1em 2em; } #sesporaka img { vertical-align: bottom; } #ajaxloader { line-height: 32px; vertical-align: middle; color: grey; } #ajaxloader img { vertical-align: bottom; margin-right: 5px; } #paginator { list-style: none; width: 50%; padding: 0.5em; margin-top: 3em; font-size: 90%; clear: none; } #paginator li { display: inline; clear: none; margin: 0; padding: 0; width: 50%; } #paginator li a, #paginator li span { margin: 0.1em; border: 1px solid rgb(241, 215, 158); padding: 0.2em 0.3em; text-decoration: none; display: inline; float: left; clear: none; color: #c5a46c; } #paginator li span { color: #ffffff; background-color: rgb(241, 215, 158); } #paginator a:hover { border: 1px solid rgb(217, 184, 127); padding: 0.2em 0.3em; margin: 0.1em; } #nizcela { position: absolute; top: 0px; left: 0px; height: 100%; width: 100%; background-color: #cccccc; opacity: 0.7; filter: alpha(opacity=70); z-index: 5555; display: none; } #problem { position: absolute; top: 100px; width: 50%; margin-left: 10%; margin-right: 10%; border: 1px solid #554fa0; display: none; background-color: white; z-index: 5556; padding: 2em; } a.problem { position: absolute; top: 6px; right: 6px; } a.problem img { border: none; } .objasnuvanje { font-size: 90%; color: grey; } .zakajmakot h1 { font-size: 105%; color: #ff9900; border-bottom: thin solid #CCCCCC; } kajmakot/media/admin0000777000175000001440000000000010567023124023432 2../../django_src/django/contrib/admin/media/ustar gogouserskajmakot/media/sliki/0000755000175000001440000000000010573630700013724 5ustar gogouserskajmakot/media/sliki/blank.gif0000644000175000001440000000005210571016046015476 0ustar gogousersGIF89a!,@D;kajmakot/media/sliki/prodzirno.png0000644000175000001440000000034310557131670016464 0ustar gogousersPNG  IHDR22?bKGD pHYs  tIME9^ItEXtCommentCreated with The GIMPd%nGIDATh100y\t$S:BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDt;YzW9IENDB`kajmakot/media/sliki/vote-active-svezhi.gif0000644000175000001440000001104710572130423020146 0ustar gogousersGIF89aPPhjlpikmqpjjlmfnrkmosrmohmzpto]sbrurjuppv{qw|vezuwqquxzkx}y`ry~|xszzt}n{Āv|Ło{v{Á~Ƃ}ćĂňrxƉƃNJyhȋɌʍȌˎȇˈɍrʎʉ˕ˏx̗̑ʐ͘ЁΌϙ͙ρ͓͍ĖЈΚϛҖМӋǙѝҤҘґӞԥӍјҥԔՠՉԦԠԛ͞էՖӢ֨Ԩש՝գتؤ٫Ϩٙ׫ץڭزجѪؠ֬٭ܩڴڮا۵Գٯܶکݷ۷ޱ׵ܱݸ޹׷ܹߺݴ޺߻ᶺڻkp!,PP H*\ȰÄ'u,{ȱ~$ңg޼y]4g\lH#}ыX~]'^u֩#.nŒ㥫V,khmm'z؝;6hƠ:-lŠ ƫ-S%ndQѓW]NTiA:5K׳f΄eʖ(PF5[|i#VQ4G/T_ch_jJ} Vow, 2BJ'dsQDq?R/}̓_Z1=`6@3. )R~THqD; ,G+ˇt7VT;2J+L"$_`!E@p -A*4H)IJs3NI)6N8@ 24I'`R!xa_|c5' H tRa{y֟`'>#;sN,K. & n1kC 2B pTI)˞N>ID<38ys2)L"fNX #t@A(@:ԁ-ۦ=5}V>C7ބC+:,.C 3B˻`")9E$0, +ɊsQDS>Ls ی6G# 0$_G& X1\@Ќ/b ~e33ҽ4kycG 1IJ\@a7@r`[K->@e8#G;ъOn+vW}[!9Kp>BB~ k`@-NЅ-ƶ`:fp85aLpM/  [l$!X9Qs";УEBvb7X&fA!cXఀ`= E X ^آ0KBG{S&2qGa#@) khvpf,_Cii8-ytc/+$QE,Bb„%,!/1Ib\#bI M^~C~$0Pl"1:aucp1j,D/3map`qw0@:tv ^5E Mk1McB슉x̧͓qW80-Vz8Q*8anDC?f0,pA0 2f#`05r8#h8vd_ ۓvPdKk'G* l-`5r16pjxP; _t>ڤqA%6`UG4`2 0u [CuVm y(>R7!d C~uR[(F&,,Y2 gJ mО!H-_7f,zQ_:` iB@! KASnUS&2qqb@̐6w%Hьb1.gb =&Gkz0Ls_,13~8 HBH ["Х%w@"lEpɨ! 7 \Я~ uHj́cZ@B lRG4@ԙzF*qJ(#kZZ9{Z,Ġ  (0 ~ m73I{K0KmSBE%zÛn z,;c;xmW he1E}~W t#Pw8s_'[2ZmԔ1{'wa5g8g%m 6@O[ P[,`0X")0gƶ]̑<Τih `M<;\1/@a V-PwƦ.Z 4qUS;j%;tO=8o@ X1YQ *3~ۗ]~bbP,&W ,?9o7!8D/"iS;ؾ/!^!x~{}P :uCT>8I{'j"UM0 ~ pp~w wzV~'kp  0c D ׀wW x1 abX }gJEoLU>jx] >͠ @swbv'owF>ЂaJ w7g7;HbWAqo@/ Pfbwp b E 0`/ y> $6wqzȉS: /`DQvwh%8%o V"'u Ipv~!` 0" mݘpm up'RSx;7Dx 'hx ,V a'Dg؎iJ$P  yp8'p/p O6w"dl o/0) 8l0 B 4 (8y@N> P )0ϨL [(y0@OP mvo <`" U WrJEdOp I!G/ P T p% d֠) V ZY`U°~ WtɌ;L` xyEH 0 `v`` :`xp ҐaR2%EV@ d!m WdP8ol@ j@ ]/P"Z9< me( P,PsIHAsydp qie@ <ФY]`%XY y@6:Ж  PWiZsYp  a v @Z`]Pɠ d!t p uJJp —V ` 9yZEZ ' )Ic]ؐPu ʠ `  y :ިو zo ̚egeV PKڊe@ 0jʜ*:kPvJQ}!{J`Z `\8< b: [VU Z&ڲL۴j'0 %m@Uz+qm`e{Il+J[-3k5{w a ]5 ;;S%[Kq뺮Zk:@ۺ kV,{;k-DJPry` [;kajmakot/media/sliki/alert.gif0000644000175000001440000000022110567126343015523 0ustar gogousersGIF89aT`B-NfK 6 r!,>Ix)sI  ]4 "PDz%6zzCqPPAՄ= 1D;kajmakot/media/sliki/ajax-loader.gif0000644000175000001440000000624410567362457016626 0ustar gogousersGIF89a Ƅ666VVV似! NETSCAPE2.0!Built with GIF Movie Gear 4.0!Made by AjaxLoad.info! , IiabK$F RAT,2S*05//mp!z0;$0C.I*!HC(A@o!39T5\8) `dwxG=Y gwHbvA=0 V\\; ;H0t%HsrY'e$"\#E1CnĎ~J,,AaUw^4I%Pu Q33{0i1TGgwy}%%'R  = 3G%p0 JRo5Ȇ0IĦmykxT_}(^yKs>i_%n=q4e-M¤D! , I)*')Ed]PR A:!zrbw %6"G(d$["JFhaQP`p%†/BFP\cU ?TtW/pG&OtDa_sylD'M q tc b2DM : d% 4%s) uE3 YUtږD$JiM^%o/rvl9'L;99% i9 C "B BDs ^Xf}$P {L?P O4 E咛V$dJ#)pV$! , IiRͧ"Jd] RZN*P*;$P{*N\EА!1UO2D _r6Ib H8 B; "'ZtbK#C'Kw}?Kiz6:xKAC&}9tz\ \D5;x Qd( KW  MBIڈM=ˤs⸽8DaJ`@LG! , IiRͧ"Jd] RZN*P*;$P{*N\EА!1UO2D _r6Ib H8 B; "'ZtbK#C'KGziz68}z~%XK9:0}% tz\Blc LbQ   lj ųKň x(țPX ,ւ|/"! , IiRͧ"Jd] RZN*P*;$P{*N\EА!1UO2D _r6Ib H8 B; "'ZtbK#C'KGziz68}z~%:A/ C} u\ h}b D]=  V)  ڊ9CDK Ku *00StD! , IiRͧ"Jd] RZN*P*;$P{*N\EА!1UO2D _r6Ib H8 B; "'ZtbK#C'KGz z5 C: A/ C}u\ Eh}b6[=Wx&)I9Ԭ@oCT?Kd]B76ЫD! , IiRͧ"Jd] RZN*P*;$P{*N\EА!1UO2D _r6I ƀH03hոaj U {CIkmbK#cK8 {a8nV:/q:M Cu~Ehk6 [_6P.]6!)V! , IiRͧ"Jd]U RZN JjN2sK6 dI)  LHWG 6 KX젱.6d~zhuur/6 X5I;_t O#E {O9V94;VC/ 6Ø~*'MonbX:~]+V*mK_OrKN@.d~qЦDB֋ 5D;kajmakot/media/sliki/rss-malo.gif0000644000175000001440000000031110571640675016155 0ustar gogousersGIF89a 9=NXi˗͛Ϟ֬!Created with The GIMP! , -`$di<' T*Fr @B2G#`BXFD8B;kajmakot/media/sliki/fading_corner_4.gif0000644000175000001440000000133210566550047017444 0ustar gogousersGIF89ax,x@1zюl99c1EuZ-kRR)t2J%i4B t8F`. /B,Ź#Ͱ1Ե4(D AKÆB'q"aHn#t 9p$&OK˖^|c潚6Ox>{!thu-KN[!UժT`ͺ[ھņb,fM;i%J+Few2~l bx:@&y.wmȬK\? Ҷ.z, gU-Xo [Hz$_޻p_0] G @wËOӫ_Ͼ˟OϿyכ0 Mo 6p JomA;kajmakot/media/sliki/rss-golemo.gif0000644000175000001440000000663310571637400016514 0ustar gogousersGIF89a@@^aY&]&^'d_(`)a*b+h"c,d-h-i.j(k)l*l1m+l8n,p2q3r,r4s-s5t.y-t6u/u7v0v8w1|1w9{*x2{2|+|3},|:}4~-~5.660T7618128?392:3@A;4<5.=I`6C/>a7708E1?X92:3;_4B<5I=a7=Jb8>7EL?X8@M9AZN:H3`OOB;4aPC\bQDEFdGNHg[OOncR^pefZ~[\t]jlrsvw~‚š ¦ÛáđĜŗţƒƍƘǙɥʚ˧̨̜̳͝ΞΤϰоըֶ֩ױزٳڴ!Created with The GIMP! ,@@ 8*\Ȱ!#3XC12jȱǏ4PD 1b D\ygO*Tl%L5H׼YF:y2 Q`A|A#hbƌ9Ё(@B3jĉC:2AC*T5 &Lx"hs | 'ql1&6zGB<$hp>pXl3bmGDYNʼn-u9Fx} 'beQ+ lq{ѵL{]v:v V| ^ )B jDg)Gu5a}wkP%BQXf0[zMZ%k+B<@c=I,H#fe2!tCgx韉JⱝjA %WŸ(xϠc1QDoE1E]vAu9ɚmb^NG QcXV'F` r&sG5 \a pĒ)K,˄ZpÌ,= .U#ˎ1GPBK ƒ?xʎG4@p^CrP:cBH< ӫOgux8QF0KI VЂhqE2s@e챊 ^( 4!PAl*0s`W> }…bEB"u \?#p)!uA^Bu+1ZJgE1PF[k.Vr1Wt3zAX"6P#[{ei&Ҕh /{!9GO>yT԰h7!M×^&htxÄqF* @p@֗=Jٿh /^ 6` A*ZX逈e|ψ:5ZY h}@~" oqwqPcO4WB0H u@f/|V=-UUXNxA!2v@+V_n1`[0bт3,:$Dþ^ؚsUa&*i@ X fL6hX[j h) K Ni"ZX@B} ?$BтG]#9ZihEC/P7 @}7ӀX8!$'L5 4T ȶmL9Rܡ0Aϴ=h1NV @MXwVjR0!pZU* Y =b)@&r),G3䪘WZpc0HQUn D7 CHhY5 o7zfHڥ  0`,t`/&m>74b, 0^@hՔq=WyԆ#ࠗ hn p@2rS@xDI&";dl⻰ zY^lW^э>8E 0"-l5.Sv4|e7]y$0 04`_{/r'ó&ߵ!fDSDk!1uX\if rr@0bu@'rE0N~Q3J܄5f `hqmoWt۷r|Q0[D9@ isapV{ׁ,1B0`0ix.gVU]o(Gp<"B`|m =5i8,<,z,,`Xpc6''!@Yq x}w||0U(ʘ;kajmakot/media/sliki/fading_corner_14.gif0000644000175000001440000000137110566547762017542 0ustar gogousersGIF89ax,x@1zюl99c1EuZ-kRR)t2J%i4B t8F`. /B,Ź#Ͱ1Ե4(D AKÆB'q"aHn#t z m$v'LIm%x/Ƽr沚6Il'|?/]sFq!Mjk)ӀOAFt*V`ujר_Ȫm,YlfRKV۶]&wv+l/_^~ ,#&xƎyAk2e\1.ʬYθ`%zObu֮g-c-D޿>7'7D$\DAd!|Cp g!-B'!x@pho o )\@p`o o\4'*ț;kajmakot/media/sliki/poraka.gif0000644000175000001440000000044510572601344015674 0ustar gogousersGIF89a""v"v#v$v&w#v,v9vK͎\̙ҫ}ٸٸٸٸٸٸٸٸٸٸٸٸٸٸٸ!Created with The GIMP! ,""'~Ah2+'~&cƏ`[$dX!@w[]nujfY8HJ[v>Q*  * o'^Q ]~yW9;[F.>6"7v7i.#!;kajmakot/media/sliki/matte.gif0000644000175000001440000000030510557124377015535 0ustar gogousersGIF89a<<!,<< `x [|;sybGa9ꅶrJ+3͋}D,6fTJjQخë̆tNCfVwվ{oS%HvGcx8X8ٰdI99 I)* BڣJz)JjgKS;kajmakot/media/sliki/rightround2svezhi.gif0000644000175000001440000000012310572117617020115 0ustar gogousersGIF89a-kp,- 0I8ͻ[ Q:Bl$;kajmakot/media/sliki/pointer.gif0000644000175000001440000000147110557114705016102 0ustar gogousersGIF89a!,H  "D8pB;kajmakot/media/sliki/pencil.gif0000644000175000001440000000051310556401604015664 0ustar gogousersGIF89a?]ُ;`/Dv,۽m&ϥ̿'ɑO@ޱ]hНY͖X٨PةIÙ1X@`m^BݮlժrgԜ]إjаzʕBϜJȩgǃ4YBaݫs}4Hԧќi%˰ϩʔQȐNoϦɑP!?,hpH,,INN*=ڧH`$*0`£i`p(y~tvxF !zF 7-|F 52+.O 0&W/'=83W#6)WGA;kajmakot/media/sliki/leftround2svezhi.gif0000644000175000001440000000012210572117621017724 0ustar gogousersGIF89a-kp,-0I8ͻ8٤ÚKK;kajmakot/media/sliki/upstv_grad.png0000644000175000001440000000564610566601514016626 0ustar gogousersPNG  IHDR [; pHYs  tIME45tEXtCommentCreated with The GIMPd%n IDATh[A# #g䃿$QKU$_gTY@ U sr y?PWweu1@Zba̟x@?kRu?,ܧw}ҥw"qrjsaZ̵6y+.z{kCcG ,}L5g@| [u/<{/MbQ}苼"=9G 9#9c\뽹ƻQlo]zHؓ٧sKZ# n qLPf_ c !X߲dI Y|4A;dF`ro[H+@Nh OXp _/n$as zhsE\B7wm s¹x#tawm*ދSN"nA2x^,{ Ą^78x7.cUNprcU~}f'P$=l\|]T8D PdyhgJ 3>'1w.ְ#C2ތs:  0x0: giKp rm1!dlϻ$H'pH=UF9]耈͗}P$ Ab庆o !u*#XsW_mڄ"' b ҫUlڅ)ҩ5{% pD kBWzM_L$N`EJdIxxsEK-ib 19IG:C80ŷKY" s709UF ]Dw@BE\ 'Ì`chNrŏetO/"d4䷹A z$ _-aVGmp_ ^ca~H_a}q1= 8$;V5Y66-]ol};<&P8jDY#֘ $ JTijpHiҔ|%6L &qZ^k>K \ZWJ}Zn:!i3?H8TCc'xLNf<` &"s`8=@Z}B=ݮ_cO4 Oa ) GwN;kI!`o1ԇIyt3L㨢xX.{0ΌG'eKr48~zO@8U 翞Tvd! ZЕChy݉Ax;rjNAJ{/ڃM`-jy.}Nj2=S ڼ/hbwjC 798gݹUt^8`,u c5鮪?f3;|N`hK4:FT_6,SzMǃo+{3|)_aZI GHR25f;Gq!lja{ަ!cۻd-"`{*Bܟ[dB;GDae!YJ-$Cff?K>D^r},[k UL*% \ F{ 9Q3m>So{b"1Xf/a#4z2԰Dc ?VL$oDMUג˻7$2|1X1ka ;˯FLU_D#YD\)3~Ɛ`'oh ǯnKYW k@ڄId,%(iYj-QAf448h3yނHh'M+ O|K_498 50lM5u.eQwC?✡@& `=I?Rpie8x˳r e!ba)Xـ`HVv/0710u[#;;2 EAm#u^$>k?]{{_C1Vv$(D~{!|tSQ(xǏnSohSjja1cLwW4EE}uD+`+g4jUis2Һ1XJsL?3Gɼ,?40QwH.gOVg-%8+3ҟN,!Ra2A%a j>ۨS+q|iPӗru19ŽjK53co50Dg"k3%#Mg"g"ҏ! f̵f82M ׺toߊ(B Jgu1&&oW-hh}L@mf$ 8T 0R kܑH$ , C"x `S$\I4S7* gjR#maJB D0#$2 8t8r*|&]`Qs=p9s3pםe8=L4B4(FS#F`7ᶠ PJyu P!!Chӻ|x'T"+anAFGbCt/L]ޠn0| }M %j?#uцqIBz$W&B2D!m]d{=g (l< Q '!F uSMF[_}arWIg&41 ’jX0#PF6h !npΰYA ;weX ְH(B! j/hCB6A i0B H( s )a>EFk( h$!(0lSp" |UDDt!P%z?(#'mU aG!0& 0KzV` P ^7kH'm K Ȁ 6x7.PaS|k@"1Os ( .8x p 1(!YaP僦V  {pm gabh!~Up}h `v5 gR |)(W؇5XF BPw6]ZB 8xk Ћ7 Uxx 7p>WHxk ɸke؃h `!ۨw(Xh!yH(yxpp`qKt 4%tKk 0 O7px,y8yw>P t&9y hN Ҁ _p! mY7;kajmakot/media/sliki/iks.gif0000644000175000001440000000125310556400214015176 0ustar gogousersGIF89a\!!!###&&&''')))***+++...111444888;;;@@@AAAHHHJJJKKKMMMOOOPPPRRRUUUWWWYYYZZZ\\\___```ccceeegggkkkoooqqqssswwwxxxyyy|||}}}~~~!Created with The GIMP! ,Q"*..12468;EP!$'+B, !#&)-035=(OLQN58> . P\SV\T7;> .S\UX7:<@ 1U\\:;?B 2!-\Y=B$@5xYlȑlh^- ,AB@0\E &JLbW Y2EFb$ޑ%Mp9Q!=|$RJTA $8@`@;kajmakot/media/sliki/vote.gif0000644000175000001440000001133010566355413015375 0ustar gogousersGIF89aPPڿֶԱͱǙϨعˡЪѬڼꕲrqqtsswvuvy{ē٤ܫݮ̢߲ܨ!,PP H*\ȰÅWѣ&=3jԸO+X=O5 s΢0cnǏX2HQQFQ&ѝHn9M 4 "L,L`.tOM>yLO*Eb:h&,LZnGZl({u.";d(Ngl¹3Kg{UXTڭ+N7n+dɕ)YRϞ{ݼ LXNyH*ň#$epG|5RJ:ioJ(g|Ujx@q-WQ繣M..5|)%ڄ$p FLX`!jip>(pyXnCNvARDοh dJ-<̧ >odJ&h!)L_vr` 6K\BX\TD̙3?7qIr'9d'G-IEzI*$LNMmH#Xw%XCH'!؊\t1\6/ > _9" ''ݎE=ۋ{Z8 terbB,ihQ7[:T {}틭!.TM9XI#,K`թt; 2de][*POmlÙ(ͩ[@0Ladi&0 n(€{@PY8 ]׸$V D jH%7P׋`.΄D$I(PkPl(DA 6` =2 $tXZCJ⑍J h?@;  `9-ipT\HJB`N@-"  \;BG0(AC!0cX"h@ o\YU$V2 4!b0Z304 @ 10G;` Z` ( v1 ĔA hZhA9Ўx \82ȁ0D9HO-hq8$ `Nvӝ&gx֭G0`Ƶ%mGW5 # ,v98LV<Ѐh` - lkؒ65k_Vץm[ ]{~ .~ 0.e ,Z.Z{-uupbXT ~/rAVA   \ػ V0m ~3$brq @7@ pApwU,eS95e# =@|` !3)Knd`*@ &;Q2melФݲhTUЁv`0(P:Q;pgHC, qC*,?аVghF3=t$MiKw7L! 6. $Ak)X X˚\?ڿ[xVЈdg&Vƶmm+۹v^jA0NaqT ݉p)l7mh۰}w{6G|ܗn *aYDBPtoV#diH&7lKpӠu@|ָ0, yxBNjrPwO؈ٙI`P iY5@ T8 p 5C4 `队YAYD0 \p : `0 cptP pꉏ9DZP5P )*\pP : 1 :ttЎ)FzHJ?`ـ q W* ڥ6jM\`@ `dEnn*>\) z 0*0* Spup RKE`6 ` vw!\P ` հ ؚJ `^P- jZJذpxi[!\ ښ J ;; Jv:* ܰ 6P6  `S0@ ;ՠ ʂp'+ Ъg@ kj0@Z ۰)J05 0+30T;R O+P6KsG;[j{vʩEJ+\fPO+ ` U ~ 0 ;8Gs*\ @ w{G @ [ f@J{s{0%з U 3 Ԁ {3Kgu@]]@uP+ 6z0 k» P+P蛾#;f ګT 0Ԡ ( fHf 0  0߰ ;X @ 0 " | q 0 ̐ 2<4\5 ~ |>,@ `8 I 0 ??*;kajmakot/media/sliki/ajax-loader-malo.gif0000644000175000001440000000352510567543371017547 0ustar gogousersGIF89aFFFzzzXXX$$$666hhh! NETSCAPE2.0!Built with GIF Movie Gear 4.0!Made by AjaxLoad.info! ,w  !DBAH¬aD@ ^AXP@"UQ# B\; 1 o:2$v@ $|,3 _# d53" s5 e!! ,v i@e9DAA/`ph$Ca%@ pHxFuSx# .݄YfL_" p 3BW ]|L \6{|z87[7!! ,x  e9DE"2r,qPj`8@8bH, *0- mFW9LPE3+ (B"  f{*BW_/ @_$~Kr7Ar7!! ,v 4e9!H"* Q/@-4ép4R+-pȧ`P(6᠝U/  *,)(+/]"lO/*Ak K]A~666!! ,l ie9"* -80H=N; TEqe UoK2_WZ݌V1jgWe@tuH//w`?f~#6#!! ,~ ,e9"* ; pR%#0` 'c(J@@/1i4`VBV u}"caNi/ ] ))-Lel  mi} me[+!! ,y Ie9"M6*¨"7E͖@G((L&pqj@Z %@wZ) pl( ԭqu*R&c `))( s_J>_\'Gm7$+!! ,w Ie9*, (*(B5[1 ZIah!GexzJ0e6@V|U4Dm%$͛p \Gx }@+| =+ 1- Ea5l)+!! ,y )䨞'AKڍ,E\(l&;5 5D03a0--ÃpH4V % i p[R"| #  6iZwcw*!! ,y )䨞,K*0 a;׋аY8b`4n ¨Bbbx,( Ƚ  % >  2*i* /:+$v*!! ,u )䨞l[$ Jq[q 3`Q[5:IX!0rAD8 CvHPfiiQAP@pC %D PQ46  iciNj0w )#!! ,y ). q ,G Jr(J8 C*B,&< h W~-`, ,>; 8RN<, <1T] c' qk$ @)#!;kajmakot/models.py0000644000175000001440000001157510573361134013402 0ustar gogousers# -*- coding: utf-8 -*- from django.db import models from django.contrib.auth.models import User from kajmakot.pomoshni import generiraj_url from kajmakot.konstanti import GLASOVI_ZA_POPULARNA import datetime class Kategorija(models.Model): "Во кои категории може да биде пријавена некоја статија" ime = models.CharField(maxlength=50,verbose_name="Име на категоријата", unique=True) nasheUrl = models.CharField(maxlength=50, verbose_name="Наше URL", help_text="Урлто како да биде", unique=True) def __str__(self): return self.ime def get_absolute_url(self): return "/%s/" % self.nasheUrl class Meta: verbose_name = 'Категорија' verbose_name_plural = 'Категории' class Admin: pass class Stranica(models.Model): kategorija = models.ForeignKey(Kategorija,verbose_name='Категорија') naslov = models.CharField('наслов',maxlength=80) url = models.URLField(unique=True) nasheUrl = models.CharField(maxlength=70,editable=False,unique=True) prijavenaNa = models.DateTimeField('Пријавенa на', auto_now_add=True) prijavenaOd = models.ForeignKey(User, verbose_name='Пријавена од') opis = models.TextField('Опис на страницата') svezha = models.BooleanField('Дали е свежа', default=True,editable=False) glasovi = models.IntegerField('Бр. гласови', default=0) popularnaOd = models.DateTimeField('Популарна од', blank=True, null=True) def __str__(self): return self.naslov def get_absolute_url(self): return "/%s/%s/" % (self.kategorija.nasheUrl, self.nasheUrl) def stani_popularna(self): """ Ја поставува статијата дека е популарна. """ self.popularnaOd = datetime.datetime.now() self.svezha = False def stani_bajata(self): """ Бајата ќе станува ако за X денови не станала популарна. """ self.popularnaOd = None self.svezha = False def popularna(self): """ Дали статијава е популарна? """ if self.popularnaOd: return True else: return False def plusglas(self,korisnik): """ Ако корисникот не гласал запиши му го гласот. Го враќа бројот на гласови до сега за страница, или False ако веќе гласал за нејзе. """ g = Glasanje.objects.get_or_create(korisnik=korisnik,stranica=self) if not g[1]: return False else: self.glasovi = self.glasovi + 1 if self.glasovi == GLASOVI_ZA_POPULARNA: # Со овој глас станува популарна self.stani_popularna() self.save() return self.glasovi def daliglasal(self,korisnik): """ Дали корисникот гласал за оваа страница. Ако гласал го враќа True ако не False. """ try: g = Glasanje.objects.get(korisnik=korisnik,stranica=self) except Glasanje.DoesNotExist: return False return True def save(self): """Оверлоад на save() ф-јата за да може пред да се сними во база да се генерира nasheurl Ама само првиот пат кога се снима во база, не на секоја измена.""" if not self.id: nasheurl = generiraj_url(self.naslov) # generira nashe url try: Stranica.objects.get(nasheUrl=nasheurl) except Stranica.DoesNotExist: self.nasheUrl = nasheurl else: import time self.nasheUrl = nasheurl + '_' + str(int(time.time())) # ако постои вакво исто додај му време на крај. super(Stranica, self).save() class Admin: pass class Meta: verbose_name = 'Статија' verbose_name_plural = 'Статии' class Glasanje(models.Model): korisnik = models.ForeignKey(User) stranica = models.ForeignKey(Stranica) datum = models.DateTimeField('Датум', auto_now_add=True) def __str__(self): return 'Гласање %s на %s' % ( self.id, self.datum ) class Admin: pass class Meta: verbose_name = 'Гласање' verbose_name_plural = 'Гласања' class Problem(models.Model): kojproblem = models.CharField(maxlength=20) korisnik = models.ForeignKey(User) stranica = models.ForeignKey(Stranica) datum = models.DateTimeField('Датум', auto_now_add=True) class Admin: pass kajmakot/pomoshni.py0000644000175000001440000001104310572653634013751 0ustar gogousers# -*- coding: utf-8 -*- """ Тука се дефинирани помошните функции кои ги користам во погледите. """ def mk2lat(zbor): """ mk2lat(str) -> string На влез прима утф8 стринг и го транслира на латиница. """ zbor = zbor.replace('љ','lj') zbor = zbor.replace('њ','nj') zbor = zbor.replace('е','e') zbor = zbor.replace('р','r') zbor = zbor.replace('т','t') zbor = zbor.replace('ѕ','dz') zbor = zbor.replace('у','u') zbor = zbor.replace('и','i') zbor = zbor.replace('о','o') zbor = zbor.replace('п','p') zbor = zbor.replace('ш','sh') zbor = zbor.replace('ѓ','gj') zbor = zbor.replace('ж','zh') zbor = zbor.replace('а','a') zbor = zbor.replace('с','s') zbor = zbor.replace('д','d') zbor = zbor.replace('ф','f') zbor = zbor.replace('г','g') zbor = zbor.replace('х','h') zbor = zbor.replace('ј','j') zbor = zbor.replace('к','k') zbor = zbor.replace('л','l') zbor = zbor.replace('ч','ch') zbor = zbor.replace('ќ','kj') zbor = zbor.replace('з','z') zbor = zbor.replace('џ','dzh') zbor = zbor.replace('ц','c') zbor = zbor.replace('в','v') zbor = zbor.replace('б','b') zbor = zbor.replace('н','n') zbor = zbor.replace('м','m') zbor = zbor.replace('Љ','Lj') zbor = zbor.replace('Њ','Nj') zbor = zbor.replace('Е','E') zbor = zbor.replace('Р','R') zbor = zbor.replace('Т','T') zbor = zbor.replace('Ѕ','Dz') zbor = zbor.replace('У','U') zbor = zbor.replace('И','I') zbor = zbor.replace('О','O') zbor = zbor.replace('П','P') zbor = zbor.replace('Ш','Sh') zbor = zbor.replace('Ѓ','Gj') zbor = zbor.replace('Ж','Zh') zbor = zbor.replace('А','A') zbor = zbor.replace('С','S') zbor = zbor.replace('Д','D') zbor = zbor.replace('Ф','F') zbor = zbor.replace('Г','G') zbor = zbor.replace('Х','H') zbor = zbor.replace('Ј','J') zbor = zbor.replace('К','K') zbor = zbor.replace('Л','L') zbor = zbor.replace('Ч','Ch') zbor = zbor.replace('Ќ','Kj') zbor = zbor.replace('З','Z') zbor = zbor.replace('Џ','Dzh') zbor = zbor.replace('Ц','C') zbor = zbor.replace('В','V') zbor = zbor.replace('Б','B') zbor = zbor.replace('Н','N') zbor = zbor.replace('М','M') return zbor def generiraj_url(url): """ generiraj_url(str) -> string Генерира урл. Претвора во латиница, ги заменува празните места со _, и остава најмногу 70 знаци. """ import re url = mk2lat(url) pat = re.compile('[^-A-Z0-9\s]',re.IGNORECASE) # se shto ne treba trgni url = pat.sub('',url) url = url.strip() # trgni gi praznite mesta od napred i pozadi pat = re.compile('\s+') # site prazni mesta spoi gi i zameni gi so _ url = pat.sub('_',url) url = url.decode('utf-8')[:70].encode('utf-8') # ostaj gi samo prvite 40 bukvi # pretvori go vo unicode prvo za da gi skrati pravilno bukvite pa vrati go vo string return url def generiraj_telo_eposhta(template,podatoci): """ generiraj_telo_eposhta(template, podatoci) -> str Кога праќам е-пошта да парсира темјплејт и да го врати телото за пораката. template - е името на template датотеката. podatoci - е dictionary променлива која го содржи контексот на темлјетот. """ from django.template import Context, loader t = loader.get_template(template) c = Context({'podatoci':podatoci}) return t.render(c) def voutf(dictionary): """ Ги кодира од unicode во utf-8. Ми треба пошто clean_data работи со unicode а базата со utf-8. """ for k in dictionary: dictionary[k] = dictionary[k].encode('utf-8') return dictionary def zemiporaka(sesijata): """ Враќа порака од сесијата и ја брише од сесијата. """ poraka = sesijata.get('poraka','') try: del sesijata['poraka'] except: pass return poraka from django.contrib.auth.decorators import user_passes_test """ Декоратор за да се најавува корисник пред да може да го погледне view-то """ potrebna_najava = user_passes_test(lambda u: u.is_authenticated(), login_url='/korisnik/najava/') kajmakot/settings.py0000644000175000001440000000646610573632000013753 0ustar gogousers# Django settings for kajmakot project. DEBUG = True TEMPLATE_DEBUG = DEBUG DEFAULT_CHARSET = 'utf-8' ADMINS = ( ('Georgi Stanojevski', 'glisha@gmail.com'), ('Vasko Avukatov', 'vaskoav@gmail.com'), ) MANAGERS = ADMINS DEFAULT_FROM_EMAIL = ADMINS[0][1] DATABASE_ENGINE = 'mysql' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. DATABASE_NAME = 'kajmakot' # Or path to database file if using sqlite3. DATABASE_USER = 'root' # Not used with sqlite3. DATABASE_PASSWORD = '' # Not used with sqlite3. DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. # Local time zone for this installation. All choices can be found here: # http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE # If running in a Windows environment this must be set to the same as your # system time zone. TIME_ZONE = 'Europe/Skopje' # Language code for this installation. All choices can be found here: # http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes # http://blogs.law.harvard.edu/tech/stories/storyReader$15 LANGUAGE_CODE = 'mk' SITE_ID = 1 # If you set this to False, Django will make some optimizations so as not # to load the internationalization machinery. USE_I18N = True # Absolute path to the directory that holds media. # Example: "/home/media/media.lawrence.com/" MEDIA_ROOT = '/home/webstrana/django/kajmakot/media/' # URL that handles the media served from MEDIA_ROOT. # Example: "http://media.lawrence.com" MEDIA_URL = '' # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a # trailing slash. # Examples: "http://foo.com/media/", "/media/". ADMIN_MEDIA_PREFIX = '/media/admin/' # Make this unique, and don't share it with anybody. SECRET_KEY = 'y$s9c%7(ufmkd*cwx7wqis5-zsb6dnlj)ya(8fm1uz)2ve1jtd' # List of callables that know how to import templates from various sources. TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.load_template_source', 'django.template.loaders.app_directories.load_template_source', # 'django.template.loaders.eggs.load_template_source', ) MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.doc.XViewMiddleware', ) ROOT_URLCONF = 'kajmakot.urls' TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. "/home/webstrana/django/kajmakot/templates" ) # Ova jas go dodaov za da go imam request objektot vo templejtite # http://www.djangoproject.com/documentation/settings/#template-context-processors TEMPLATE_CONTEXT_PROCESSORS = ( "django.core.context_processors.request", "django.core.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", #"kajmakot.context_processors.poraka", ) INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.sites', 'kajmakot', 'kajmakot.korisnik', ) kajmakot/templates/0000755000175000001440000000000010573625361013537 5ustar gogouserskajmakot/templates/rss/0000755000175000001440000000000010571665547014356 5ustar gogouserskajmakot/templates/rss/title.html0000644000175000001440000000002210571665547016357 0ustar gogousers{{ obj.naslov }} kajmakot/templates/rss/description.html0000644000175000001440000000001710571665372017561 0ustar gogousers{{ obj.opis }} kajmakot/templates/svezhi_osnova.html0000644000175000001440000001055010572664134017323 0ustar gogousers{% load moitagovi %} {% extends "glavnaosnova.html" %} {% block title %}Свежи статии {% endblock %} {% block csslinkovi %} {% endblock %} {% block logo %}кајмак.от / Свежи{% endblock %} {% block kategorii %} {% if not kategorija %}
  • Сите
  • {% else %}
  • Сите
  • {% endif %} {% for k in kategorii %}
  • {{ k.ime }}
  • {% endfor %} {% endblock %} {% block sodrzhina %}
    {% if not user.is_authenticated %}

    Што е Кајмакот?

    Кајмакот е интерактивен интернет сервис кој содржи врски до интересни сајтови. Интересните сајтови испливуваат на површина со гласање на уредниците - урeдници сте вие посетителите.
    Повеќе.

    {% endif %} {% block desnoakcii %}{% endblock %} {% block desnorssidrugo %}
    RSS сите свежи
    {% endblock %}

    Ова е листа на самошто пријавените статии во последните 48 часа. Гласајте за статиите кои ви се интересни и со благодарение на Вас статиите со најмногу гласови автоматски стануваат популарни и се прикажуваат на насловната страна.

    {% block listastranici %} {% for st in stranici %}
    {% if user.is_authenticated %} {% if st.glasalza %} {% else %} {% endif %} {% else %} {% endif %}

    {{ st.stranica.naslov|escape }}

    пријавена од {{ st.stranica.prijavenaOd.username }} пред {{ st.stranica.prijavenaNa|timesince }}. ({{ st.stranica.url|domejn }})

    {{ st.stranica.opis|escape }}

    {% if user.is_authenticated %} проблем? {% else %} проблем? {% endif %} | категорија: {{ st.stranica.kategorija.ime }}

    {% endfor %} {% endblock %} {% block paginator %}{% endblock %}
    {% endblock %} kajmakot/templates/popularni.html0000644000175000001440000000246410572660251016440 0ustar gogousers{% extends "popularni_osnova.html" %} {% block rss %} {% endblock %} {% block desnoakcii %}

    Свежи страници

    Гласајте за штотуку објавените страници и направете ги популарни.

     

    Пријави страница

    Пријавете интересна страница за да ја споделите со останатите.

    {% endblock %} {% block paginator %} {% if is_paginated %} {% endif %} {% endblock %} kajmakot/templates/zakajmakot.html0000644000175000001440000000614210573625326016565 0ustar gogousers{% extends 'glavnaosnova.html' %} {% block sodrzhina %}

    За Кајмакот

    Кајмакот е интерактивен интернет сервис кој содржи врски до интересни сајтови. Интересните сајтови испливуваат на површина со гласање на уредниците - урeдници сте единствено ВИЕ посетителите.

    Со едноставна и брза регистрација секој посетител може да поставува статии кои нему/нејзе им се интересни и да гласа за веќе пријавените. Оние статии со доволен број на гласови од сите регистрирани корисници автоматски стануваат популарни и се појавуваат на насловната страница.

    Кајмакот работи на принцип на глобално и регионално популарните digg.com, reddit.com, dvanula.com и krtica.ba.

    Кајмакот е изработен во Django web framework на серверска страна. Користи Prototype javascript framework и Script.Aculo.Us за интерфејсот.

    Copyright © 2007 Авукатов Васко <vaskoav@gmail.com> и Станојевски Георги <glisha@gmail.com>

    Оваа програма е слободен софтвер; Вие можете да ја разделувате и/или да ја менувате под условите на ГНУ-овата Општа јавна лиценца објавена од Фондацијата за слободен софтвер; било како Верзија 2 од ова Лиценца, или (по Ваш избор) некоја покасна верзија.

    Ова програма се разделува во надеж дека ќе биде корисна, но БЕЗ БИЛО КАКВА ГАРАНЦИЈА; подеднакво ни без толкувана гаранција на КОМЕРЦИЈАЛНА ВРЕДНОСТ И ПРИКЛАДНОСТ ЗА ОДРЕДЕНА УПОТРЕБА. Видете ја ГНУ-овата Општа јавна лиценца за повеќе детали www.slobodensoftver.org.mk/dokumenti/gnu_gpl_mk.html.

    Може да го преземете изворниот код на програмата од тука.

    {% endblock %} kajmakot/templates/glasaj.html0000644000175000001440000000037610573040156015665 0ustar gogousers{% if user.is_authenticated %} {{ stranica.glasovi }} глас{{ stranica.glasovi|pluralize:"ови" }} {% endif %} kajmakot/templates/prijavi_cekor1.html0000644000175000001440000000350210573065013017325 0ustar gogousers{% extends "glavnaosnova.html" %} {% block title %}Споделете статија со останатите{% endblock %} {% block linkovi %} {{ user.username }} одјава {% endblock %} {% block kategorii %}
  • Мој профил
  • Промени лозинка
  • Ресетирај лозинка
  • Пријави статија
  • {% endblock %} {% block sodrzhina %}

    Чекор 1 од 2.

    Која е адресата на статијата?
    {{ form.url }}

    Ќе провериме дали адресата е достапна, ве молиме бидете трпеливи. (~15сек.)




    • Внеси директна врска до статијата. Адресата мора да биде достапна на интернет.
    • Внеси краток опис кој најблиску одговара до содржината.
    • Избери категорија во која најмногу спаѓа статијата.
    {% endblock %} kajmakot/templates/prijavi_cekor2.html0000644000175000001440000000426610573065025017341 0ustar gogousers{% extends "glavnaosnova.html" %} {% block title %}Споделете статија со останатите{% endblock %} {% block linkovi %} {{ user.username }} одјава {% endblock %} {% block kategorii %}
  • Мој профил
  • Промени лозинка
  • Ресетирај лозинка
  • Пријави статија
  • {% endblock %} {% block sodrzhina %}

    Чекор 2 од 2.

    Детали за {{ url|escape }}
    {{ form.naslov }}


    {{ form.opis }}

    Во која категорија припаѓа статијата?
    {{ form.kategorija }}




    • Внеси директна врска до статијата. Адресата мора да биде достапна на интернет.
    • Внеси краток опис кој најблиску одговара до содржината.
    • Избери категорија во која најмногу спаѓа статијата.
    {% endblock %} kajmakot/templates/korisnik/0000755000175000001440000000000010573067361015370 5ustar gogouserskajmakot/templates/korisnik/promenilozinka.html0000644000175000001440000000333410572660030021311 0ustar gogousers{% extends "glavnaosnova.html" %} {% block title %}Промена на лозинката{% endblock %} {% block linkovi %} {{ user.username }} {% endblock %} {% block kategorii %}
  • Мој профил
  • Промени лозинка
  • Ресетирај лозинка
  • Пријави статија
  • {% endblock %} {% block sodrzhina %}

    Најавени сте како {{ user.username }}, по промената на лозинката ќе бидете пренасочени на главната страница.

    Промена на лозинка {% if error_msg %}
    • {{ error_msg }}


    {% endif %}
    {{ form.starpassword }}


    {{ form.password1 }}


    {{ form.password2 }}

    Заради верификација внесете ја истата лозинка како и горе.


    {% endblock %} kajmakot/templates/korisnik/registriraj_aktiviraj.html0000644000175000001440000000227410572660142022647 0ustar gogousers{% extends "glavnaosnova.html" %} {% block title %}Регистрирање на нов корисник{% endblock %} {% block linkovi %} {% endblock %} {% block kategorii %}
  • Регистрирај се.

  • {% endblock %} {% block sodrzhina %}
    Најaва
    {{ form.username }}

    (провери достапност)



    {{ form.password1 }}


    {{ form.password2 }}

    Заради верификација внесете ја истата лозинка како и горе.


    {% endblock %} kajmakot/templates/korisnik/eposhta/0000755000175000001440000000000010573631316017030 5ustar gogouserskajmakot/templates/korisnik/eposhta/registriraj.email0000644000175000001440000000060610573631305022366 0ustar gogousersЈа добивте оваа порака бидејќи сакате да се регистрирате на kajmakot. За да продолжите со регистрација треба да одите на следнава врска и да ги проследите инструкциите. http://kajmakot.servehttp.com/korisnik/aktiviraj/{{ podatoci.kluch }} Поздрав. kajmakot/templates/korisnik/eposhta/resetiraj.email0000644000175000001440000000112310573631316022026 0ustar gogousersЈа добивте оваа порака бидејќи сте ја заборавиле вашата лозинка за најава на kajmakot. За да ја смените вашата лозинка и се најавите треба да одите на следнава врска и да ги проследите инструкциите. http://kajmakot.servehttp.com/korisnik/resetiraj/{{ podatoci.kluch }} Ако не сте побарале да ви ја пратиме оваа порака можете слободно да ја игнорирате. Поздрав. kajmakot/templates/korisnik/resetiraj_eposhta.html0000644000175000001440000000177010572660155021775 0ustar gogousers{% extends "glavnaosnova.html" %} {% block title %}Ресетирање лозинката{% endblock %} {% block linkovi %} {% endblock %} {% block kategorii %}
  • Ресетирај ја лозинката.

  • {% endblock %} {% block sodrzhina %}
    Ресетирај лозинка
    {{ form.eposhta }}

    Внесете ја е-пошта со која сте регистрирани за да ви пратиме информации за промена на лозинката.


    Нов корисник? Регистрирајте се.

    {% endblock %} kajmakot/templates/korisnik/profil.html0000644000175000001440000000632310573067361017555 0ustar gogousers{% load moitagovi %} {% extends "glavnaosnova.html" %} {% block title %}Кориснички профил{% endblock %} {% block sodrzhina %} {% if not stranici %}

    Корисникот сеуште не пријавил ниту една статија

    {% else %}

    Долу е листата на страници кои ги пријавил корисникот.

    {% for st in stranici %}
    {% if user.is_authenticated %} {% if st.glasalza %} {% else %} {% endif %} {% else %} {% endif %}

    {{ st.stranica.naslov|escape }}

    пријавена пред {{ st.stranica.prijavenaNa|timesince }}. ({{ st.stranica.url|domejn }})

    {{ st.stranica.opis|escape }}

    {% if st.stranica.popularnaOd %}станала популарна пред {{ st.stranica.popularnaOd|timesince }} | {% endif %} {% if user.is_authenticated %} проблем? | {% else %} проблем? | {% endif %} категорија: {{ st.stranica.kategorija.ime }}

    {% endfor %} {% if is_paginated %} {% endif %} {% endif %} {% endblock %} kajmakot/templates/korisnik/resetiraj_lozinkite.html0000644000175000001440000000232010572660174022333 0ustar gogousers{% extends "glavnaosnova.html" %} {% block title %}Ресетирање лозинка{% endblock %} {% block linkovi %} {% endblock %} {% block kategorii %}
  • Промени ја лозинката.

  • {% endblock %} {% block sodrzhina %}

    Здраво {{ korisnik }}, по промената на лозинката ќе бидете пренасочени на главната страница и автоматски најавени.

    Промена на лозинка
    {{ form.password1 }}


    {{ form.password2 }}

    Заради верификација внесете ја истата лозинка како и горе.


    Нов корисник? Регистрирај се.

    {% endblock %} kajmakot/templates/korisnik/najava.html0000644000175000001440000000234610572660074017522 0ustar gogousers{% extends "glavnaosnova.html" %} {% block title %}Најава на корисник{% endblock %} {% block linkovi %} Ресетирај лозинка {% endblock %} {% block kategorii %}
  • Најави се.

  • {% endblock %} {% block sodrzhina %}
    Најaва {% if error_msg %}
    • {{ error_msg }}


    {% endif %} {{ form.username.errors }}
    {{ form.username }}

    {{ form.password.errors }}
    {{ form.password }}

    Ја заборави лозинката?

    Нов корисник? Регистрирај се.

    {% endblock %} kajmakot/templates/korisnik/registriraj_eposhta.html0000644000175000001440000000141210572660131022315 0ustar gogousers{% extends "glavnaosnova.html" %} {% block title %}Регистрирање на нов корисник{% endblock %} {% block linkovi %} {% endblock %} {% block kategorii %}
  • Регистрација.

  • {% endblock %} {% block sodrzhina %}

    Внесете е-пошта на која ќе ви пратиме информации за регистрација.


    {{ form.eposhta }}

    {% endblock %} kajmakot/templates/korisnik/mojprofil.html0000644000175000001440000000472010573065367020266 0ustar gogousers{% load moitagovi %} {% extends "glavnaosnova.html" %} {% block title %}Мој кориснички профил{% endblock %} {% block linkovi %} {{ user.username }} одјава {% endblock %} {% block kategorii %}
  • Мој профил
  • Промени лозинка
  • Ресетирај лозинка
  • Пријави статија
  • {% endblock %} {% block sodrzhina %}

    Ова е листа на сите статии кои сте ги пријавиле вие со информации колку гласови имаат и дали станале популарни.

    {% for st in stranici %}

    {{ st.stranica.naslov|escape }}

    пријавена пред {{ st.stranica.prijavenaNa|timesince }}. ({{ st.stranica.url|domejn }})

    {{ st.stranica.opis|escape }}

    {% if st.stranica.popularnaOd %}станала популарна пред {{ st.stranica.popularnaOd|timesince }} | {% endif %} категорија: {{ st.stranica.kategorija.ime }}

    {% endfor %} {% if is_paginated %} {% endif %} {% endblock %} kajmakot/templates/korisnik/registriraj_eposhtag.html0000644000175000001440000000141410572661306022473 0ustar gogousers{% if uspeh %}

    {{ uspeh }}

    X {% else %}
    {{ form.eposhta.errors }}
    {{ form.eposhta }}

    Внесете е-пошта на која ќе ви пратиме информации за регистрација.

    X {% endif %} kajmakot/templates/glavnaosnova.html0000644000175000001440000000457110573074250017125 0ustar gogousers {% block title %}{% endblock %} - Кајмакот {% block csslinkovi %}{% endblock %} {% block rss %}{% endblock %} {% block jslinkovi %} {% endblock %}
    {% block linkovi %} {% if user.is_authenticated %} {{ user.username }} одјава {% else %} регистрaција најава {% endif %} {% endblock %} за кајмакот
      {% block kategorii %} {% if not kategorija %}
    • Сите
    • {% else %}
    • Сите
    • {% endif %} {% for k in kategorii %}
    • {{ k.ime }}
    • {% endfor %} {% endblock %}
      {% if poraka %}
    {{ poraka }}
    {% endif %} {% block sodrzhina %}{% endblock %}
    kajmakot/templates/popularni_osnova.html0000644000175000001440000000625410573107342020024 0ustar gogousers{% load moitagovi %} {% extends "glavnaosnova.html" %} {% block title %}Популарни статии{% endblock %} {% block sodrzhina %}
    {% if not user.is_authenticated %}

    Што е Кајмакот?

    Кајмакот е интерактивен интернет сервис кој содржи врски до интересни сајтови. Интересните сајтови испливуваат на површина со гласање на уредниците - урeдници сте вие посетителите.
    Повеќе.

    {% endif %} {% block desnoakcii %}{% endblock %} {% block desnorssidrugo %}
    RSS сите
    {% endblock %}
    {% block listastranici %} {% for st in stranici %}
    {% if user.is_authenticated %} {% if st.glasalza %} {% else %} {% endif %} {% else %} {% endif %}

    {{ st.stranica.naslov|escape }}

    пријавена од {{ st.stranica.prijavenaOd.username }} популарна пред {{ st.stranica.popularnaOd|timesince }}. ({{ st.stranica.url|domejn }})

    {{ st.stranica.opis|escape }}

    {% if user.is_authenticated %} проблем? {% else %} проблем? {% endif %} | категорија: {{ st.stranica.kategorija.ime }}

    {% endfor %} {% endblock %} {% block paginator %}{% endblock %}
    {% endblock %} kajmakot/templates/poedinechna.html0000644000175000001440000000520110572660237016700 0ustar gogousers{% load moitagovi %} {% extends "popularni_osnova.html" %} {% block title %}{{ stranica.naslov|escape }}{% endblock %} {% block desnoakcii %}

    Свежи страници

    Гласајте за штотуку објавените страници и направете ги популарни.

     

    Пријави страница

    Пријавете интересна страница за да ја споделите со останатите.

    {% endblock %} {% block listastranici %}
    {% if user.is_authenticated %} {% if glasalza %} {% else %} {% endif %} {% else %} {% endif %}

    {{ stranica.naslov|escape }}

    пријавена од {{ stranica.prijavenaOd.username }} пред {{ stranica.prijavenaNa|timesince }}. ({{ stranica.url|domejn }})

    {{ stranica.opis|escape }}

    {% if stranica.popularnaOd %} станала популарна пред {{ stranica.popularnaOd|timesince }} | {% endif %} {% if user.is_authenticated %} проблем? | {% else %} проблем? | {% endif %}  категорија: {{ stranica.kategorija.ime }}

    {% endblock %} kajmakot/templates/svezhi.html0000644000175000001440000000232710572663476015751 0ustar gogousers{% extends "svezhi_osnova.html" %} {% block rss %}{% endblock %} {% block desnoakcii %}

    Популарни страници

    Гледајте ги популарните страници и гласајте за нив.

     

    Пријави страница

    Пријавете интересна страница и споделите ја со останатите.

    {% endblock %} {% block paginator %} {% if is_paginated %} {% endif %} {% endblock %} kajmakot/templates/popularnipokategorija.html0000644000175000001440000000276410572102146021035 0ustar gogousers{% extends "popularni_osnova.html" %} {% block rss %}{% endblock %} {% block desnoakcii %}

    Свежи во категорија

    Гласајте за штотуку објавените страници од оваа категорија и направете ги популарни.

     

    Пријави страница

    Пријавете интересна страница за да ја споделите со останатите.

    {% endblock %} {% block paginator %} {% if is_paginated %} {% endif %} {% endblock %} kajmakot/templates/baraj.html0000644000175000001440000000044110572070572015500 0ustar gogousers
    {% if not results %}

    Нема ништо.

    {% else %} {% for result in results %} {% endfor %} {% endif %} kajmakot/templates/svezhipokategorija.html0000644000175000001440000000254610572106565020343 0ustar gogousers{% extends "svezhi_osnova.html" %} {% block rss %}{% endblock %} {% block desnoakcii %}

    Популарни страници

    Гледајте ги популарните страници во оваа категорија и гласајте за нив.

     

    Пријави страница

    Пријавете интересна страница и споделете ја со останатите.

    {% endblock %} {% block paginator %} {% if is_paginated %} {% endif %} {% endblock %} kajmakot/templatetags/0000755000175000001440000000000010571575646014243 5ustar gogouserskajmakot/templatetags/moitagovi.py0000644000175000001440000000102010571575646016604 0ustar gogousers# -*- coding: utf-8 -*- from django import template register = template.Library() @register.filter(name='domejn') def domejn(url): """ Ова го користам како template filter. Го враќа домејнот од урл-то. """ import re #urlre = re.compile(r'^(https?://)([www]?.[A-Z.-]+)/',re.IGNORECASE) urlre = re.compile(r'^(https?://)([A-Z.-]+)/',re.IGNORECASE) domejnot = urlre.match(url) if domejnot: return domejnot.group(2) else: return url kajmakot/templatetags/__init__.py0000644000175000001440000000000010571324416016325 0ustar gogouserskajmakot/urls.py0000644000175000001440000000352610573572602013105 0ustar gogousersfrom django.conf.urls.defaults import * from kajmakot.views import * from kajmakot.models import Kategorija from kajmakot.feeds import * # zemi gi site mozhni kategorii i napraj gi za da gi fati url-to k = Kategorija.objects.all() validnikategorii = [] for a in k: validnikategorii.append(a.nasheUrl) validnikategorii = '|'.join(validnikategorii) urlpatterns = patterns('', (r'^admin/', include('django.contrib.admin.urls')), (r'^korisnik/', include('kajmakot.korisnik.urls')), (r'^$',popularni), (r'^str/([0-9]+)/$',popularni), (r'^('+validnikategorii+')/$',popularnipokategorija), (r'^('+validnikategorii+')/str/([0-9]+)/$',popularnipokategorija), (r'^svezhi/$',svezhi), (r'^svezhi/str/([0-9]+)/$',svezhi), (r'^svezhi/('+validnikategorii+')/$',svezhipokategorija), (r'^svezhi/('+validnikategorii+')/str/([0-9]+)/$',svezhipokategorija), (r'^prijavi/$',prijavi_cekor1), (r'^prijavi2/$',prijavi_cekor2), (r'^('+validnikategorii+')/([a-zA-Z0-9_-]+)/$',poedinechna), (r'^glasaj/$',glasaj), (r'^problem/$',problem), (r'^baraj/$',baraj), (r'^zakajmakot/$',zakajmakot), ) # fidovite urlpatterns += patterns('', (r'^rss/(?Psvezhi)/$','django.contrib.syndication.views.feed',{'feed_dict': {'svezhi':Svezhi}}), (r'^rss/(?Psvezhi/('+validnikategorii+'))/$', 'django.contrib.syndication.views.feed', {'feed_dict': {'svezhi':SvezhiPoKategorija}}), # Vaka ako sakam rss na popularnite da odi samo preku /rss/ # (r'^rss/$','django.contrib.syndication.views.feed',{'url':'popularni','feed_dict': {'popularni':Popularni}}), (r'^rss/(?Ppopularni)/$','django.contrib.syndication.views.feed',{'feed_dict': {'popularni':Popularni}}), (r'^rss/(?Ppopularni/('+validnikategorii+'))/$', 'django.contrib.syndication.views.feed', {'feed_dict': {'popularni':PopularniPoKategorija}}), ) kajmakot/views.py0000644000175000001440000002633010573576261013260 0ustar gogousers# -*- coding: utf-8 -*- from kajmakot.models import * from kajmakot import pomoshni, forms from kajmakot.templatetags import moitagovi # da mozham vo template-ot da napravam {% load moitagovi %} from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext from django.http import HttpResponse, HttpResponseRedirect, HttpResponseNotAllowed, Http404 from django.utils import simplejson from django.core.paginator import ObjectPaginator, InvalidPage def svezhi(request,page=1): """ Сите свежи. Ги дава свежите страници подредени опаѓачки кога биле пријавени. """ return generirajstranica( request, Stranica.objects.filter( popularnaOd__isnull=True, svezha__exact=True).order_by('-prijavenaNa'), 'svezhi.html', page=page ) def svezhipokategorija(request,kategorija,page=1): """ Свежи по категорија. Ги дава свежите страници подредени опаѓачки кога биле пријавени. """ return generirajstranica( request, Stranica.objects.filter( kategorija__nasheUrl=kategorija, popularnaOd__isnull=True, svezha__exact=True).order_by('-prijavenaNa' ), 'svezhipokategorija.html', kat=kategorija, page=page ) def popularni(request,page=1): """ Главната страница. Ги дава популарните страници подредени опаѓачки кога станале популарни. """ return generirajstranica( request, Stranica.objects.filter(popularnaOd__isnull=False).order_by('-popularnaOd'), 'popularni.html', page=page ) def popularnipokategorija(request,kategorija,page=1): """ Страници по категории. Ги дава популарните страници подредени опаѓачки кога станеле популарни """ return generirajstranica( request, Stranica.objects.filter(kategorija__nasheUrl=kategorija,popularnaOd__isnull=False).order_by('-popularnaOd'), 'popularnipokategorija.html', page=page, kat=kategorija) def generirajstranica(request, kveriset, templejt, page=1, kat=None): poraka = pomoshni.zemiporaka(request.session) strani = kveriset paginator = ObjectPaginator(strani,5) try: page = int(page) strani = paginator.get_page(page - 1) except InvalidPage: raise Http404 # Tuka gradam objekti od oblik # stranica: ObjektStranica # glasalza: DaliKorisnikotGlasal - poshto nemozham vo templejt da mu stavam argument class zacontekst: def __init__(self,stranica,glasalza): self.stranica = stranica self.glasalza = glasalza site = [] for i in strani: site.append(zacontekst(i,i.daliglasal(request.user))) if paginator.pages <= 5: # ako se pod 5 strani da gi dade site bez tri tochki pages = range(1,paginator.pages+1) povekjeodpet = None else: pages = range(1,6) povekjeodpet = paginator.pages return render_to_response (templejt, {'poraka': poraka, 'stranici': site, 'kategorii': Kategorija.objects.all(), 'kategorija': kat, 'is_paginated': paginator.pages > 1, 'has_next': paginator.has_next_page(page - 1), 'has_previous': paginator.has_previous_page(page - 1), 'current_page': page, 'next_page': page + 1, 'previous_page': page - 1, 'pages': pages, 'povekjeodpet': povekjeodpet, }, context_instance=RequestContext(request)) @pomoshni.potrebna_najava def prijavi_cekor1(request): """ Прв чекор во пријавување на страница. - Внесеното УРЛ го проверува да не е веќе пријавено. Ако е го пренасочува на таа страна. - Ако е ново, го запишува во сесија и го префрла на чекор2. """ if request.method == "POST": formata = forms.PrijaviURL(request.POST) if formata.is_valid(): # Ок е види дали постои УРЛ-то во база. urlprijaveno = formata.clean_data['url'].encode('utf-8') try: s = Stranica.objects.get(url=urlprijaveno) except Stranica.DoesNotExist: # Ne postoi stranica so takvo url pa zapishi vo sesija i prenasochi go request.session['urlto'] = formata.clean_data['url'].encode('utf-8') uspeh = 'window.location.pathname="/prijavi2/"' else: # vekje postoi takva stranica pa prenasochi go tamu # stai poraka vo sesijata deka probal da vnese postoechka statija request.session['poraka'] = 'Супер, некој веќе ја пријавил оваа статија. Вие може да гласајте или коментирате.' uspeh = 'window.location.pathname="%s"' % s.get_absolute_url() return HttpResponse(simplejson.dumps({'OK': uspeh}), mimetype="text/javascript") else: data = simplejson.dumps(formata.errors) return HttpResponse(data, mimetype="text/javascript") else: poraka = pomoshni.zemiporaka(request.session) return render_to_response ('prijavi_cekor1.html', {'form': forms.PrijaviURL(),'poraka':poraka,'user':request.user}) @pomoshni.potrebna_najava def prijavi_cekor2(request): """ Втор чекор на пријавување на статија. - дали има во сесијата 'urlto' ако нема стаи во 'poraka' и врати го на чекор 1 - """ url = request.session.get('urlto',False) if request.method == 'POST': if not url: # ako nema vo sesija url return HttpResponse(simplejson.dumps({'OK':'window.location.pathname=/prijavi/'}), mimetype="text/javascript") formata = forms.PrijaviStatija(request.POST) if formata.is_valid(): podatoci = pomoshni.voutf(formata.clean_data) s = Stranica( kategorija=Kategorija.objects.get(id=podatoci['kategorija']), naslov=podatoci['naslov'], url=url, prijavenaOd=request.user, opis=podatoci['opis'], ) s.save() s.plusglas(request.user) # ova kje ja snimi pak request.session['poraka'] = 'Ви благодариме што ја пријавивте оваа статија.' uspeh = 'window.location.pathname="%s"' % s.get_absolute_url() try: del request.session['urlto'] # izbrishi go od sesijata except: pass data = simplejson.dumps({'OK':uspeh}) else: data = simplejson.dumps(formata.errors) return HttpResponse(data, mimetype="text/javascript") else: if not url: # ako nema vo sesija url return HttpResponseRedirect('/prijavi/') return render_to_response('prijavi_cekor2.html', {'form': forms.PrijaviStatija(),'url':url,'user':request.user}) def poedinechna(request,kat,str): """ Дава страна за поединечна страница. Context: -stranica: stranata -user: request.user -glasalza dali korisnikov glasal """ stranica = get_object_or_404(Stranica,kategorija__nasheUrl=kat,nasheUrl=str) poraka = pomoshni.zemiporaka(request.session) return render_to_response('poedinechna.html', {'stranica':stranica, 'user':request.user, 'glasalza':stranica.daliglasal(request.user), 'kategorii':Kategorija.objects.all(), 'kategorija':kat, 'poraka':poraka, }) def glasaj(request): """ Го прима гласот од корисникот, ако веќе на гласал за таа статија. """ if request.method == 'POST': stranicaid=request.POST.get('stranicaid','0') stranica = get_object_or_404(Stranica,id=stranicaid) if not stranica.plusglas(request.user): return HttpResponseNotAllowed('GET') # ne mozhe ovoj da glasa return render_to_response('glasaj.html',{'stranica':stranica, 'user':request.user}) else: return HttpResponseNotAllowed('GET') # ne mozhe so GET tuka da dojde def problem(request): """ Го прима извештајот за проблем од корисникот. Сега за сега ништо не правам со тоа само го евидентирам. """ if request.method == 'POST': stranicaid=request.POST.get('stranicaid','0') kojproblem=request.POST.get('kojproblem','0') if stranicaid is not '0' and kojproblem is not '0': # samo ako se e vo red zapishi go problemot stranica = get_object_or_404(Stranica,id=stranicaid) korisnik =get_object_or_404(User,id=request.user.id) try: p = Problem.objects.get(korisnik=korisnik,stranica=stranica) except Problem.DoesNotExist: p = Problem.objects.create(kojproblem=kojproblem,korisnik=korisnik,stranica=stranica) else: # ako vekje glasal azhuriraj go samo problemot p.kojproblem = kojproblem p.save() # sekoj pat vrati mu uspeh uspeh = u"$('formprvcekor').innerHTML='Благодариме за вашата информација.'" data = simplejson.dumps({'OK':uspeh}) return HttpResponse(data, mimetype="text/javascript") else: return HttpResponseNotAllowed('GET') # ne mozhe so GET tuka da dojde def baraj(request): """ За барање на статии. todo """ from django.db.models import Q if request.method == 'POST': keywords = request.POST['keywords'].split(' ') stranici = Stranica.objects for keyword in keywords: if not keyword: continue stranici = stranici.filter(Q(naslov__icontains=keyword) | Q(opis__icontains=keyword) ) list = [] for stranica in stranici: list.append(('Stranica', stranica.naslov, stranica.get_absolute_url())) return render_to_response('baraj.html', {'results': list}, RequestContext(request)) else: return render_to_response('baraj.html', RequestContext(request)) def zakajmakot(request): return render_to_response('zakajmakot.html',RequestContext(request))