Kalender Klasse

womstar

Lounge-Member
Halli Hallo!

Hier haben wir eine Klasse, mit der man wunderbar einen Kalender bauen kann.

PHP:
// calendar class
// Erstellt am 14.04.2004
// Von Robert Engelhardt
// Internetagentur More Style Berlin
// info[AT]more-style.de

calendar = function() {

	// Definieren der Eigenschaften

	this.days  = new Array();
	this.wdays = new Array();
	this.month = new Number(new Date().getMonth());
	this.year  = new Number(new Date().getFullYear());
};


calendar.prototype.getSettingDays = function() {

	// Methode zum Ermitteln der aktuellen Tage.
	// Abhängig vom Monat.
	//
	// Rückgabewert Array

	this.wdays = this.wdays.slice(0,0);
	this.days  = this.days.slice(0,0);

	for(var x=1; x<=31; x++) {

		var nextDay  = new Date(this.year,this.month,x);
		var firstDay = new Date(this.year,this.month,1);

		if(nextDay.getMonth() != firstDay.getMonth()) {

			break;

		} else {

			this.days[this.days.length] = x;		

			// Fühlen des Arrays mit dem Wochentag des jeweiligen Tages.
			// Wert entspricht new Date().getDay()
		
			this.wdays[this.wdays.length] = nextDay.getDay();
		}
	}

	delete nextDay;
	delete firstDay;
	delete x;

	return this.days;
};

calendar.prototype.getSettingWeekDays = function() {

	// Methode zur Ermittlung der Wochentage.
	// Diese Array ist deckungsgleich mit dem Array der Tage.
	//
	// Rückgabewert Array
	
	if(this.wdays.length <= 0) {

		this.getSettingDays();
	}

	return this.wdays;
};

calendar.prototype.getSettingMonth = function() {

	// Methode zur Ermittlung des Monats.
	// Der Rückgabewert entspricht der Rückgabe von new Date().getMonth()
	//
	// Rückgabewert Number

	return this.month;
};

calendar.prototype.getSettingYear = function() {

	// Methode zur Ermittlung des Jahres.
	//
	// Rückgabewert Number
	
	return this.year; 
};

calendar.prototype.next = function() {
	
	// Methode zum Hochzählen der Eigenschaft Monat und Jahr.
	//
	// Rückgabewert keiner
	
	if(this.month >= 11) {
		
		this.year++;
		this.month = 0;
		
	} else {
		
		this.month++;
	}
};

calendar.prototype.back = function() {

	// Methode zum Herunterzählen der Eigenschaft Monat und Jahr.
	//
	// Rückgabewert keiner

	if(this.month < 1) {

		this.year--;
		this.month = 11;

	} else {
		
		this.month--;
	}
};



Beispiel.
Der Code ist etwas Chaotisch aber da mal drüber hinwegsehen ;)

PHP:
// 1. Schlüsselbild
// 1 EBENE
// calender class

PHP:
// 1. Schlüsselbild
// 2 EBENE

TextField.prototype.setFormat = function(s,b,f,c,a,lm) {
	
	var format = new TextFormat();
	
	format.size = s;
	format.bold = b;
	format.font = f;
	format.color = c;
	format.align = a;
	format.leftMargin = lm;
	
	return this.setNewTextFormat(format);
};

TextField.prototype.setFieldFormat = function(bo,bc,bg,ba,sa) {
	
	this.border = bo;
	this.borderColor = bc;
	this.background = bg
	this.backgroundColor = ba;
	this.selectable = sa;
};

MovieClip.prototype.create3eck = function(l,t,w,h,c) {
	
	this.moveTo(l,t);
	this.lineStyle(0.5,0xFFFFFF,0);
	this.beginFill("0x"+c,100);

	this.lineTo(l+w,t)
	this.lineTo(l+w/2,t-h);
	this.lineTo(l,t);
	
	this.endFill();
};


setCalender = function(px,py,s,bc,wc,wd,bg,fc,ff,fs) {
	
	this.kalender = new calender();
	
	this.textBorderColor = "0x"+bc;
	this.weekendColor = "0x"+wc;
	this.weekendDayColor = "0x"+wd;
	this.textBgColor = "0x"+bg;
	this.textFontColor = "0x"+fc;
	this.textFieldFont = ff;
	this.textFontSize = fs;
	this.weekDays = ["MO","DI","MI","DO","FR","SA","SO"];
	this.monaths = ["Januar","Februar","März","April",
					"Mai","Juli","Juni","August","September",
					"Oktober","Novenber","Dezember"];
	
	this.initCalenderSheet(px,py,s);
};
setCalender.prototype.initCalenderSheet = function(px,py,s) {

	var days = this.kalender.getSettingDays();
	var monat = this.kalender.getSettingMonth();
	var jahr = this.kalender.getSettingYear();
	var wdays = this.kalender.getSettingWeekDays();
	    wdays = (wdays[0]==0)? 7: wdays[0];
	var fieldW = 21;
	var fieldH = 15
	var count = 1;
	var dayCount = 1;
	var fieldName = "";
	var colors = "";

	_level0.createEmptyMovieClip("kalender",0);
	_level0["kalender"]._x = px;
	_level0["kalender"]._y = py;
	
	for(x=0;x<7;x++) {
		for(y=0;y<7;y++) {

			fieldName 	= (x<=0)? this.weekDays[y]: "day"+dayCount++;
			colors 		= (x<=0)? this.weekendDayColor: 
						  (y>4)? this.weekendColor: this.textBgColor;
			
			if(x<1&&y<1) {
				
				_level0["kalender"].createTextField("blatt",0,0,0,(s*6)+(fieldW*7),fieldH);
				
				with(_level0["kalender"]["blatt"]) {
					
					setFormat(this.textFontSize,false,this.textFieldFont,this.textFontColor,"center",2);
					setFieldFormat(true,this.textBorderColor,true,this.textBgColor,false);
					
					text = this.monaths[monat]+" - "+jahr;
				}
			}
			
			_level0["kalender"].createTextField(fieldName,count,(fieldW+s)*y,(fieldH+s)+(fieldH+s)*x,fieldW,fieldH);
			
			with(_level0["kalender"][fieldName]) {
				
				setFormat(this.textFontSize,false,this.textFieldFont,this.textFontColor,"center",2);
				setFieldFormat(true,this.textBorderColor,true,colors,false);
				
				if(x<=0) _level0["kalender"][fieldName].text = this.weekDays[y];
			}
			
			count++;
		}
	}

	for(x=1;x<=35;x++) _level0["kalender"]["day"+((wdays-1)+x)].text = days[x-1];
	
	_level0["kalender"].createEmptyMovieClip("back",count+1);
	_level0["kalender"].createEmptyMovieClip("next",count+2);
	
	with(_level0["kalender"]["back"]) {
		
		create3eck(-5,10,10,10,"B5CDFF");
		_rotation = -90;
		_x = 5;
		_y = fieldH/2;
		kl = this.kalender;
		mo = this.monaths;
	}
	
	_level0["kalender"]["back"].onPress = function() {
		kl.back();
		var days  = kl.getSettingDays();
		var wdays = kl.getSettingWeekDays();
		    wdays = (wdays[0]==0)? 7: wdays[0];
		var monat = kl.getSettingMonth();
		var jahr = kl.getSettingYear();
		
		with(this) {
			for(x=1;x<=35;x++) _parent["day"+x].text = "";
			for(x=1;x<=35;x++) _parent["day"+((wdays-1)+x)].text = days[x-1];
			_parent["blatt"].text = mo[monat]+" - "+jahr;
		}
	};
	
	with(_level0["kalender"]["next"]) {
		
		create3eck(-5,0,10,10,"B5CDFF");
		_rotation = 90;
		_x = ((s*6)+(fieldW*7)-10)-5;
		_y = fieldH/2;
		kl = this.kalender;
		mo = this.monaths;
	}
	
	_level0["kalender"]["next"].onPress = function() {
		kl.next();
		var days  = kl.getSettingDays();
		var wdays = kl.getSettingWeekDays();
		    wdays = (wdays[0]==0)? 7: wdays[0];
		var monat = kl.getSettingMonth();
		var jahr = kl.getSettingYear();

		with(this) {
			for(x=1;x<=35;x++) _parent["day"+x].text = "";
			for(x=1;x<=35;x++) _parent["day"+((wdays-1)+x)].text = days[x-1];
			_parent["blatt"].text = mo[monat]+" - "+jahr;
		}
	};
};
new setCalender(100,100,2,"666666","DFEAFF","DFDFDF","ffffff","666666","arial",9);

Die Klasse funktioniert auch einwandfrei in JavaScript.

Und als Anhang noch ein schöne Komponente, für die die es kompakter lieben.

Grüße Robert
 

Anhänge

  • komponente.zip
    9 KB · Aufrufe: 357
Zuletzt bearbeitet:
Zurück
Oben