header bar για 3-4 sites

Από που να ξεκινήσω; Που θα βρω; κ.α. γενικές ερωτήσεις για την δημιουργία μιας ιστοσελίδας.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
sinikos
Δημοσιεύσεις: 40
Εγγραφή: 21 Μαρ 2013 03:41

header bar για 3-4 sites

Δημοσίευση από sinikos » 25 Μαρ 2014 14:32

Γεια σας.... Εχω 3 sites στο ιδιο ρουτ σε 3 φακελους π.χ. root/site1, root/site2, root/site3.
Μπορώ να φτιάξω μια header που να ειναι κοινη και στα 3 sites η οποια να έχει λινκς για τα 3 sites. Δηλαδή επανω επάνω να έχει τα link site1, site2, site3. Αλλά όταν κάνω μια αλλαγή να γινεται και στα 3. Δηλαδή να τραβαει από κοινό κώδικα.

Επίσης αν είναι δυνατόν να μπορεί να το κλείνει ο επισκέπτης αν θέλει. Δείτε το παράδειγμα και θα καταλάβετε. Παράκληση, αν μπορείτε λίγο αναλυτικά να με καθοδηγήσετε.

Ευχαριστώ

Π.Χ. http://codecanyon.net/item/wp-auctions- ... iew/109252
Συνημμένα
Capture.JPG

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

header bar για 3-4 sites

Δημοσίευση από geomagas » 25 Μαρ 2014 14:39

Αυτό που περιγράφεις γίνεται με το να κάνεις include ένα κοινό php και στα τρία sites.
Αυτό που κάνει το codecanyon είναι να βάζει το άλλο site σε iframe, ώστε να το βλέπεις χωρίς να φεύγεις από το codecanyon.

Τι από τα δύο θέλεις εσύ;

sinikos
Δημοσιεύσεις: 40
Εγγραφή: 21 Μαρ 2013 03:41

header bar για 3-4 sites

Δημοσίευση από sinikos » 25 Μαρ 2014 19:55

Νομίζω οτι για αυτό που θέλω, το πρώτο τρόπο χρειάζομαι

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

header bar για 3-4 sites

Δημοσίευση από geomagas » 25 Μαρ 2014 22:14

Φτιάξε ένα πχ superheader.php με την html που θέλεις (το πιθανότερο ένα div με τέσσερα links μέσα) και κάντο include αμέσως πριν από τον header σου και στα τρία sites.

Για το close τώρα, θέλεις όταν το κλείνεις να κλείνει και για τα τρία sites; Ή αν το κλείσω όταν είμαι στο site1 και μετά πάω στο site2 να εμφανίζεται;
Τα sites έχουν διαφορετικά domains;

sinikos
Δημοσιεύσεις: 40
Εγγραφή: 21 Μαρ 2013 03:41

header bar για 3-4 sites

Δημοσίευση από sinikos » 28 Μαρ 2014 01:45

geomagas έγραψε:Φτιάξε ένα πχ superheader.php με την html που θέλεις (το πιθανότερο ένα div με τέσσερα links μέσα) και κάντο include αμέσως πριν από τον header σου και στα τρία sites.

Για το close τώρα, θέλεις όταν το κλείνεις να κλείνει και για τα τρία sites; Ή αν το κλείσω όταν είμαι στο site1 και μετά πάω στο site2 να εμφανίζεται;
Τα sites έχουν διαφορετικά domains;
Το έκανα. εφτιαξα ενα top.php με ενα κειμενακι για τεστ και τωρα εμφανιζεται και στις 3 σελιδες.

Για να το φτιάξω ομως οπως θελω, πρεπει οπωσδηποτε να εχει και css? Δεν εχω καταλαβει ρε γαμωτο τις διαφορες της php με την html. Τα έχω μπλέξει όλα στο μυαλό μου. :think:

Δηλαδή πως μπορω να φτιάξω μια php που θα ειναι στην ουσια μια μαυρη γραμμη σε όλο το width και θα έχει ενα dropdown menu με τα 3 link. Έχω και το dreamweaver, ψαχνω και στο google και δεν ξερω να βγαλω τα ματια μου.

π.χ. οπως ειναι το header του rockettheme στα demo του http://demo.rockettheme.com/wordpress-themes/hadron/

sinikos
Δημοσιεύσεις: 40
Εγγραφή: 21 Μαρ 2013 03:41

header bar για 3-4 sites

Δημοσίευση από sinikos » 28 Μαρ 2014 02:54

sinikos έγραψε:
Το έκανα. εφτιαξα ενα top.php με ενα κειμενακι για τεστ και τωρα εμφανιζεται και στις 3 σελιδες.

Για να το φτιάξω ομως οπως θελω, πρεπει οπωσδηποτε να εχει και css? Δεν εχω καταλαβει ρε γαμωτο τις διαφορες της php με την html. Τα έχω μπλέξει όλα στο μυαλό μου. :think:

Δηλαδή πως μπορω να φτιάξω μια php που θα ειναι στην ουσια μια μαυρη γραμμη σε όλο το width και θα έχει ενα dropdown menu με τα 3 link. Έχω και το dreamweaver, ψαχνω και στο google και δεν ξερω να βγαλω τα ματια μου.

π.χ. οπως ειναι το header του rockettheme στα demo του http://demo.rockettheme.com/wordpress-themes/hadron/
Τελικά έφτιαξα κάτι, το φόρτωσα στο header αλλά έχω δυο προβλήματα

α)Στο select πως βάζω link?
β)Όταν τρέχει στο header του κάθε site δεν είναι ίδιο, σαν να μην έχει καθόλου css


Οι κώδικες είναι:
α) το html

Κώδικας: Επιλογή όλων

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>games</title>
<style type="text/css">
body &#123;
	background-color&#58; #000;
&#125;
body,td,th &#123;
	font-size&#58; 16px;
	color&#58; #FFF;
&#125;
</style>
<link href="SpryAssets/SpryValidationSelect.css" rel="stylesheet" type="text/css" />
<script src="SpryAssets/SpryValidationSelect.js" type="text/javascript"></script>
</head>

<body bgcolor="#000000" text="#CCCCCC" leftmargin="120px">
Επιλέξτε Demo &#58; <span id="spryselect1">
<select name="select1" id="select1">
  <option>games</option>
<option>Tips</option>
  <option>Forum</option>
</select>
<span class="selectRequiredMsg">Please select an item.</span></span>
<script type="text/javascript">
var spryselect1 = new Spry.Widget.ValidationSelect&#40;"spryselect1"&#41;;
</script>
</body>
</html>

b) javascript

Κώδικας: Επιλογή όλων

// SpryValidationSelect.js - version 0.11 - Spry Pre-Release 1.6.1
//
// Copyright &#40;c&#41; 2006. Adobe Systems Incorporated.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met&#58;
//
//   * Redistributions of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//   * Redistributions in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
//   * Neither the name of Adobe Systems Incorporated nor the names of its
//     contributors may be used to endorse or promote products derived from this
//     software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES &#40;INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION&#41; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT &#40;INCLUDING NEGLIGENCE OR OTHERWISE&#41;
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.

&#40;function&#40;&#41; &#123; // BeginSpryComponent

if &#40;typeof Spry == "undefined"&#41; window.Spry = &#123;&#125;; if &#40;!Spry.Widget&#41; Spry.Widget = &#123;&#125;;

Spry.Widget.ValidationSelect = function&#40;element, opts&#41;
&#123;
	this.init&#40;element&#41;;

	Spry.Widget.Utils.setOptions&#40;this, opts&#41;;

	// set validateOn flags
	var validateOn = &#91;'submit'&#93;.concat&#40;this.validateOn || &#91;&#93;&#41;;
	validateOn = validateOn.join&#40;","&#41;;
	this.validateOn = 0 | &#40;validateOn.indexOf&#40;'submit'&#41; != -1 ? Spry.Widget.ValidationSelect.ONSUBMIT &#58; 0&#41;;
	this.validateOn = this.validateOn | &#40;validateOn.indexOf&#40;'blur'&#41; != -1 ? Spry.Widget.ValidationSelect.ONBLUR &#58; 0&#41;;
	this.validateOn = this.validateOn | &#40;validateOn.indexOf&#40;'change'&#41; != -1 ? Spry.Widget.ValidationSelect.ONCHANGE &#58; 0&#41;;

	if &#40;this.additionalError&#41;
		this.additionalError = this.getElement&#40;this.additionalError&#41;;

	// Unfortunately in some browsers like Safari, the Stylesheets our
	// page depends on may not have been loaded at the time we are called.
	// This means we have to defer attaching our behaviors until after the
	// onload event fires, since some of our behaviors rely on dimensions
	// specified in the CSS.

	if &#40;Spry.Widget.ValidationSelect.onloadDidFire&#41;
		this.attachBehaviors&#40;&#41;;
	else 
		Spry.Widget.ValidationSelect.loadQueue.push&#40;this&#41;;
&#125;;

Spry.Widget.ValidationSelect.ONCHANGE = 1;
Spry.Widget.ValidationSelect.ONBLUR = 2;
Spry.Widget.ValidationSelect.ONSUBMIT = 4;

Spry.Widget.ValidationSelect.prototype.init = function&#40;element&#41;
&#123;
	this.element = this.getElement&#40;element&#41;;
	this.additionalError = false;
	this.selectElement = null;
	this.form = null;
	this.event_handlers = &#91;&#93;;
	
	 // this.element can be either the container &#40;<span>&#41;
	 // or the <select> element, when no error messages are used.
	
	this.requiredClass = "selectRequiredState";
	this.invalidClass = "selectInvalidState";
	this.focusClass = "selectFocusState";
	this.validClass = "selectValidState";
	
	this.emptyValue = "";
	this.invalidValue = null;
	this.isRequired = true;
	
	this.validateOn = &#91;"submit"&#93;;  // change, blur, submit
	// flag used to avoid cascade validation when both 
	// onChange and onBlur events are used to trigger validation
	this.validatedByOnChangeEvent = false;
&#125;;

Spry.Widget.ValidationSelect.prototype.destroy = function&#40;&#41; &#123;
	if &#40;this.event_handlers&#41;
		for &#40;var i=0; i<this.event_handlers.length; i++&#41; &#123;
			Spry.Widget.Utils.removeEventListener&#40;this.event_handlers&#91;i&#93;&#91;0&#93;, this.event_handlers&#91;i&#93;&#91;1&#93;, this.event_handlers&#91;i&#93;&#91;2&#93;, false&#41;;
		&#125;
	try &#123; delete this.element; &#125; catch&#40;err&#41; &#123;&#125;
	try &#123; delete this.selectElement; &#125; catch&#40;err&#41; &#123;&#125;
	try &#123; delete this.form; &#125; catch&#40;err&#41; &#123;&#125;
	try &#123; delete this.event_handlers; &#125; catch&#40;err&#41; &#123;&#125;

	var q = Spry.Widget.Form.onSubmitWidgetQueue;
	var qlen = q.length;
	for &#40;var i = 0; i < qlen; i++&#41; &#123;
		if &#40;q&#91;i&#93; == this&#41; &#123;
			q.splice&#40;i, 1&#41;;
			break;
		&#125;
	&#125;
&#125;;

Spry.Widget.ValidationSelect.onloadDidFire = false;
Spry.Widget.ValidationSelect.loadQueue = &#91;&#93;;

Spry.Widget.ValidationSelect.prototype.getElement = function&#40;ele&#41;
&#123;
	if &#40;ele && typeof ele == "string"&#41;
		return document.getElementById&#40;ele&#41;;
	return ele;
&#125;;

Spry.Widget.ValidationSelect.processLoadQueue = function&#40;handler&#41;
&#123;
	Spry.Widget.ValidationSelect.onloadDidFire = true;
	var q = Spry.Widget.ValidationSelect.loadQueue;
	var qlen = q.length;
	for &#40;var i = 0; i < qlen; i++&#41;
		q&#91;i&#93;.attachBehaviors&#40;&#41;;
&#125;;

Spry.Widget.ValidationSelect.addLoadListener = function&#40;handler&#41;
&#123;
	if &#40;typeof window.addEventListener != 'undefined'&#41;
		window.addEventListener&#40;'load', handler, false&#41;;
	else if &#40;typeof document.addEventListener != 'undefined'&#41;
		document.addEventListener&#40;'load', handler, false&#41;;
	else if &#40;typeof window.attachEvent != 'undefined'&#41;
		window.attachEvent&#40;'onload', handler&#41;;
&#125;;

Spry.Widget.ValidationSelect.addLoadListener&#40;Spry.Widget.ValidationSelect.processLoadQueue&#41;;
Spry.Widget.ValidationSelect.addLoadListener&#40;function&#40;&#41;&#123;
	Spry.Widget.Utils.addEventListener&#40;window, "unload", Spry.Widget.Form.destroyAll, false&#41;;
&#125;&#41;;

Spry.Widget.ValidationSelect.prototype.attachBehaviors = function&#40;&#41;
&#123;
	// find the SELECT element inside current container
	if &#40;this.element.nodeName == "SELECT"&#41; &#123;
		this.selectElement = this.element;
	&#125; else &#123;
		this.selectElement = Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel&#40;this.element, "SELECT"&#41;;
	&#125;

	if &#40;this.selectElement&#41; &#123;
		var self = this;
		this.event_handlers = &#91;&#93;;
		// focus
		// attach on beforeactivate instead of focus for
		//      - IE 6 &#40;to overcome this bug&#58; setting a class name onfocus does not affect the open dropdown&#41;
		//      - IE 7 &#40;to overcome this bug&#58; setting a class name, closes the select&#41;
		var focusEventName = "focus";
		var ua = navigator.userAgent.match&#40;/msie &#40;\d+&#41;\./i&#41;;
		if &#40;ua&#41; &#123;
			ua = parseInt&#40;ua&#91;1&#93;, 10&#41;;
			if &#40;ua >= 6&#41; &#123;
				focusEventName = "beforeactivate";
			&#125;
		&#125;
		this.event_handlers.push&#40;&#91;this.selectElement, focusEventName, function&#40;e&#41; &#123; if &#40;self.isDisabled&#40;&#41;&#41; return true; return self.onFocus&#40;e&#41;; &#125;&#93;&#41;;
		// blur
		this.event_handlers.push&#40;&#91;this.selectElement, "blur", function&#40;e&#41; &#123; if &#40;self.isDisabled&#40;&#41;&#41; return true; return self.onBlur&#40;e&#41;; &#125;&#93;&#41;;
		// change
		if &#40;this.validateOn & Spry.Widget.ValidationSelect.ONCHANGE&#41; &#123;
			this.event_handlers.push&#40;&#91;this.selectElement, "change", function&#40;e&#41; &#123; if &#40;self.isDisabled&#40;&#41;&#41; return true; return self.onChange&#40;e&#41;; &#125;&#93;&#41;;
			this.event_handlers.push&#40;&#91;this.selectElement, "keypress", function&#40;e&#41; &#123; if &#40;self.isDisabled&#40;&#41;&#41; return true; return self.onChange&#40;e&#41;; &#125;&#93;&#41;;
		&#125;

		for &#40;var i=0; i<this.event_handlers.length; i++&#41; &#123;
			Spry.Widget.Utils.addEventListener&#40;this.event_handlers&#91;i&#93;&#91;0&#93;, this.event_handlers&#91;i&#93;&#91;1&#93;, this.event_handlers&#91;i&#93;&#91;2&#93;, false&#41;;
		&#125;

		// submit
		this.form = Spry.Widget.Utils.getFirstParentWithNodeName&#40;this.selectElement, "FORM"&#41;;
		if &#40;this.form&#41; &#123;
			// if no "onSubmit" handler has been attached to the current form, attach one
			if &#40;!this.form.attachedSubmitHandler && !this.form.onsubmit&#41; &#123;
				this.form.onsubmit = function&#40;e&#41; &#123; e = e || event; return Spry.Widget.Form.onSubmit&#40;e, e.srcElement || e.currentTarget&#41; &#125;;
				this.form.attachedSubmitHandler = true;                 
			&#125;
			if &#40;!this.form.attachedResetHandler&#41; &#123;
				Spry.Widget.Utils.addEventListener&#40;this.form, "reset", function&#40;e&#41; &#123; e = e || event; return Spry.Widget.Form.onReset&#40;e, e.srcElement || e.currentTarget&#41; &#125;, false&#41;;
				this.form.attachedResetHandler = true;                 
			&#125;
			// add the currrent widget to the "onSubmit" check queue;
			Spry.Widget.Form.onSubmitWidgetQueue.push&#40;this&#41;;
		&#125;
	&#125;
&#125;;


Spry.Widget.ValidationSelect.prototype.addClassName = function&#40;ele, className&#41;
&#123;
	if &#40;!ele || !className || &#40;ele.className && ele.className.search&#40;new RegExp&#40;"\\b" + className + "\\b"&#41;&#41; != -1&#41;&#41;
		return;
	ele.className += &#40;ele.className ? " " &#58; ""&#41; + className;
&#125;;

Spry.Widget.ValidationSelect.prototype.removeClassName = function&#40;ele, className&#41;
&#123;
	if &#40;!ele || !className || &#40;ele.className && ele.className.search&#40;new RegExp&#40;"\\b" + className + "\\b"&#41;&#41; == -1&#41;&#41;
		return;
	ele.className = ele.className.replace&#40;new RegExp&#40;"\\s*\\b" + className + "\\b", "g"&#41;, ""&#41;;
&#125;;



Spry.Widget.ValidationSelect.prototype.onFocus = function&#40;e&#41;
&#123;
	this.hasFocus = true;
	this.validatedByOnChangeEvent = false;
	this.addClassName&#40;this.element, this.focusClass&#41;;
	this.addClassName&#40;this.additionalError, this.focusClass&#41;;
&#125;;

Spry.Widget.ValidationSelect.prototype.onBlur = function&#40;e&#41;
&#123;
	this.hasFocus = false;
	var doValidation = false;
	if &#40;this.validateOn & Spry.Widget.ValidationSelect.ONBLUR&#41;
		doValidation = true;
	if &#40;doValidation && !this.validatedByOnChangeEvent&#41;
		this.validate&#40;&#41;;
	this.removeClassName&#40;this.element, this.focusClass&#41;;
	this.removeClassName&#40;this.additionalError, this.focusClass&#41;;
&#125;;

Spry.Widget.ValidationSelect.prototype.onChange = function&#40;e&#41;
&#123;
	this.hasFocus = false;
	this.validate&#40;&#41;;
	this.validatedByOnChangeEvent = true;
&#125;;

Spry.Widget.ValidationSelect.prototype.reset = function&#40;&#41; &#123;
	this.removeClassName&#40;this.element, this.requiredClass&#41;;
	this.removeClassName&#40;this.element, this.invalidClass&#41;;
	this.removeClassName&#40;this.element, this.validClass&#41;;
	this.removeClassName&#40;this.additionalError, this.requiredClass&#41;;
	this.removeClassName&#40;this.additionalError, this.invalidClass&#41;;
	this.removeClassName&#40;this.additionalError, this.validClass&#41;;
&#125;;

Spry.Widget.ValidationSelect.prototype.validate = function&#40;&#41; &#123;
	this.reset&#40;&#41;;
	// check isRequired
	if &#40;this.isRequired&#41; &#123;
		// there are no options, or no option has been selected
		if &#40;this.selectElement.options.length == 0 || this.selectElement.selectedIndex == -1&#41; &#123;
			this.addClassName&#40;this.element, this.requiredClass&#41;;
			this.addClassName&#40;this.additionalError, this.requiredClass&#41;;
			return false;
		&#125;
		// the current selected option has no "value" attribute
		// when no value is set, browsers implement different behaviour for the value property
		// IE&#58; value = blank string &#40;""&#41;
		// FF, Opera&#58; value = option text
		if &#40;this.selectElement.options&#91;this.selectElement.selectedIndex&#93;.getAttribute&#40;"value"&#41; == null&#41; &#123;
			this.addClassName&#40;this.element, this.requiredClass&#41;;
			this.addClassName&#40;this.additionalError, this.requiredClass&#41;;
			return false;
		&#125;
		// the current selected option has blank string &#40;""&#41; value
		if &#40;this.selectElement.options&#91;this.selectElement.selectedIndex&#93;.value == this.emptyValue&#41; &#123;
			this.addClassName&#40;this.element, this.requiredClass&#41;;
			this.addClassName&#40;this.additionalError, this.requiredClass&#41;;
			return false;
		&#125;
		// the current selected option has "disabled" attribute
		// IE 6 allows to select such options
		if &#40;this.selectElement.options&#91;this.selectElement.selectedIndex&#93;.disabled&#41; &#123;
			this.addClassName&#40;this.element, this.requiredClass&#41;;
			this.addClassName&#40;this.additionalError, this.requiredClass&#41;;
			return false;
		&#125;
	&#125;
	if &#40;this.invalidValue&#41; &#123;
		if &#40;this.selectElement.options.length > 0 && 
			this.selectElement.selectedIndex != -1 &&
			this.selectElement.options&#91;this.selectElement.selectedIndex&#93;.value == this.invalidValue&#41; &#123;
			this.addClassName&#40;this.element, this.invalidClass&#41;;
			this.addClassName&#40;this.additionalError, this.invalidClass&#41;;
			return false;
		&#125;
	&#125;
	this.addClassName&#40;this.element, this.validClass&#41;;
	this.addClassName&#40;this.additionalError, this.validClass&#41;;
	return true;
&#125;;

Spry.Widget.ValidationSelect.prototype.isDisabled = function&#40;&#41; &#123;
	return this.selectElement.disabled;	
&#125;;

//////////////////////////////////////////////////////////////////////
//
// Spry.Widget.Form - common for all widgets
//
//////////////////////////////////////////////////////////////////////

if &#40;!Spry.Widget.Form&#41; Spry.Widget.Form = &#123;&#125;;
if &#40;!Spry.Widget.Form.onSubmitWidgetQueue&#41; Spry.Widget.Form.onSubmitWidgetQueue = &#91;&#93;;

if &#40;!Spry.Widget.Form.validate&#41; &#123;
	Spry.Widget.Form.validate = function&#40;vform&#41; &#123;
		var isValid = true;
		var isElementValid = true;
		var q = Spry.Widget.Form.onSubmitWidgetQueue;
		var qlen = q.length;
		for &#40;var i = 0; i < qlen; i++&#41; &#123;
			if &#40;!q&#91;i&#93;.isDisabled&#40;&#41; && q&#91;i&#93;.form == vform&#41; &#123;
				isElementValid = q&#91;i&#93;.validate&#40;&#41;;
				isValid = isElementValid && isValid;
			&#125;
		&#125;
		return isValid;
	&#125;
&#125;;

if &#40;!Spry.Widget.Form.onSubmit&#41; &#123;
	Spry.Widget.Form.onSubmit = function&#40;e, form&#41;
	&#123;
		if &#40;Spry.Widget.Form.validate&#40;form&#41; == false&#41; &#123;
			return false;
		&#125;
		return true;
	&#125;;
&#125;;

if &#40;!Spry.Widget.Form.onReset&#41; &#123;
	Spry.Widget.Form.onReset = function&#40;e, vform&#41;
	&#123;
		var q = Spry.Widget.Form.onSubmitWidgetQueue;
		var qlen = q.length;
		for &#40;var i = 0; i < qlen; i++&#41; &#123;
			if &#40;!q&#91;i&#93;.isDisabled&#40;&#41; && q&#91;i&#93;.form == vform && typeof&#40;q&#91;i&#93;.reset&#41; == 'function'&#41; &#123;
				q&#91;i&#93;.reset&#40;&#41;;
			&#125;
		&#125;
		return true;
	&#125;;
&#125;;

if &#40;!Spry.Widget.Form.destroy&#41; &#123;
	Spry.Widget.Form.destroy = function&#40;form&#41;
	&#123;
		var q = Spry.Widget.Form.onSubmitWidgetQueue;
		for &#40;var i = 0; i < Spry.Widget.Form.onSubmitWidgetQueue.length; i++&#41; &#123;
			if &#40;q&#91;i&#93;.form == form && typeof&#40;q&#91;i&#93;.destroy&#41; == 'function'&#41; &#123;
				q&#91;i&#93;.destroy&#40;&#41;;
				i--;
			&#125;
		&#125;
	&#125;
&#125;;

if &#40;!Spry.Widget.Form.destroyAll&#41; &#123;
	Spry.Widget.Form.destroyAll = function&#40;&#41;
	&#123;
		var q = Spry.Widget.Form.onSubmitWidgetQueue;
		for &#40;var i = 0; i < Spry.Widget.Form.onSubmitWidgetQueue.length; i++&#41; &#123;
			if &#40;typeof&#40;q&#91;i&#93;.destroy&#41; == 'function'&#41; &#123;
				q&#91;i&#93;.destroy&#40;&#41;;
				i--;
			&#125;
		&#125;
	&#125;
&#125;;

//////////////////////////////////////////////////////////////////////
//
// Spry.Widget.Utils
//
//////////////////////////////////////////////////////////////////////

if &#40;!Spry.Widget.Utils&#41;	Spry.Widget.Utils = &#123;&#125;;

Spry.Widget.Utils.setOptions = function&#40;obj, optionsObj, ignoreUndefinedProps&#41;
&#123;
	if &#40;!optionsObj&#41;
		return;
	for &#40;var optionName in optionsObj&#41;
	&#123;
		if &#40;ignoreUndefinedProps && optionsObj&#91;optionName&#93; == undefined&#41;
			continue;
		obj&#91;optionName&#93; = optionsObj&#91;optionName&#93;;
	&#125;
&#125;;


Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel = function&#40;node, nodeName&#41;
&#123;
	var elements  = node.getElementsByTagName&#40;nodeName&#41;;
	if &#40;elements&#41; &#123;
		return elements&#91;0&#93;;
	&#125;
	return null;
&#125;;

Spry.Widget.Utils.getFirstParentWithNodeName = function&#40;node, nodeName&#41;
&#123;
	while &#40;node.parentNode
			&& node.parentNode.nodeName.toLowerCase&#40;&#41; != nodeName.toLowerCase&#40;&#41;
			&& node.parentNode.nodeName != 'BODY'&#41; &#123;
		node = node.parentNode;
	&#125;

	if &#40;node.parentNode && node.parentNode.nodeName.toLowerCase&#40;&#41; == nodeName.toLowerCase&#40;&#41;&#41; &#123;
		return node.parentNode;
	&#125; else &#123;
		return null;
	&#125;
&#125;;

Spry.Widget.Utils.destroyWidgets = function &#40;container&#41;
&#123;
	if &#40;typeof container == 'string'&#41; &#123;
		container = document.getElementById&#40;container&#41;;
	&#125;

	var q = Spry.Widget.Form.onSubmitWidgetQueue;
	for &#40;var i = 0; i < Spry.Widget.Form.onSubmitWidgetQueue.length; i++&#41; &#123;
		if &#40;typeof&#40;q&#91;i&#93;.destroy&#41; == 'function' && Spry.Widget.Utils.contains&#40;container, q&#91;i&#93;.element&#41;&#41; &#123;
			q&#91;i&#93;.destroy&#40;&#41;;
			i--;
		&#125;
	&#125;
&#125;;

Spry.Widget.Utils.contains = function &#40;who, what&#41;
&#123;
	if &#40;typeof who.contains == 'object'&#41; &#123;
		return what && who && &#40;who == what || who.contains&#40;what&#41;&#41;;
	&#125; else &#123;
		var el = what;
		while&#40;el&#41; &#123;
			if &#40;el == who&#41; &#123;
				return true;
			&#125;
			el = el.parentNode;
		&#125;
		return false;
	&#125;
&#125;;

Spry.Widget.Utils.addEventListener = function&#40;element, eventType, handler, capture&#41;
&#123;
	try
	&#123;
		if &#40;element.addEventListener&#41;
			element.addEventListener&#40;eventType, handler, capture&#41;;
		else if &#40;element.attachEvent&#41;
			element.attachEvent&#40;"on" + eventType, handler, capture&#41;;
	&#125;
	catch &#40;e&#41; &#123;&#125;
&#125;;

Spry.Widget.Utils.removeEventListener = function&#40;element, eventType, handler, capture&#41;
&#123;
	try
	&#123;
		if &#40;element.removeEventListener&#41;
			element.removeEventListener&#40;eventType, handler, capture&#41;;
		else if &#40;element.detachEvent&#41;
			element.detachEvent&#40;"on" + eventType, handler, capture&#41;;
	&#125;
	catch &#40;e&#41; &#123;&#125;
&#125;;

&#125;&#41;&#40;&#41;; // EndSpryComponent
c) css

Κώδικας: Επιλογή όλων

@charset "UTF-8";

/* SpryValidationSelect.css - version 0.4 - Spry Pre-Release 1.6.1 */

/* Copyright &#40;c&#41; 2006. Adobe Systems Incorporated. All rights reserved. */

/* These are the classes applied on the messages
 * &#40;required message and invalid state message&#41;
 * which prevent them from being displayed by default.
 */ 
.selectRequiredMsg, .selectInvalidMsg &#123;
	display&#58; none;
&#125;

/* These selectors change the way messages look when the widget is in one of the error states &#40;required, invalid&#41;.
 * These classes set a default red border and color for the error text.
 * The state class &#40;.selectRequiredState or .selectInvalidState&#41; is applied on the top-level container for the widget,
 * and this way only the specific error message can be shown by setting the display property to "inline".
 */
.selectRequiredState .selectRequiredMsg,
.selectInvalidState .selectInvalidMsg &#123;
	display&#58; inline;
	color&#58; #CC3333;
	border&#58; 1px solid #CC3333;
&#125;

/* The next three group selectors control the way the core element &#40;SELECT&#41; looks like when the widget is in one of the states&#58; 
 * focus, required / invalid, valid 
 * There are two selectors for each state, to cover the two main usecases for the widget&#58;
 * - the widget id is placed on the top level container for the SELECT
 * - the widget id is placed on the SELECT element itself &#40;there are no error messages&#41;
 */
 
/* When the widget is in the valid state the SELECT has a green background applied on it. */
.selectValidState select, select.selectValidState &#123;
	background-color&#58; #B8F5B1;
&#125;

/* When the widget is in an invalid state the SELECT has a red background applied on it. */
select.selectRequiredState, .selectRequiredState select,
select.selectInvalidState, .selectInvalidState select &#123;
	background-color&#58; #FF9F9F;
&#125;

/* When the widget has received focus, the SELECT has a yellow background applied on it. */
.selectFocusState select, select.selectFocusState &#123;
	background-color&#58; #FFFFCC;
&#125;

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

header bar για 3-4 sites

Δημοσίευση από geomagas » 28 Μαρ 2014 14:36

Καλά δεν πιστεύω να περιμένεις να διαβάσει κανείς αυτό το listing... :P

α) Δεν μπορείς να βάλεις link σε select. Μπορείς όμως με javascript να αλλάξεις το window.location κατά το select event.
β) Προφανώς θα πρέπει να παρέχεις κάποιο css για αυτό το element....

Σημείωσε ότι, το παράδειγμα που παράθεσες με το rockettheme είναι κι αυτό iframe!

sinikos
Δημοσιεύσεις: 40
Εγγραφή: 21 Μαρ 2013 03:41

header bar για 3-4 sites

Δημοσίευση από sinikos » 29 Μαρ 2014 03:04

geomagas έγραψε:Καλά δεν πιστεύω να περιμένεις να διαβάσει κανείς αυτό το listing... :P

α) Δεν μπορείς να βάλεις link σε select. Μπορείς όμως με javascript να αλλάξεις το window.location κατά το select event.
Τι εννοεις δεν γινεται? το έχω δει πολλές φορες. Θα προσπαθήσω να σου βρω παραδειγμα τι εννοω

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

header bar για 3-4 sites

Δημοσίευση από geomagas » 02 Απρ 2014 16:27

Βρήκες παράδειγμα τελικά;

AlexFreestuff
Δημοσιεύσεις: 31
Εγγραφή: 04 Μάιος 2009 06:57

header bar για 3-4 sites

Δημοσίευση από AlexFreestuff » 05 Μάιος 2014 18:48

Αν κατάλαβα καλά θέλεις μια σελίδα εισαγωγής.... που γίνετε δε html με δικό της css.
να έχει τρεις συνδέσμους για τρεις διαφορετικές ιστοσελίδες. δεν έχει σημασία που είναι αποθηκευμένες.
κάθε ιστοσελίδα θα έχει τον δικό της css και καλό είναι σε όλες να προνοήσεις ένα λινκ που να σε βγάζει στην σελίδα εισαγωγής..
αν δεν θέλεις διαλογικότητα και δυναμικές σελίδες γιατί να μπλέξεις με php αφού html with css κάνουν πολύ εύκολη δουλειά... και αν πάλι οι σελίδες σου με αυτόν τον τεράστιο κώδικα είναι σε php πάλη ακολουθείς τα παραπάνω βήματα για ευκολία αν έχω καταλάβει .
τώρα αν θέλεις εσύ να κάνεις το παράλογο να είσαι σε τρεις ιστοσελίδες σύγχρονος πρέπει να κοιτάξεις εντολή Html πλαίσια frames <frameset></frameset>
βιβλίο προγραμματιστικά εργαλεία για το διαδίκτυο
τεχνικά επαγγελματικά εκπαιδευτήρια
τομέας πληροφορικής και δικτύων H/Y
2ος κύκλος σελ 169
η πολύ απλά στο google καλή συνέχεια ελπίζω να βοήθησα

sinikos
Δημοσιεύσεις: 40
Εγγραφή: 21 Μαρ 2013 03:41

header bar για 3-4 sites

Δημοσίευση από sinikos » 28 Ιούλ 2014 21:15

Παιδια, ειχα καιρο να μπω γιατι ειχα κατι τρεξιματα. Με το dropdown να ανοιγει λινκ ηθελα αυτο ακριβως.

<form> <p align="center"><b>Select a Site </b>
<select id="setit" style="color: #0000FF" size="1" name="test" onchange="window.location=setit.options[setit.selectedIndex].value;">
<option value="">Select one</option>
<option value="http://www.altavista.com">AltaVista</option>
<option value="http://www.yahoo.com">Yahoo</option>
<option value="http://www.google.com">Google</option></select>
<onclick="window.open(setit.options[setit.selectedIndex].value)"> </p></form>

sinikos
Δημοσιεύσεις: 40
Εγγραφή: 21 Μαρ 2013 03:41

header bar για 3-4 sites

Δημοσίευση από sinikos » 28 Ιούλ 2014 21:17

geomagas έγραψε:
α) Δεν μπορείς να βάλεις link σε select. Μπορείς όμως με javascript να αλλάξεις το window.location κατά το select event.
Στο παραπανω κωδικα που εβαλα, μαλλον αυτο εχει γινει ε? αυτο το παραδειγμα εψαχνα :lol:

Αρα ειχες δικιο

Απάντηση

Επιστροφή στο “Γενικές ερωτήσεις κατασκευής ιστοσελίδων”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες