mirror of https://github.com/sipwise/jitsi.git
parent
c32fd5b8ba
commit
9cfcf0e2d9
@ -1,74 +1,86 @@
|
||||
<link rel='SHORTCUT ICON' href='http://sip-communicator.dev.java.net/sc_logo16x16.png' />
|
||||
<link rel='icon' href='http://sip-communicator.dev.java.net/sc_logo16x16.png' type='image/png' />
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
<script id="eraser">
|
||||
|
||||
// if the Get Involved block was named I could just get the
|
||||
// the two sections by name and set the display to none.
|
||||
|
||||
// get to the block
|
||||
var dd = document.getElementById("eraser").previousSibling;
|
||||
|
||||
// hide all default navigation bars
|
||||
|
||||
// within the previous blocks hide everything
|
||||
for( n=dd; n!=null; n=n.previousSibling ) {
|
||||
if(n.nodeType==1) { // if element
|
||||
if(n.tagName=="DL") { // kill all the link items
|
||||
n.style.display = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This is all you can do because the "Search" and "How do I"
|
||||
// boxes aren't created
|
||||
</script>
|
||||
|
||||
<dl id="tools" class="navgroup">
|
||||
<dt>Project Tools</dt>
|
||||
<dd>
|
||||
<!-- hide the contents while the theme engine kicks in and does the work -->
|
||||
<script>document.getElementById("main").parentNode.style.display="none";</script>
|
||||
<!--
|
||||
This is where your menu starts. id='menubar' is mandatory.
|
||||
Notice that there's no closing tag for this <dd>, and there's extra </dd> at the
|
||||
top of the file. This is how it should be, due to the place where this gets injected.
|
||||
-->
|
||||
<dd id=menubar>
|
||||
<!--
|
||||
DD contains single UL which generates the whole menu. UL/LI can have a nested structure
|
||||
to create submenus.
|
||||
-->
|
||||
<ul>
|
||||
<li><a href="http://www.sip-communicator.org">sip-communicator.org</a></li>
|
||||
<li><a href="http://www.sip-communicator.org/index.php/Development/TeamAndContributors">Team and Contributors</a></li>
|
||||
<li>
|
||||
<!--
|
||||
This HTML is injected in all the pages within your project, so all the hyperlinks
|
||||
must be either absolute or start with '/'.
|
||||
|
||||
The current page in the navigation bar is shown highlighted to let users know where
|
||||
he/she is. This is primarily done by the exact match between "window.location.href"
|
||||
and the link target, but the A tag can also have the optional "match" attribute,
|
||||
whose value is regular expression that indicates what pages the link should highlight.
|
||||
|
||||
For example, the following match attribute says "overview" should be the current
|
||||
page even if you are in sub.html. This is useful for grouping a large number of pages
|
||||
under a single navigation item.
|
||||
-->
|
||||
<a href="http://www.sip-communicator.org/index.php/Development/TeamAndContributors">Team and Contributors</a>
|
||||
<li>
|
||||
<a href="https://sip-communicator.dev.java.net/servlets/ProjectMembershipRequest">Become a member</a>
|
||||
<li>
|
||||
<a href="https://sip-communicator.dev.java.net/source/browse/sip-communicator/">Version Control - CVS</a>
|
||||
<li>
|
||||
<a href="http://www.sip-communicator.org/index.php/Development/MailingLists">Mailing lists</a>
|
||||
<li>
|
||||
<a href="http://www.sip-communicator.org/index.php/Main/Download">Downloads</a>
|
||||
<li>
|
||||
<li><a href="#">Bugs and Issues</a>
|
||||
<ul>
|
||||
<li><a href="https://sip-communicator.dev.java.net/servlets/ProjectIssues">Issue tracker</a>
|
||||
<li><a href="https://sip-communicator.dev.java.net/issues/buglist.cgi?component=sip-communicator&issue_status=UNCONFIRMED&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED">All Issues</a>
|
||||
<li><form name="ProjectIssuesForm" method="get" action="https://sip-communicator.dev.java.net/issues/show_bug.cgi">
|
||||
<input type="submit" value="Go to Issue # "/>   <input name="id" size="3" />
|
||||
</form>
|
||||
<!--
|
||||
When the parent LI of a submenu has a link, its children only expands when
|
||||
the user is inside this menu.
|
||||
-->
|
||||
</ul>
|
||||
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
<dd>
|
||||
<ul>
|
||||
<li> <a href="https://sip-communicator.dev.java.net/source/browse/sip-communicator/">Version Control - CVS</a></li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
<dd>
|
||||
<ul>
|
||||
<li> <a href="http://www.sip-communicator.org/index.php/Development/MailingLists">Mailing lists</a></li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
<dd>
|
||||
<ul>
|
||||
<li> <a href="http://www.sip-communicator.org/index.php/Main/Download">Downloads</a></li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
<dd>
|
||||
<ul>
|
||||
<li><a href="https://sip-communicator.dev.java.net/servlets/ProjectIssues">Issue tracker</a>
|
||||
</li>
|
||||
<li><a href="https://sip-communicator.dev.java.net/issues/buglist.cgi?component=sip-communicator&issue_status=UNCONFIRMED&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED">All Issues</a></li>
|
||||
<li><form name="ProjectIssuesForm" method="get" action="https://sip-communicator.dev.java.net/issues/show_bug.cgi">
|
||||
<input type="submit" value="Go to Issue # "/>   <input name="id" size="3" />
|
||||
</form></li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
|
||||
<!--
|
||||
Theis script determines the logo on the top-left corner of the page.
|
||||
The title is mandatory, but the logo is optional.
|
||||
-->
|
||||
<script>
|
||||
var info = {
|
||||
title: "SIP Communicator",
|
||||
logo: ""
|
||||
}
|
||||
</script>
|
||||
<!--
|
||||
This script includes the zone definition, which determines the
|
||||
list of the "siblings" projects you see in the left navigation bar.
|
||||
Your project should be listed among one of them.
|
||||
|
||||
This example uses the ws/xml zone, but pick up the right zone that matches your project.
|
||||
-->
|
||||
<script src="https://sc-plugin-tests.dev.java.net/zone-core.js"></script>
|
||||
<!--
|
||||
This includes the theme engine script.
|
||||
-->
|
||||
<script src="https://sc-plugin-tests.dev.java.net/theme.js"></script>
|
||||
|
||||
<!--
|
||||
If your project uses a site traffic tracker like Google Analytics, this is a good place
|
||||
to inject it.
|
||||
-->
|
||||
<!--
|
||||
<script src="https://ssl.google-analytics.com/urchin.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
_uacct = "UA-319188-2";
|
||||
urchinTracker();
|
||||
_uacct = "UA-1273798-1";
|
||||
urchinTracker();
|
||||
</script>
|
||||
-->
|
||||
|
||||
@ -0,0 +1,430 @@
|
||||
function makeProjectLink(name) {
|
||||
return { title: name, href: "https://"+name.toLowerCase()+".dev.java.net/" };
|
||||
}
|
||||
|
||||
var regions = [
|
||||
{
|
||||
title: "Main",
|
||||
href: "http://sip-communicator.org",
|
||||
match: [
|
||||
],
|
||||
children: [
|
||||
{ title: "Home", href: "http://sip-communicator.org" },
|
||||
{ title: "News", href: "http://www.sip-communicator.org/index.php/Main/News" },
|
||||
{ title: "Screenshots", href: "http://www.sip-communicator.org/index.php/Main/Screenshots" },
|
||||
{ title: "Download", href: "http://www.sip-communicator.org/index.php/Main/Download" },
|
||||
{ title: "About", href: "http://www.sip-communicator.org/index.php/Main/About" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Development",
|
||||
href: "",
|
||||
match: [
|
||||
],
|
||||
children: [
|
||||
{ title: "Mailing Lists", href: "http://www.sip-communicator.org/index.php/Development/MailingLists" },
|
||||
{ title: "CVS", href: "http://www.sip-communicator.org/index.php/Development/VersionControl" },
|
||||
{ title: "Bugs and Issues", href: "http://www.sip-communicator.org/index.php/Development/BugsAndIssues" },
|
||||
{ title: "Roadmap", href: "http://www.sip-communicator.org/index.php/Development/Roadmap" },
|
||||
{ title: "Contributing", href: "http://www.sip-communicator.org/index.php/Development/GetInvolved" },
|
||||
{ title: "Team", href: "http://www.sip-communicator.org/index.php/Development/TeamAndContributors" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Documentation",
|
||||
href: "",
|
||||
match: [
|
||||
],
|
||||
children: [
|
||||
{ title: "Users", href: "http://www.sip-communicator.org/index.php/Documentation/UserDocumentation" },
|
||||
{ title: "Developers", href: "http://www.sip-communicator.org/index.php/Documentation/DeveloperDocumentation" },
|
||||
{ title: "FAQ", href: "http://www.sip-communicator.org/index.php/Documentation/FAQ" }
|
||||
]
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
// default values of <a href='...' match='...'> to simplify project_tools.html
|
||||
var defaultMatchPatterns = {
|
||||
"/servlets/ProjectNewsList": "/servlets/(ProjectNewsList|NewsItemView).*",
|
||||
"/servlets/ProjectMemberList": "/servlets/Project(MemberList|MemberAdd|Invite).*",
|
||||
"/servlets/ProjectMailingListList": "/servlets/(ProjectMailingList|Summarize|Search)List.*",
|
||||
"/servlets/ProjectIssues": "/issues/.*",
|
||||
"/issues/": "/issues/.*"
|
||||
};
|
||||
|
||||
|
||||
|
||||
function addLoadEvent(func) {
|
||||
var oldonload = window.onload;
|
||||
if (typeof window.onload != 'function') {
|
||||
window.onload = func;
|
||||
} else {
|
||||
window.onload = function() {
|
||||
if (oldonload) oldonload();
|
||||
func();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function createRegions() {
|
||||
var rdiv = document.getElementById("regions"); // On Wiki 'regions' div already exists.
|
||||
|
||||
var html=[];
|
||||
if(rdiv==null)
|
||||
html.push("<div align=right><ul id=regions>");
|
||||
|
||||
for( var i=regions.length-1; i>=0; i-- ) {
|
||||
var r = regions[i];
|
||||
|
||||
// is this the current region?
|
||||
var hit = false;
|
||||
for( var j=0; j<r.match.length; j++ ) {
|
||||
if(new String(window.location.href).match(new RegExp(r.match[j]))) {
|
||||
hit = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(r.children) {
|
||||
for( var j=0; j<r.children.length; j++ ) {
|
||||
if(new String(window.location.href).indexOf(r.children[j].href)==0) {
|
||||
hit = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(hit)
|
||||
html.push("<li id=current-region><a href=");
|
||||
else
|
||||
html.push("<li><a href=");
|
||||
html.push(r.href);
|
||||
html.push(">");
|
||||
html.push(r.title);
|
||||
html.push("</a>");
|
||||
if(r.children!=null && !document.all) {
|
||||
html.push("<ul>");
|
||||
for( var j=0; j<r.children.length; j++ ) {
|
||||
var c = r.children[j];
|
||||
html.push("<li><a href=");
|
||||
html.push(c.href);
|
||||
html.push(">");
|
||||
html.push(c.title);
|
||||
html.push("</a></li>");
|
||||
}
|
||||
html.push("</ul>");
|
||||
}
|
||||
html.push("</li>");
|
||||
}
|
||||
html.push("<li id=regions-leadin><a> </a></li>");
|
||||
if(rdiv==null)
|
||||
html.push("</ul></div>");
|
||||
|
||||
// inject HTML
|
||||
if(rdiv==null) {
|
||||
var box = document.createElement("div");
|
||||
box.id = "regions-box";
|
||||
var banner = document.getElementById("banner");
|
||||
banner.insertBefore(box,banner.firstChild);
|
||||
box.innerHTML = html.join('');
|
||||
} else {
|
||||
rdiv.innerHTML = html.join('');
|
||||
}
|
||||
|
||||
// attach event handler, since IE can't handle :hover
|
||||
/* this still doesn't seem to work with IE7...
|
||||
if (document.all) {
|
||||
var ul = document.getElementById("regions");
|
||||
for (i=0; i<ul.childNodes.length; i++) {
|
||||
var node = ul.childNodes[i];
|
||||
if (node.nodeName=="LI") {
|
||||
node.onmouseover=function() {
|
||||
this.className+=" over";
|
||||
}
|
||||
node.onmouseout=function() {
|
||||
this.className=this.className.replace(" over", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
// apply theme to Wiki
|
||||
function wikiInit() {
|
||||
createRegions();
|
||||
}
|
||||
|
||||
// apply theme to java.net
|
||||
function djnInit() {
|
||||
createRegions();
|
||||
|
||||
// this is the parent group that should show up in the title bar
|
||||
var foundGroup = null;
|
||||
|
||||
// create zones
|
||||
(function() {
|
||||
// find which zone we are in
|
||||
var alreadyFound = false;
|
||||
function findMatch(zones,group) {
|
||||
var found = false;
|
||||
for( var i=0; i<zones.length; i++ ) {
|
||||
(function (z,group) {
|
||||
var match=false;
|
||||
|
||||
// look for a match in the children first
|
||||
if(z.zones!=null)
|
||||
match |= findMatch(z.zones, z.group?z:group );
|
||||
|
||||
// otherwise try to match with the parent
|
||||
if(!alreadyFound) {
|
||||
var matchFunction = z.match;
|
||||
if(matchFunction==null)
|
||||
matchFunction = function() { return window.location.href.indexOf(z.href)==0; }
|
||||
if(matchFunction()) {
|
||||
z.current = true;
|
||||
alreadyFound = true;
|
||||
foundGroup = group;
|
||||
match = true;
|
||||
}
|
||||
}
|
||||
|
||||
z.expanded = match;
|
||||
found |= match;
|
||||
})(zones[i],group);
|
||||
}
|
||||
return found;
|
||||
}
|
||||
findMatch(zones,null);
|
||||
|
||||
// create fragment to inject
|
||||
var html = [];
|
||||
var foundCurrent = false;
|
||||
var currentDepth;
|
||||
function createZones(zones,depth) {
|
||||
for( var i=0; i<zones.length; i++ ) {
|
||||
if(zones[i].current) {
|
||||
html.push("<dt id=current-zone class='");
|
||||
foundCurrent = true;
|
||||
currentDepth = depth;
|
||||
} else
|
||||
if(!foundCurrent)
|
||||
html.push("<dt class='before-current ");
|
||||
else
|
||||
html.push("<dt class='after-current ");
|
||||
html.push("depth"+depth);
|
||||
html.push("'><a href='");
|
||||
html.push(zones[i].href);
|
||||
html.push("'>");
|
||||
html.push(zones[i].title);
|
||||
html.push("</a></dt>");
|
||||
if(zones[i].zones!=null && zones[i].expanded)
|
||||
createZones(zones[i].zones,depth+1);
|
||||
}
|
||||
}
|
||||
createZones(zones,0);
|
||||
|
||||
// detach the menubar so that it will remain intact when we overwrite project tools
|
||||
var menubar = document.getElementById("menubar");
|
||||
if(menubar==null) return; // huh?
|
||||
menubar.className="depth"+currentDepth;
|
||||
menubar.parentNode.removeChild(menubar);
|
||||
|
||||
// insert the zone list into the navigation bar
|
||||
var projecttools = document.getElementById("projecttools");
|
||||
projecttools.innerHTML = html.join('');
|
||||
|
||||
// insert the menubar
|
||||
var curZone = document.getElementById("current-zone");
|
||||
if(curZone!=null)
|
||||
projecttools.insertBefore(menubar, curZone.nextSibling);
|
||||
else
|
||||
projecttools.appendChild(menubar); // TODO: will come back to this later
|
||||
|
||||
// kill all the boxes in front of the projecttools
|
||||
while(projecttools.previousSibling!=null) {
|
||||
projecttools.parentNode.removeChild(projecttools.previousSibling);
|
||||
}
|
||||
})();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// update menubar by using the current location
|
||||
(function() {
|
||||
// adds a CSS class to the element
|
||||
function addClass(e,clazz) {
|
||||
if(e.className!=null)
|
||||
e.className += ' '+clazz;
|
||||
else
|
||||
e.className = clazz;
|
||||
}
|
||||
|
||||
// check if element has a CSS class
|
||||
function hasClass(e,clazz) {
|
||||
if(e.className==null)
|
||||
return false;
|
||||
|
||||
var list = e.className.split(/\s+/);
|
||||
for( var i=0; i<list.length; i++ ) {
|
||||
if(list[i]==clazz) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// remove a CSS class
|
||||
function removeClass(e,clazz) {
|
||||
if(e.className==null)
|
||||
return false;
|
||||
|
||||
var list = e.className.split(/\s+/);
|
||||
var r = [];
|
||||
for( var i=0; i<list.length; i++ ) {
|
||||
if(list[i]!=clazz) r.push(list[i]);
|
||||
}
|
||||
e.className = r.join(' ');
|
||||
}
|
||||
|
||||
var menubar = document.getElementById("menubar");
|
||||
if(menubar==null) return; // huh?
|
||||
|
||||
// LIs that have child ULs is 'parent'
|
||||
var items = menubar.getElementsByTagName("UL");
|
||||
for (var i=0; i<items.length; i++ ) {
|
||||
var ul = items[i];
|
||||
addClass(ul.parentNode,"parent");
|
||||
}
|
||||
|
||||
// LIs/ULs that are in the path of current page is 'active'
|
||||
var loc = window.location.href;
|
||||
function matches(a) {
|
||||
if(a.href==loc) return true; // location match
|
||||
var m = a.getAttribute("match");
|
||||
if(m==null)
|
||||
m = defaultMatchPatterns[a.getAttribute("href")];
|
||||
|
||||
return m!=null && loc.match(new RegExp(m));
|
||||
}
|
||||
var items = menubar.getElementsByTagName("a");
|
||||
for( var i=0; i<items.length; i++ ) {
|
||||
var a = items[i];
|
||||
if(matches(a)) {
|
||||
// found match. mark ancestor nodes as active
|
||||
var e = a.parentNode;
|
||||
while(e!=menubar) {
|
||||
addClass(e,"active");
|
||||
e=e.parentNode;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// install expand/collapse handler for targetless intermediate A tags
|
||||
var items = menubar.getElementsByTagName("a");
|
||||
for( var i=0; i<items.length; i++ ) {
|
||||
var a = items[i];
|
||||
var href = a.getAttribute("href"); // IE returns fully absolutized href, so check for things that end with '#'
|
||||
if(href!=null && href!="" && href.charAt(href.length-1)=='#') {// be defensive
|
||||
a.onclick = function() {
|
||||
var li = this.parentNode;
|
||||
if(hasClass(li,"expanded")) {
|
||||
removeClass(li,"expanded");
|
||||
} else {
|
||||
addClass(li,"expanded");
|
||||
}
|
||||
return false;
|
||||
};
|
||||
addClass(this.parent,"collapsed");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// all non-'active' LIs are 'inactive'
|
||||
// all non-'parent' LIs are 'leaf'
|
||||
var items = menubar.getElementsByTagName("LI");
|
||||
for( var i=0; i<items.length; i++ ) {
|
||||
var li = items[i];
|
||||
if(!hasClass(li,"active"))
|
||||
addClass(li,"inactive");
|
||||
if(!hasClass(li,"parent"))
|
||||
addClass(li,"leaf");
|
||||
}
|
||||
})();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// update the top-left corner of the page from the current project information
|
||||
(function() {
|
||||
var box = document.createElement("div");
|
||||
box.id = "logo-box";
|
||||
|
||||
var html = [];
|
||||
var hadToken = false;
|
||||
|
||||
function addLogo() {
|
||||
if(info.logo!=null && info.logo!="") {
|
||||
html.push("<a href=/><img src="+info.logo+"></a>");
|
||||
}
|
||||
}
|
||||
|
||||
if(info.noGF) {
|
||||
addLogo();
|
||||
}
|
||||
|
||||
function append(url,title) {
|
||||
if(title==null) return;
|
||||
if(hadToken) html.push(" » ");
|
||||
hadToken=true;
|
||||
html.push("<a href="+url+">");
|
||||
html.push(title);
|
||||
html.push("</a>");
|
||||
}
|
||||
|
||||
if(foundGroup!=null)
|
||||
append(foundGroup.href, foundGroup.title);
|
||||
append("/", info.title);
|
||||
|
||||
if(!info.noGF)
|
||||
addLogo();
|
||||
|
||||
box.innerHTML = html.join('');
|
||||
|
||||
// insert after the login bar
|
||||
var bar = document.getElementById("regions-box");
|
||||
bar.parentNode.appendChild(box);
|
||||
})();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// put the "hosted on java.net link"
|
||||
(function() {
|
||||
var box = document.createElement("div");
|
||||
var pt = document.getElementById("projecttools");
|
||||
if(pt==null) return; // huh?
|
||||
pt.parentNode.insertBefore(box,pt.nextSibling);
|
||||
|
||||
box.id = "hosted-on-javanet";
|
||||
box.innerHTML = "A <a href='https://www.java.net/'>java.net</a> project";
|
||||
})();
|
||||
|
||||
// re-display everything
|
||||
document.body.style.display="block";
|
||||
document.getElementById("banner").style.display="block";
|
||||
}
|
||||
|
||||
if(window.location.href.indexOf("http://localhost:8080/")!=-1
|
||||
|| window.location.href.indexOf("http://wiki.glassfish.java.net/")!=-1)
|
||||
addLoadEvent(wikiInit);
|
||||
else {
|
||||
// add referene to theme.css
|
||||
document.write('<link rel="stylesheet" type="text/css" href="https://glassfish-theme.dev.java.net/theme.css"/>');
|
||||
addLoadEvent(djnInit);
|
||||
}
|
||||
|
||||
// add the open search link.
|
||||
document.write('<link rel="search" type="application/opensearchdescription+xml" href="https://glassfish.dev.java.net/coolstuff/javanet/it.xml" title="Java.net issue tracker"/>');
|
||||
@ -0,0 +1,6 @@
|
||||
var zones = [
|
||||
{
|
||||
title: "sip-communicator.org",
|
||||
href: "https://sip-communicator.org/"
|
||||
}
|
||||
];
|
||||
Loading…
Reference in new issue