From 02afd8a32edb13ea7fc2266ac80092ea15c0930c Mon Sep 17 00:00:00 2001 From: Alvin Li Date: Wed, 9 Oct 2013 15:52:53 +0800 Subject: * treat 'apps/utils' as regular django app; which used to store general tools for used in other apps * moved 'templatetags' from 'apps/indicator' to 'apps/utils' * '.gitignore' to ignore 'fixtures_bak' * moved js plugins from 'apps/indicator/static/plugins' to 'staticfiles/plugins' apps/recommend: * updated 'recommend.models'; o commented 'recommend.models.ResearchCombination' (not used) * implemented views 'add_edit_blog_info' and 'ajax_add_edit_configs'; * added pages 'templates/recommend/add_edit_blog_info.html', 'add_edit_blog_info_error.html'; o related css and javascripts files * added 'tools.py'; * added 'utils/tools.py' for placing generic functions; * deleted 'initial_data.json' (mv 'fixtures' to 'fixtures_bak'); * small fixes to 'indicator.models', 'sciblog.models' and 'sfaccount.views' * fixed automatically show 'proper_nouns' annotation in blog: recovered the line 'import signals' in 'sciblog.models' * added 'is_ok()' method for 'recommend.models.ResearchConfig'; --- 97suifangqa/staticfiles/plugins/thickbox/README | 20 ++ .../staticfiles/plugins/thickbox/VERSION_2.0 | 0 .../plugins/thickbox/images/loadingAnimation.gif | Bin 0 -> 7347 bytes .../plugins/thickbox/images/loadingAnimation2.gif | Bin 0 -> 5886 bytes .../plugins/thickbox/images/macFFBgHack.png | Bin 0 -> 207 bytes .../staticfiles/plugins/thickbox/thickbox.css | 135 +++++++++ .../staticfiles/plugins/thickbox/thickbox.js | 321 +++++++++++++++++++++ 7 files changed, 476 insertions(+) create mode 100644 97suifangqa/staticfiles/plugins/thickbox/README create mode 100644 97suifangqa/staticfiles/plugins/thickbox/VERSION_2.0 create mode 100644 97suifangqa/staticfiles/plugins/thickbox/images/loadingAnimation.gif create mode 100644 97suifangqa/staticfiles/plugins/thickbox/images/loadingAnimation2.gif create mode 100644 97suifangqa/staticfiles/plugins/thickbox/images/macFFBgHack.png create mode 100644 97suifangqa/staticfiles/plugins/thickbox/thickbox.css create mode 100644 97suifangqa/staticfiles/plugins/thickbox/thickbox.js (limited to '97suifangqa/staticfiles/plugins/thickbox') diff --git a/97suifangqa/staticfiles/plugins/thickbox/README b/97suifangqa/staticfiles/plugins/thickbox/README new file mode 100644 index 0000000..b829acb --- /dev/null +++ b/97suifangqa/staticfiles/plugins/thickbox/README @@ -0,0 +1,20 @@ +Before you can implement ThickBox make sure the page that invokes ThickBox has a valid DTD. This is required for ThickBox to look and function correctly. + +1. ThickBox requires the jQuery JavaScript library; because of this, you will need to include the jquery.js file in the head element of your web page, followed by the thickbox.js file (NOTE: jquery.js must come first in the source order). Example below: + + + + +Once you have included the .js files, open thickbox.js or thickbox-compressed.js and locate the tb_pathToImage variable at the top of the page. Once you have found it, make sure to change the value of tb_pathToImage to the path where the loadingAnimation.gif file is located on your own server. + +2. Include the ThickBox CSS file in your web page. As of version 3.1 you will also need to update the path to the macFFBgHack.png in the thickbox.css file. Example options below: + + + +Or + + + +Or, open the thickbox.css file and copy and paste the styles into an existing style sheet. Be aware that the ThickBox CSS file will remove the browsers default padding and margin for all elements. + +3. View the examples to learn the many different ways to use and invoke ThickBox functionality. \ No newline at end of file diff --git a/97suifangqa/staticfiles/plugins/thickbox/VERSION_2.0 b/97suifangqa/staticfiles/plugins/thickbox/VERSION_2.0 new file mode 100644 index 0000000..e69de29 diff --git a/97suifangqa/staticfiles/plugins/thickbox/images/loadingAnimation.gif b/97suifangqa/staticfiles/plugins/thickbox/images/loadingAnimation.gif new file mode 100644 index 0000000..92c5c30 Binary files /dev/null and b/97suifangqa/staticfiles/plugins/thickbox/images/loadingAnimation.gif differ diff --git a/97suifangqa/staticfiles/plugins/thickbox/images/loadingAnimation2.gif b/97suifangqa/staticfiles/plugins/thickbox/images/loadingAnimation2.gif new file mode 100644 index 0000000..82290f4 Binary files /dev/null and b/97suifangqa/staticfiles/plugins/thickbox/images/loadingAnimation2.gif differ diff --git a/97suifangqa/staticfiles/plugins/thickbox/images/macFFBgHack.png b/97suifangqa/staticfiles/plugins/thickbox/images/macFFBgHack.png new file mode 100644 index 0000000..c6473b3 Binary files /dev/null and b/97suifangqa/staticfiles/plugins/thickbox/images/macFFBgHack.png differ diff --git a/97suifangqa/staticfiles/plugins/thickbox/thickbox.css b/97suifangqa/staticfiles/plugins/thickbox/thickbox.css new file mode 100644 index 0000000..9cf9577 --- /dev/null +++ b/97suifangqa/staticfiles/plugins/thickbox/thickbox.css @@ -0,0 +1,135 @@ +/* ----------------------------------------------------------------------------------------------------------------*/ +/* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/ +/* ----------------------------------------------------------------------------------------------------------------*/ +*{padding: 0; margin: 0;} + +html, body { +min-height: 100%; +height: auto !important; +height: 100%; +} + +/* ----------------------------------------------------------------------------------------------------------------*/ +/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/ +/* ----------------------------------------------------------------------------------------------------------------*/ +#TB_window { + font: 12px Arial, Helvetica, sans-serif; + color: #333333; +} + +#TB_secondLine { + font: 10px Arial, Helvetica, sans-serif; + color:#666666; +} + +#TB_window a:link {color: #666666;} +#TB_window a:visited {color: #666666;} +#TB_window a:hover {color: #000;} +#TB_window a:active {color: #666666;} +#TB_window a:focus{color: #666666;} + +/* ----------------------------------------------------------------------------------------------------------------*/ +/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/ +/* ----------------------------------------------------------------------------------------------------------------*/ +#TB_overlay { + position: absolute; + z-index:100; + width: 100%; + height: 100%; + top: 0; + left: 0; + min-height:100%; + background-color:#000; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +#TB_window { + position: absolute; + /*background: #ffffff;*/ + z-index: 102; + color:#000000; + display:none; + /*border: 4px solid #525252;*/ + text-align:left; +} + +#TB_window img { + display:block; + margin: 15px 0 0 15px; + border-right: 1px solid #ccc; + border-bottom: 1px solid #ccc; + border-top: 1px solid #666; + border-left: 1px solid #666; +} + +#TB_caption{ + height:25px; + padding:7px 30px 10px 25px; + float:left; +} + +#TB_closeWindow{ + height:25px; + padding:11px 25px 10px 0; + float:right; +} + +#TB_closeAjaxWindow{ + padding:5px 10px 7px 0; + margin-bottom:1px; + text-align:right; + float:right; +} + +#TB_ajaxWindowTitle{ + float:left; + padding:7px 0 5px 10px; + margin-bottom:1px; +} + +#TB_title{ + background-color:#e8e8e8; + height:27px; +} + +#TB_ajaxContent{ + clear:both; + padding:2px 15px 15px 15px; + overflow:auto; + text-align:left; + line-height:1.4em; +} + +#TB_ajaxContent p{ + padding:5px 0px 5px 0px; +} + +#TB_load{ + position: absolute; + display:none; + height:100px; + width:100px; + z-index:101; +} + +#TB_HideSelect{ + z-index:99; + position:absolute; + top: 0; + left: 0; + width:100%; + height:100%; + background-color:#fff; + border:none; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +#TB_iframeContent{ + border:none; + clear:both; +} + diff --git a/97suifangqa/staticfiles/plugins/thickbox/thickbox.js b/97suifangqa/staticfiles/plugins/thickbox/thickbox.js new file mode 100644 index 0000000..9b6fb06 --- /dev/null +++ b/97suifangqa/staticfiles/plugins/thickbox/thickbox.js @@ -0,0 +1,321 @@ +/* + * Thickbox 2.0 - One Box To Rule Them All. + * By Cody Lindley (http://www.codylindley.com) + * Copyright (c) 2006 cody lindley + * Licensed under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * Thickbox is built on top of the very light weight jQuery library. + */ + +//on page load call TB_init +$(document).ready(function() { + // set loadingAnimation image + if (typeof parent.thickbox_loading_image !== 'undefined') { + tb_pathToImage = parent.thickbox_loading_image; + } + else if (typeof parent.static_url !== 'undefined') { + tb_pathToImage = parent.static_url + "images/loadingAnimation.gif"; + } + else { + tb_pathToImage = "images/loadingAnimation.gif"; + } + //console.log("tb_pathToImage: ", tb_pathToImage); + imgLoader = new Image();// preload image + imgLoader.src = tb_pathToImage; + // init + TB_init(); +}); + +//add thickbox to href elements that have a class of .thickbox +function TB_init(){ + //$("a.thickbox").live("click", function(){ + // '.live()' removed in jQuery 1.9 + $(document).on("click", "a.thickbox", function(){ + if(this.href == 'javascript:void(0)'){ + return false; + } + var t = this.title || this.name || null; + var g = this.rel || false; + TB_show(t, this.href, g); + this.blur(); + return false; + }); +} + +function TB_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link + try { + if (document.getElementById("TB_HideSelect") == null) { + $("body").append("
"); + $("#TB_overlay").click(TB_remove); + } + + if(caption==null){caption=""}; + + $(window).scroll(TB_position); + + TB_overlaySize(); + + $("body").append("
"); + TB_load_position(); + + var urlString = /\.jpg|\.jpeg|\.png|\.gif|\.html|\.htm|\.php|\.cfm|\.asp|\.aspx|\.jsp|\.jst|\.rb|\.txt|\.bmp/g; + var urlType = url.toLowerCase().match(urlString); + + // check 'url_type' query param + // django url does not have '.xxx' extensions + var queryString = url.replace(/^[^\?]+\??/,''); + var params = TB_parseQuery( queryString ); + //console.log("params['url_type']: ", params['url_type']); + var _undefined_; // local undefined + if (params['url_type'] !== _undefined_ && params['url_type'] !== '') { + urlType = params['url_type']; + } + //console.log('urlType: ', urlType); + + if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images + + TB_PrevCaption = ""; + TB_PrevURL = ""; + TB_PrevHTML = ""; + TB_NextCaption = ""; + TB_NextURL = ""; + TB_NextHTML = ""; + TB_imageCount = ""; + TB_FoundURL = false; + if(imageGroup){ + TB_TempArray = $("a[@rel="+imageGroup+"]").get(); + for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML == "")); TB_Counter++) { + var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString); + if (!(TB_TempArray[TB_Counter].href == url)) { + if (TB_FoundURL) { + TB_NextCaption = TB_TempArray[TB_Counter].title; + TB_NextURL = TB_TempArray[TB_Counter].href; + TB_NextHTML = "  Next >"; + } else { + TB_PrevCaption = TB_TempArray[TB_Counter].title; + TB_PrevURL = TB_TempArray[TB_Counter].href; + TB_PrevHTML = "  < Prev"; + } + } else { + TB_FoundURL = true; + TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length); + } + } + } + + imgPreloader = new Image(); + imgPreloader.onload = function(){ + + imgPreloader.onload = null; + + // Resizing large images - orginal by Christian Montoya edited by me. + var pagesize = TB_getPageSize(); + var x = pagesize[0] - 150; + var y = pagesize[1] - 150; + var imageWidth = imgPreloader.width; + var imageHeight = imgPreloader.height; + if (imageWidth > x) { + imageHeight = imageHeight * (x / imageWidth); + imageWidth = x; + if (imageHeight > y) { + imageWidth = imageWidth * (y / imageHeight); + imageHeight = y; + } + } else if (imageHeight > y) { + imageWidth = imageWidth * (y / imageHeight); + imageHeight = y; + if (imageWidth > x) { + imageHeight = imageHeight * (x / imageWidth); + imageWidth = x; + } + } + // End Resizing + + TB_WIDTH = imageWidth + 30; + TB_HEIGHT = imageHeight + 60; + $("#TB_window").append(""+caption+"" + "
"+caption+"
" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "
close
"); + + $("#TB_closeWindowButton").click(TB_remove); + + if (!(TB_PrevHTML == "")) { + function goPrev(){ + if($(document).unclick(goPrev)){$(document).unclick(goPrev)}; + $("#TB_window").remove(); + $("body").append("
"); + $(document).unkeyup(); + TB_show(TB_PrevCaption, TB_PrevURL, imageGroup); + return false; + } + + $("#TB_prev").click(goPrev); + + $(document).keyup( function(e){ var key = e.keyCode; if(key == 37){goPrev()} }); + } + + + + if (!(TB_NextHTML == "")) { + function goNext(){ + $("#TB_window").remove(); + $("body").append("
"); + $(document).unkeyup(); + TB_show(TB_NextCaption, TB_NextURL, imageGroup); + return false; + } + + $("#TB_next").click(goNext); + + $(document).keyup( function(e){ var key = e.keyCode; if(key == 39){goNext()} }); + } + + TB_position(); + $("#TB_load").remove(); + $("#TB_ImageOff").click(TB_remove); + $("#TB_window").css({display:"block"}); //for safari using css instead of show + } + + imgPreloader.src = url; + } + + if(urlType=='.htm'||urlType=='.html'||urlType=='.php'||urlType=='.asp'||urlType=='.aspx'||urlType=='.jsp'||urlType=='.jst'||urlType=='.rb'||urlType=='.txt'||urlType=='.cfm' || (url.indexOf('TB_inline') != -1) || (url.indexOf('TB_iframe') != -1) ){//code to show html pages + + var queryString = url.replace(/^[^\?]+\??/,''); + var params = TB_parseQuery( queryString ); + + //console.log(queryString); + //console.log(params); + //TB_WIDTH = (params['width']*1) + 30 || 630; + //TB_HEIGHT = (params['height']*1) + 40 || 440; + //ajaxContentW = TB_WIDTH - 30; + //ajaxContentH = TB_HEIGHT - 45; + TB_WIDTH = (params['width']*1); + TB_HEIGHT = (params['height']*1); + ajaxContentW = TB_WIDTH; + ajaxContentH = TB_HEIGHT; + + //console.log(url); + if(params['no_title'] != "true"){ + $("#TB_window").append("
"+caption+"
"); + TB_HEIGHT += 27; //title height + } + if(url.indexOf('TB_iframe') != -1){ + if(url.indexOf('transfer_params') == -1){ + urlNoQuery = url.substr(0,TB_strpos(url, "?")); + urlNoTBQuery = url.split('TB_'); + }else{ + urlNoQuery = url; + } + $("#TB_window").append(""); + }else{ + $("#TB_window").append("
"); + } + + $("#TB_closeWindowButton").click(TB_remove); + + if(url.indexOf('TB_inline') != -1){ + $("#TB_ajaxContent").html($('#' + params['inlineId']).html()); + TB_position(); + $("#TB_load").remove(); + $("#TB_window").css({display:"block"}); + }else if(url.indexOf('TB_iframe') != -1){ + TB_position(); + $("#TB_load").remove(); + $("#TB_window").css({display:"block"}); + }else{ + $("#TB_ajaxContent").load(url, function(){ + TB_position(); + $("#TB_load").remove(); + $("#TB_window").css({display:"block"}); + }); + } + + } + + $(window).resize(TB_position); + + } catch(e) { + alert( e ); + } +} + +//helper functions below + +function TB_remove() { + $("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').remove();}); + $("#TB_load").remove(); + //$(document).unkeyup(); + return false; +} + +function TB_position() { + var pagesize = TB_getPageSize(); + var arrayPageScroll = TB_getPageScrollTop(); + $("#TB_window").css({height:TB_HEIGHT+"px",width:TB_WIDTH+"px",left: ((pagesize[0] - TB_WIDTH)/2)+"px", top: (arrayPageScroll[1] + ((pagesize[1]-TB_HEIGHT)/2))+"px" }); + TB_overlaySize(); +} + +function TB_overlaySize(){ + if (window.innerHeight && window.scrollMaxY) { + yScroll = window.innerHeight + window.scrollMaxY; + } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac + yScroll = document.body.scrollHeight; + } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari + yScroll = document.body.offsetHeight; + } + $("#TB_overlay").css("height",yScroll +"px"); +} + +function TB_load_position() { + var pagesize = TB_getPageSize(); + var arrayPageScroll = TB_getPageScrollTop(); + + $("#TB_load") + .css({left: ((pagesize[0] - 100)/2)+"px", top: (arrayPageScroll[1] + ((pagesize[1]-100)/2))+"px" }) + .css({display:"block"}); +} + +function TB_parseQuery ( query ) { + var Params = new Object (); + if ( ! query ) return Params; // return empty object + var Pairs = query.split(/[;&]/); + for ( var i = 0; i < Pairs.length; i++ ) { + var KeyVal = Pairs[i].split('='); + if ( ! KeyVal || KeyVal.length != 2 ) continue; + var key = unescape( KeyVal[0] ); + var val = unescape( KeyVal[1] ); + val = val.replace(/\+/g, ' '); + Params[key] = val; + } + return Params; +} + +function TB_getPageScrollTop(){ + var yScrolltop; + if (self.pageYOffset) { + yScrolltop = self.pageYOffset; + } else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict + yScrolltop = document.documentElement.scrollTop; + } else if (document.body) {// all other Explorers + yScrolltop = document.body.scrollTop; + } + arrayPageScroll = new Array('',yScrolltop) + return arrayPageScroll; +} + +function TB_getPageSize(){ + var de = document.documentElement; + var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth; + var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight; + + arrayPageSize = new Array(w,h) + return arrayPageSize; +} + +function TB_strpos(str, ch) { + for (var i = 0; i < str.length; i++) { + if (str.substring(i, i+1) == ch) return i; + } + return -1; +} + +// vim: set ts=4 sw=4 tw=0 fenc=utf-8 ft=javascript: // -- cgit v1.2.2