ميدياويكي:MultiLevelMenu.js

هذه هي النسخة الحالية من هذه الصفحة، وقام بتعديلها عبود السكاف (نقاش | مساهمات) في 19:38، 26 أغسطس 2013. العنوان الحالي (URL) هو وصلة دائمة لهذه النسخة.

(فرق) → نسخة أقدم | نسخة حالية (فرق) | نسخة أحدث ← (فرق)

ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.

/*[[قالب:قائمة أفقية]]*/ 
importStylesheet('MediaWiki:MultiLevelMenu.css');

var arrowimages = {
	down: ["downarrowclass", "//upload.wikimedia.org/wikipedia/commons/f/f1/MediaWiki_Vector_skin_action_arrow.svg", 10],
	left: ["leftarrowclass", "//upload.wikimedia.org/wikipedia/commons/8/8e/MediaWiki_Vector_skin_left_arrow.svg"]
};
var jqueryslidemenu = {
	animateduration: {
		over: 600,
		out: 600
	},
	buildmenu: function (menuid, arrowsvar) {
		jQuery(document).ready(function ($) {
			var $mainmenu = $("#" + menuid + ">ul");
			var $headers = $mainmenu.find("ul").parent();
			$headers.each(function (i) {
				var $curobj = $(this);
				var $subul = $(this).find("ul:eq(0)");
				this._dimensions = {
					w: this.offsetWidth,
					h: this.offsetHeight,
					subulw: $subul.outerWidth(),
					subulh: $subul.outerHeight()
				};
				this.istopheader = $curobj.parents("ul").length == 1 ? true : false;
				$subul.css({
					top: this.istopheader ? this._dimensions.h + "px" : 0
				});
				$curobj.children("a:eq(0)").css(this.istopheader ? {
					paddingLeft: arrowsvar.down[2]
				} : {}).append('<img src="' + (this.istopheader ? arrowsvar.down[1] : arrowsvar.left[1]) + '" class="' + (this.istopheader ? arrowsvar.down[0] : arrowsvar.left[0]) + '" style="border:0;" />');
				$curobj.hover(function (e) {
					var $targetul = $(this).children("ul:eq(0)");
					this._offsets = {
						right: $(this).offset().right,
						top: $(this).offset().top
					};
					var menuright = this.istopheader ? 0 : this._dimensions.w;
					menuright = (this._offsets.right + menuright + this._dimensions.subulw > $(window).width()) ? (this.istopheader ? -this._dimensions.subulw + this._dimensions.w : -this._dimensions.w) : menuright;
					if ($targetul.queue().length <= 1) {
						$targetul.css({
							right: menuright + "px",
							width: this._dimensions.subulw + "px"
						}).slideDown(jqueryslidemenu.animateduration.over)
					}
				}, function (e) {
					var $targetul = $(this).children("ul:eq(0)");
					$targetul.slideUp(jqueryslidemenu.animateduration.out)
				});
				$curobj.click(function () {
					$(this).children("ul:eq(0)").hide()
				})
			});
			$mainmenu.find("ul").css({
				display: "none",
				visibility: "visible"
			})
		})
	}
};
jqueryslidemenu.buildmenu("myslidemenu", arrowimages);