This page permanently redirects to gemini://gemini.techrights.org/git/tr-git/Web-Site/.

Git browser: Web-Site/

This page presents code associated with the module/unit named above.

=> Summary of changes
=> Back to Git index
=> Licence (AGPLv3)

Web-Site/Theme/404.php



Web-Site/Theme/page.php



    

		

', '

'); ?>

An invade, divide, and conquer Grand Plan

Novell CEO Ron HovsepianHighlight: Novell was the first to acknowledge that Microsoft FUD tactics had substance. Novell then used anti-Linux FUD to market itself. Learn more

Xandros founderHighlight: Xandros let Microsoft make patent claims and brag about (paid-for) OOXML support. Learn more

Linspire CEO Kevin CarmonyHighlight: Linspire's CEO not only fell into Microsoft arms, but he also assisted the company's attack on GNU/Linux. Learn more

Hand with moneyHighlight: Microsoft craves pseudo (proprietary) standards and gets its way using proxies and influence which it buys. Learn more

Eric RaymondHighlight: The invasion into the open source world is intended to leave Linux companies neglected, due to financial incentives from Microsoft. Learn more

XenSource CEOAnalysis: Xen, an open source hypervisor, possibly fell victim to Microsoft's aggressive (and stealthy) acquisition-by-proxy strategy. Learn more

More analysis >>

Recent Posts

Web-Site/Theme/comments.php

post_password)) { // if there's a password
            if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
				?>

				

»

  1. ,

    comment_author_url,7,18); if ( !empty( $comment->comment_author_email ) ) { $md5 = md5( $comment->comment_author_email ); $default = urlencode( 'http://techrights.org/images/gravatar1.jpg' ); echo "Gravatar"; } elseif ($authurl == 'http://schestowitz.com') { $md5 = md5("r@schestowitz.com"); $default = urlencode( 'http://techrights.org/images/gravatar1.jpg' ); echo "Gravatar"; } comment_text(); ?>
comment_status) : ?>

comment_status) : ?>

. »

ID); ?>

Web-Site/Theme/themetoolkit.php

= 2 and count(@preg_grep('#^\.\./themes/[^/]+/functions.php$#', get_settings('active_plugins'))) > 0 ) {
				wp_cache_flush();
				$this->upgrade_toolkit();
			}

			$this->infos['path'] = '../themes/' . basename(dirname($file));

			/* Create some vars needed if an admin menu is to be printed */
			if ($array['debug']) {
				if ((basename($file)) == $_GET['page']) $this->infos['debug'] = 1;
				unset($array['debug']);
			}
			if ((basename($file)) == $_GET['page']){
				$this->infos['menu_options'] = $array;
				$this->infos['classname'] = $theme;
			}
			$this->option=array();

			/* Check this file is registered as a plugin, do it if needed */
			$this->pluginification();

			/* Get infos about the theme and particularly its 'shortname'
			 * which is used to name the entry in wp_options where data are stored */
			$this->do_init();

			/* Read data from options table */
			$this->read_options();

			/* Are we in the admin area ? Add a menu then ! */
			$this->file = $file;
			add_action('admin_menu', array(&$this, 'add_menu'));
		}


		/* Add an entry to the admin menu area */
		function add_menu() {
			global $wp_version;
			if ( $wp_version >= 2 ) {
				$level = 'edit_themes';
			} else {
				$level = 9;
			}
			//add_submenu_page('themes.php', 'Configure ' . $this->infos[theme_name], $this->infos[theme_name], 9, $this->infos['path'] . '/functions.php', array(&$this,'admin_menu'));
			add_theme_page('Configure ' . $this->infos['theme_name'], $this->infos['theme_name'], 'edit_themes', basename($this->file), array(&$this,'admin_menu'));
			/* Thank you MCincubus for opening my eyes on the last parameter :) */
		}

		/* Get infos about this theme */
		function do_init() {
			$themes = get_themes();
			$shouldbe= basename($this->infos['path']);
			foreach ($themes as $theme) {
				$current= basename($theme['Template Dir']);
				if ($current == $shouldbe) {
					if (get_settings('template') == $current) {
						$this->infos['active'] = TRUE;
					} else {
						$this->infos['active'] = FALSE;
					}
				$this->infos['theme_name'] = $theme['Name'];
				$this->infos['theme_shortname'] = $current;
				$this->infos['theme_site'] = $theme['Title'];
				$this->infos['theme_version'] = $theme['Version'];
				$this->infos['theme_author'] = preg_replace("#>\s*([^<]*)#", ">\\1", $theme['Author']);
				}
			}
		}

		/* Read theme options as defined by user and populate the array $this->option */
		function read_options() {
			$options = get_option('theme-'.$this->infos['theme_shortname'].'-options');
			$options['_________junk-entry________'] = 'ozh is my god';
			foreach ($options as $key=>$val) {
				$this->option["$key"] = stripslashes($val);
			}
			array_pop($this->option);
			return $this->option;
			/* Curious about this "junk-entry" ? :) A few explanations then.
			 * The problem is that get_option always return an array, even if
			 * no settings has been previously saved in table wp_options. This
			 * junk entry is here to populate the array with at least one value,
			 * removed afterwards, so that the foreach loop doesn't go moo. */
		}

		/* Write theme options as defined by user in database */
		function store_options($array) {
			update_option('theme-'.$this->infos['theme_shortname'].'-options','');
			if (update_option('theme-'.$this->infos['theme_shortname'].'-options',$array)) {
				return "Options successfully stored";
			} else {
				return "Could not save options !";
			}
		}

		/* Delete options from database */
		  function delete_options() {
			/* Remove entry from database */
			delete_option('theme-'.$this->infos['theme_shortname'].'-options');
			/* Unregister this file as a plugin (therefore remove the admin menu) */
			$this->depluginification();
			/* Revert theme back to Kubrick if this theme was activated */
			if ($this->infos['active']) {
				update_option('template', 'default');
				update_option('stylesheet', 'default');
				do_action('switch_theme', 'Default');
			}
			/* Go back to Theme admin */
			print '';
			echo "";
			exit;
		}

		/* Check if the theme has been loaded at least once (so that this file has been registered as a plugin) */
		function is_installed() {
			global $wpdb;
			$where = 'theme-'.$this->infos['theme_shortname'].'-options';
			$check = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->options WHERE option_name = '$where'");
			if ($check == 0) {
				return FALSE;
			} else {
				return TRUE;
			}
		}

		/* Theme used for the first time (create blank entry in database) */
		function do_firstinit() {
			global $wpdb;
			$options = array();
			foreach(array_keys($this->option) as $key) {
				$options["$key"]='';
			}
			add_option('theme-'.$this->infos['theme_shortname'].'-options',$options, 'Options for theme '.$this->infos['theme_name']);
			return "Theme options added in database (1 entry in table '". $wpdb->options ."')";
		}

		/* The mother of them all : the Admin Menu printing func */
		function admin_menu () {
			global $cache_settings, $wpdb;

			/* Process things when things are to be processed */
			if (@$_POST['action'] == 'store_option') {
				unset($_POST['action']);
				$msg = $this->store_options($_POST);
			} elseif (@$_POST['action'] == 'delete_options') {
				$this->delete_options();
			} elseif (!$this->is_installed()) {
				$msg = $this->do_firstinit();
			}

			if (@$msg) print "

" . $msg . "

\n"; echo '

Thank you !

'; echo '

Thank you for installing ' . $this->infos['theme_site'] . ', a theme for Wordpress. This theme was made by '.$this->infos['theme_author'].'.

'; if (!$this->infos['active']) { /* theme is not active */ echo '

(Please note that this theme is currently not activated on your site as the default theme.)

'; } $cache_settings = ''; $check = $this->read_options(); echo "

Configure ${$this->infos['theme_name']}

"; echo '

This theme allows you to configure some variables to suit your blog, which are :

'; /* Print form, here comes the fun part :) */ foreach ($this->infos['menu_options'] as $key=>$val) { $items=''; preg_match('/\s*([^{#]*)\s*({([^}]*)})*\s*([#]*\s*(.*))/', $val, $matches); if ($matches[3]) { $items = split("\|", $matches[3]); } print "\n"; break; case 'radio': print $matches[1]."\n\n"; } echo '
\n"; if (@$items) { $type = array_shift($items); switch ($type) { case 'separator': print '

'.$matches[1]."

 "; while ($items) { $v=array_shift($items); $t=array_shift($items); $checked=''; if ($v == $this->option[$key]) $checked='checked'; print ""; if (@$items) print "
\n"; } break; case 'textarea': $rows=array_shift($items); $cols=array_shift($items); print "\n
"; print ""; break; case 'checkbox': print $matches[1]."\n"; while ($items) { $k=array_shift($items); $v=array_shift($items); $t=array_shift($items); $checked=''; if ($v == $this->option[$k]) $checked='checked'; print ""; if (@$items) print "
\n"; } break; } } else { print "\n
"; print ""; } if ($matches[5]) print '
'. $matches[5]; print "

'; if ($this->infos['debug'] and $this->option) { $g = ''; $b = ''; $o = ''; $r = ''; echo '

Programmer\'s corner

'; echo '

The array $'. $this->infos['classname'] . '->option is actually populated with the following keys and values :

';
				$count = 0;
				foreach ($this->option as $key=>$val) {
					$val=str_replace('<','<',$val);
					if ($val) {
						print ''.$g.'$'.$this->infos['classname'].''.$b.'->'.$g.'option'.$b.'['.$g.'\''.$r.$key.''.$g.'\''.$b.']'.$g.' = "'. $o.$val.''.$g."\"\n";
						$count++;
					}
				}
				if (!$count) print "\n\n";
				echo '

To disable this report (for example before packaging your theme and making it available for download), remove the line " \'debug\' => \'debug\' " in the array you edited at the beginning of this file.

'; } echo '

Delete Theme options

To completely remove these theme options from your database (reminder: they are all stored in a single entry, in Wordpress options table '. $wpdb->options. '), click on the following button. You will be then redirected to the Themes admin interface'; if ($this->infos['active']) { echo ' and the Default theme will have been activated'; } echo '.

Special notice for people allowing their readers to change theme (i.e. using a Theme Switcher on their blog)
Unless you really remove the theme files from your server, this theme will still be available to users, and therefore will self-install again as soon as someone selects it. Also, all custom variables as defined in the above menu will be blank, this could lead to unexpected behaviour. Press "Delete" only if you intend to remove the theme files right after this.

'; ob_start(array(&$this,'footercut')); echo '

Credits

'; echo '

'.$this->infos['theme_site'].' has been created by '.$this->infos['theme_author'].'. '; echo 'This administration menu uses Wordpress Theme Toolkit by Ozh. And everything was made possible thanks to Wordpress.

'; } /* Make this footer part of the real #footer DIV of Wordpress admin area */ function footercut($string) { return preg_replace('#.*

Web-Site/Theme/index.php


	


		

		
', ''); ?>

Further Recent Posts

RSS 64x64RSS Feed: subscribe to the RSS feed for regular updates

Home iconSite Wiki: You can improve this site by helping the extension of the site's content

Home iconSite Home: Background about the site and some key features in the front page

Chat iconIRC Channels: Come and chat with us in real time

New to This Site? Here Are Some Introductory Resources

No

Mono

ODF

Samba logo






We support

End software patents

GPLv3

GNU project

BLAG

EFF bloggers

Comcast is Blocktastic? SavetheInternet.com



Recent Posts

Web-Site/Theme/header.php






	
	<?php bloginfo('name'); ?><?php wp_title(); ?>
	
	
	
	

    
	








Web-Site/Theme/single.php



 

	

		
', ' Gemini version available ♊︎'); ?>

Decor ᶃ Gemini Space

Black/white/grey bullet button This post is also available in Gemini over at this address'; ?> (requires a Gemini client/browser to open).

Decor ✐ Cross-references

Black/white/grey bullet button Pages that cross-reference this one, if any exist, are listed below or will be listed below over time.

Decor ▢ Respond and Discuss

Black/white/grey bullet button If you liked this post, consider subscribing to the RSS feed or join us now at the IRC channels.

DecorWhat Else is New


    ', $after = '


    ', $hide_pass_post = true, $skip_posts = 0, $show_excerpts = true); ?>

RSS 64x64RSS Feed: subscribe to the RSS feed for regular updates

Home iconSite Wiki: You can improve this site by helping the extension of the site's content

Home iconSite Home: Background about the site and some key features in the front page

Chat iconIRC Channel: Come and chat with us in real time

Recent Posts

Web-Site/Theme/functions.php

 '
  • ', 'after_widget' => "
  • \n", 'before_title' => '

    ', 'after_title' => "

    \n", )); include(dirname(__FILE__).'/themetoolkit.php'); themetoolkit( 'ocadia', array( 'sidebar' => 'Sidebar transparency {radio|transparent|Transparent|opaque|Opaque}', ), __FILE__ ); function ocadia_sidebar() { global $ocadia; if ($ocadia->option['sidebar'] == "opaque") { echo '#sidebar ul { background: url('; bloginfo('template_directory'); echo '/images/sidebar2b.gif) repeat-y; } #sidebar ul li { background: url('; bloginfo('template_directory'); echo '/images/sidebar-bottomb.gif) no-repeat bottom left; } #sidebar h2 { background: url('; bloginfo('template_directory'); echo '/images/sidebar-topb.gif) no-repeat; } #sidebar #search p, .widget_search div div { background: url('; bloginfo('template_directory'); echo '/images/sidebar-topb.gif) no-repeat; } #calendar div { background: url('; bloginfo('template_directory'); echo '/images/sidebar-topb.gif) no-repeat; }'; } } if (!$ocadia->is_installed()) { $set_defaults['sidebar'] = 'transparent'; $result = $ocadia->store_options($set_defaults); } function hide_update_notice() { remove_action( 'admin_notices', 'update_nag', 3 ); } add_action( 'admin_head', 'hide_update_notice', 1 ); ?>

    Web-Site/Theme/searchform.php



    Web-Site/Theme/.directory-listing-ok

    Web-Site/Theme/style.css

    /*
    Theme Name: Ocadia
    Theme URI: http://beccary.com/goodies/wordpress-themes/
    Description: A two column blue-grey theme, clean yet stylish.
    Version: 1.3
    Author (original): Becca Wei
    Author URI: http://beccary.com
    Modified heavily 2006-2022 by Techrights (techrights.org)
    */
    
    /* Basics */
    
    body {
    	margin: 0;
    	padding: 0;
    	background: #E6EEEE;
    	color: #333;
    	font-size: 78%;
    	font-family: "Lucida Sans Unicode", Tahoma, Geneva, sans-serif;
    	text-align: center;
    }
    p {
    	font-size: 1em;
    	line-height: 1.5em;
    	margin: 1.2em 0;
    }
    p.dropcap-first:first-letter {
    color: #708090;
    float: left;
    font-size:80px;
    line-height:60px;
    padding-top:4px;
    padding-right:5px;
    font-family: Times, serif, Georgia;
    }
    ol, ul {
    	font-size: 1em;
    	line-height: 1.5em;
    	margin: 1.2em 0 1.2em 2em;
    	padding: 0;
    }
    h1, h2, h3, h4, h5, h6 {
    	margin: 1.2em 0;
    	font-family: Georgia, serif;
    	color: #534B48;
    }
    h1, h2 {
    	font-size: 1.4em;
    }
    h3 {
    	font-size: 1.3em;
    }
    h4 {
    	font-size: 1.2em;
    }
    h5 {
    	font-size: 1.1em;
    }
    h6 {
    	font-size: 1em;
    }
    a:link {
    	color: #59708C;
    }
    a:visited {
    	color: #5C6C7D;
    }
    span.date {
      box-shadow: 0.1em 0.1em 0.1em #555;
      text-decoration:  auto;
      padding-left: 0.5em;
      padding-right: 0.5em;
      color: #555;
      border-radius: 2.4em;
      # text-decoration:  -moz-none;
      # background-image: -moz-elementblack;
    }
    abbr {
    	color: #59708C;
    }
    .navbar {
      overflow: hidden;
      background-color: #333;
    }
    .navbar a {
      float: left;
      font-size: 16px;
      font-variant: small-caps;
      color: #444;
      text-align: center;
      padding: 1px 10px;
      text-decoration: none;
    }
    .dropdown {
      float: left;
      overflow: hidden;
    }
    .dropdown .dropbtn {
      font-size: 16px;
      font-weight: bold;
      text-shadow: 0 0 3px  #ffffff;
      font-variant: small-caps;
      border: none;
      outline: none;
      color: #444;
      padding: 1px 10px;
      background-color: inherit;
      font-family: inherit;
      margin: 0;
    }
    .navbar a:hover, .dropdown:hover .dropbtn {
      background-color: red;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f9f9f9;
      min-width: 160px;
      box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
      z-index: 1;
    }
    .dropdown-content a {
      float: none;
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
      text-align: left;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    a:hover, a:active {
    	color: #8CA0B4;
    	text-decoration: none;
    }
    a[href^="gemini:"]:after {
            content: " ♊ (Gemini URI ➦)";
            font-weight:bold;
            font-variant: small-caps;
            text-shadow: 0 0 3px  #888888;
            padding-right: 15px;
    }
    a[href^="gemini:"]:hover {
            background: url(/favicon.ico) right center no-repeat;
    }
    a[href^="http:"] {
            background: url(/images/remote.gif) right center no-repeat;
            padding-right: 15px;
    }
    a[href^="http:"]:hover {
            background: url(/images/remote_a.gif) right center no-repeat;
    }
    a[href^="https:"] {
            background: url(/images/remote.gif) right center no-repeat;
            padding-right: 15px;
    }
    a[href^="https:"]:hover {
            background: url(/images/remote_a.gif) right center no-repeat;
    }
    
    /* ...but not to absolute links in this domain... */
    
    a[href^="http://techrights.org"] {
            background: transparent;
            padding-right: 0px;
    }
    a[href^="http://techrights.org"]:hover {
            background: transparent;
    }
    a[href^="https://techrights.org"] {
            background: transparent;
            padding-right: 0px;
    }
    a[href^="https://techrights.org"]:hover {
            background: transparent;
    }
    blockquote {
    	margin: 0 20px;
    	padding: 0.05em 20px;
    	border-top: 1px solid #CCC;
    	border-bottom: 1px solid #CCC;
    	background: url(/wp-content/themes/ocadia/images/commentalt.gif) repeat-y;
    	font-size: 0.9em;
    }
    blockquote:after {
    	font-weight:bold;
    	font-size:0.7em;
    	content: " "attr(cite)" ";
    	/*content: "source";*/
    }
    blockquote.evidence {
    	margin: 0 10px;
    	padding: 0.05em 20px;
    	border-top: 2px solid #444;
    	border-bottom: 2px solid #444;
    	font-size: 1.1em;
    	background: #EEE url(/wp-content/themes/ocadia/images/quote-alpha.png) no-repeat;
    }
    code {
    	color: #666;
    }
    input, textarea, select {
    	background-color: #FFF;
    	color: #333;
    	font-size: 1em;
    	font-family: "Lucida Sans Unicode", Tahoma, Geneva, sans-serif;
    }
    form, img {
    	border: 0;
    	margin: 0;
    	padding: 0;
    }
    
    /* Layout */
    
    #wrapper { margin: -18px auto auto auto; width: 760px; background: #FFF url(/wp-content/themes/ocadia/images/wrapper.gif) repeat-y; text-align: left; }
    #headmenu { height: 52px; padding-top: 8px; background: url(/wp-content/themes/ocadia/images/head.png) repeat-x; font-size: 1.0em; color: #333; text-shadow: 0 0 3px  #888888;}
    #header {
    	width: 760px;
    	height: 132px;
    	background: url(/wp-content/themes/ocadia/images/header-pillars.jpg) no-repeat;
    }
    #header a  { color: #fff; list-style-image: none; display: block; padding: 5px 0px 5px }
    #header p {
    		margin: 0;
    		padding: 5px 0 0 40px;
    		font-size: 0.75em;
    	}
    #content {
    	float: left;
    	margin-top: -12px;
    	padding: 0 10px 0 40px;
    	width: 520px;
    	min-height: 268px;
    	background: url(/wp-content/themes/ocadia/images/content.gif) no-repeat;
    	overflow: visible;
    	voice-family: "\"}\"";
    	voice-family: inherit;
    	width: 470px;
    }
    html>body #content {
    	width: 470px;
    }
    #features {
    	float: left;
    	width: 140px;
            margin-right: -140px;
    	font-size: 0.9em;
    }
    #sidebar {
    	float: left;
    	width: 240px;
    	background: url(/wp-content/themes/ocadia/images/sidebar.gif) no-repeat top right;
    	font-size: 0.9em;
    }
    	/* Sidebar styles */
    	#sidebar ul {
    		margin: 0;
    		padding: 0;
    		list-style-type: none;
    		background: url(/wp-content/themes/ocadia/images/sidebar2.gif) repeat-y;
    	}
    	#sidebar ul li {
    		margin: 0;
    		padding: 0 0 1.5em 0;
    		background: url(/wp-content/themes/ocadia/images/sidebar-bottom.gif) no-repeat bottom left;
    		overflow: visible;
    	}
    	#sidebar h2 {
    		margin: 0;
    		padding: 1.2em 40px 0 20px;
    		font-size: 1.1em;
    		background: url(/wp-content/themes/ocadia/images/sidebar-top.gif) no-repeat;
    	}
    	#sidebar h2 a {
    		color: #534B48;
    		text-decoration: none;
    	}
    	#sidebar h2 a:hover {
    		color: #59708C;
    	}
    	/* Fix our list and paragraph styles */
    	#sidebar p, #sidebar ul ul, #sidebar ul ol {
    		margin: 1em 0 0 0;
    		padding: 0 40px 0 20px;
    	}
    	#sidebar ul ol {
    		margin: 1em 0 0 20px;
    	}
    	#sidebar ul ol li {
    		padding: 0;
    		background: url(/wp-content/themes/ocadia/images/bullet.gif) no-repeat 2000px 0;
    		/* IE goes buggy with background: none; */
    	}
    	#sidebar ul ul {
    		background: none;
    	}
    	#sidebar ul ul ul {
    		margin: 0;
    		padding: 0 0 0 0.8em;
    		background: none;
    	}
    	#sidebar ul ul li {
    		padding: 0 0 0 1.5em;
    		background: url(/wp-content/themes/ocadia/images/bullet.gif) no-repeat 0 0.2em;
    	}
    	#sidebar #category_cloud li {
    		line-height: 24px;
    	}
    	#sidebar #polls ul ul li{
    		text-align:left;
    	}
    * html #content, * html #sidebar {
    	overflow: hidden; /* For IE */
    }
    #footer {
    	clear: both;
    	margin: 0 20px;
    	padding: 25px 4px 0 4px;
    	background: url(/wp-content/themes/ocadia/images/footer.gif) no-repeat;
    }
    	/* Footer styles */
    	#footer p {
    		margin: 0;
    		padding: 0.5em 20px;
    		background-color: #ccc;
    		font-size: 0.9em;
    	}
    	#footer a:hover, #footer a:active {
    		color: #5C6C7D;
    		text-decoration: none;
    	}
    
    /* Blog */
    
    .pagetitle {
    	margin: 1.2em 0 0 0;
    }
    .post {
    	padding: 1.2em 0 0 0;
    }
    .columns {
    	-moz-column-width: 12em;
    	-moz-column-gap: 1em;
    	-moz-column-rule: medium solid;
    	-webkit-column-width: 12em;
    	-webkit-column-gap: 1em;
    	-webkit-column-rule: medium solid;
    }
    .storydate {
    	float: left;
    	margin: 0 0.5em 0 0;
    	padding: 0 0.5em 0 0;
    	border-right: 1px solid #CCC;
    	font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Geneva, sans-serif;
    	font-weight: normal;
    	color: #999;
    }
    .storytitle {
    	float: left;
    	margin: 0;
    }
    .pullQuote {
    	margin:12px 8px 12px 0;
    	display:block;
    	width:140px;
    	float:left;
    	font-size:1.8em;
    	font-weight:bold;
    	line-height:1.2em;
    	color:#1E477E;
    	border-top: 1px solid #CCC;
    	border-bottom: 1px solid #CCC;
    	background: url(/wp-content/themes/ocadia/images/quote-alpha.png) no-repeat;
    }
    .meta {
    	margin: 0;
    	padding: 0.5em 0 0 3em;
    }
    .feedback {
    	padding: 0 0 0 3em;
    }
    .meta, .feedback {
    	clear: both;
    	font-size: 0.9em;
    	color: #999;
    	background: url(/wp-content/themes/ocadia/images/deco.gif) no-repeat bottom left;
    }
    .permalink {
    	margin: 0 1.5em 0 0;
    	padding: 0 0 0 1.2em;
    	background: url(/wp-content/themes/ocadia/images/perma.gif) no-repeat center left;
    }
    .commentslink {
    	padding: 0 0 0 1.5em;
    	background: url(/wp-content/themes/ocadia/images/comments.gif) no-repeat center left;
    }
    .storytitle a, .meta a, .feedback a, .commentauthor a, .commentmeta a, #comments a {
    	text-decoration: none;
    }
    
    /* Comments */
    
    #commentlist {
    	margin: 1.2em 0;
    	padding: 0;
    	list-style-type: none;
    }
    #commentlist li {
    	margin: 1em 0;
    	padding: 0 20px;
    	border-top: 1px solid #CCC;
    	border-bottom: 1px solid #CCC;
    	background: url(/wp-content/themes/ocadia/images/comment.gif) repeat-y;
    }
    .commentalt {
    	background: url(/wp-content/themes/ocadia/images/commentalt.gif) repeat-y !important;
    }
    .commentauthor {
    	margin: 1em 0 0 0;
    }
    .commentauthor a {
    	font-weight: bold;
    }
    .commentmeta {
    	margin-top: 0;
    	font-size: 0.9em;
    }
    #comment {
    	width: 98%;
    }
    #recentlist {
    	margin: 2.2em 2em;
    	padding: 0;
    }
    #recentlist li {
    	margin: 1em 0;
    	padding: 0 20px;
    	border-top: 1px solid #555;
    	border-bottom: 1px solid #555;
    	border-left: 1px solid #555;
    	background: url(/wp-content/themes/ocadia/images/comment.gif) repeat-y;
    }
    #recent {
    	width: 98%;
    }
    
    /* Widgets and Etc */
    
    #sidebar #search p, .widget_search div div {
    	margin: 0 0 0 0;
    	padding: 20px 0px 0px 0px;
    	background: url(/wp-content/themes/ocadia/images/sidebar-top.gif) no-repeat;
    }
    #sidebar #s {
    	margin-bottom: 2px;
    	width: 175px;
    }
    
    /* Calendar */
    
    #calendar div {
    	padding: 0 40px 0.2em 20px;
    	background: url(/wp-content/themes/ocadia/images/sidebar-top.gif) no-repeat;
    }
    #wp-calendar {
    	margin: 0;
    	width: 180px;
    	border: 1px solid #CCC;
    	background: #F4F4F4;
    	line-height: 1.2em;
    	text-align: center;
    	voice-family: "\"}\"";
    	voice-family: inherit;
    	width: 178px;
    }
    html>body #wp-calendar {
    	width: 178px;
    }
    #wp-calendar caption {
    	margin: 0;
    	padding: 1.4em 0 0.6em 0;
    	color: #534B48;
    	font-size: 1.1em;
    	font-family: Georgia, serif;
    	font-weight: bold;
    	text-align: left;
    }
    #wp-calendar td {
    	margin: 2px;
    	background: #FFF;
    }
    #wp-calendar td a {
    	display: block;
    	width: 100%;
    }
    #wp-calendar td.pad {
    	background: transparent;
    }
    #wp-calendar td#next, #wp-calendar td#prev {
    	padding: 0.1em 2px;
    	background: transparent;
    }
    #wp-calendar td#next a, #wp-calendar td#prev a {
    	display: inline;
    }
    #wp-calendar td#next {
    	text-align: right;
    }
    #wp-calendar td#prev {
    	text-align: left;
    }
    

    Web-Site/Theme/footer.php

    
    
    
    
    
    
    
    

    Web-Site/Theme/sidebar.php

    
    
    
    

    Web-Site/.directory-listing-ok

    Web-Site/Indexing/coll.fig

    #### license: creative commons cc0 1.0 (public domain)
    #### http://creativecommons.org/publicdomain/zero/1.0/
    # combine trranks into trc.txt (with > trc.txt)
    fl arropen "trranks"
    buf "" arr mid 1 0
    buftext ""
    bufsum 0
    forin each fl
        lentr each rtrim len
        iftrue lentr
            buf plus each
        else
            iftrue buf
                forin beach buf
                    now buftext plus beach plus ":" swap now buftext
                    teg split beach " " mid 1 1
                    rank split beach " " mid 2 1 val
                    now bufsum plus rank swap now bufsum
                    next
                now bufsum prints " " prints
                now buftext print
                buf "" arr mid 1 0
                buftext ""
                bufsum 0
                fig
        fig
        next

    Web-Site/Indexing/wikidump.fig

    #### license: creative commons cc0 1.0 (public domain)
    #### http://creativecommons.org/publicdomain/zero/1.0/
    
    proginf = "wikidump 0.1 jul 2019 mn"
    # dump xml for each wiki page on techrights (no edit hist)
    
    # create each actual file
    function dumppage url
        urltext = arrcurl url
        title = ""
        forin each urltext
            findtitle = instr each ""
            iftrue = findtitle
                title = each ltrim rtrim split title "<title>" join title "" split title "" join title ""
                break
                fig
            next
        iftrue title
            outfilename = "techrights_" plus title plus ".xml" split outfilename "/" join outfilename ":slash:" open "w"
            forin each urltext
                now = each fprint outfilename
                next
            now = outfilename close
            fig
        fig
    
    # get list of pages
    allpages = arrcurl "http://techrights.org/wiki/index.php/Special:AllPages"
    allpageslen = allpages len
    longest = 0
    longestindex = 0
    for each 1 allpageslen 1
        eachlen = allpages mid each 1 len
        ifmore eachlen longest
            longest = eachlen
            longestindex = each
            fig
        next
    
    # process list of pages and call dumppage for each
    quot = 34 chr
    pages = allpages mid longestindex 1 split pages quot
    forin each pages
        iswiki = instr each "/wiki/index.php/"
        ifequal each "/wiki/index.php/Special:AllPages"
            ignoreit
        else
            iftrue iswiki
                now = "http://techrights.org" plus each split now "http://techrights.org/wiki/index.php/" join now "http://techrights.org/wiki/index.php/Special:Export/" dumppage now
                fig
            fig
        next
    
    # create tgz archive
    pos = 0
    python
        if figosname != "nt": pos = 1
        fig
    iftrue pos
        tm = time split tm ":" join tm "."
        dt = date split dt "/" join dt "-"
        tgzname = "techrightswiki_" plus dt plus "_" plus tm plus ".tar.gz"
        now = "tar -cvzf " plus tgzname plus " techrights_*" shell
        fig
    

    Web-Site/Indexing/refsort.fig

    #### license: creative commons cc0 1.0 (public domain)
    #### http://creativecommons.org/publicdomain/zero/1.0/
    # fix and resort links from trclinks.txt to refsort.txt
    
    python
        reload(sys)
        sys.setdefaultencoding('utf8')
        fig
    
    pg arropen "reflinks.txt"
    pg plus ""
    
    
    linkbuf arr mid 1 0
    
    reaches arr mid 1 0
    
    function filterlinks title
        now title lcase ltrim swap now title
        singles 32 chr
        doubles singles times 2
        while
            dfind instr title doubles
            iftrue dfind
                now split title doubles join now singles swap now title
            else
                break
                fig
            wend
        ltitle title left 6
        atitle title mid 7 1 instr "1234567890" atitle
        iftrue atitle
            ifequal ltitle "links "
                now return 0
                fig
            fig
        now return 1
        fig
    
    function trimleftbrac linkco
        pos instr linkco "["
        newlen linkco len minus pos
        newlinkco linkco right newlen return newlinkco
        fig
    
    function trimrightbrac linkco
        pos instr linkco "]"
        iftrue pos
            now linkco rtrim
            nowlen now len
            for each nowlen 1 -1
                lnow now left each
                r now mid each 1
                ifequal r "]"
                    eachm each minus 1
                    lnow now left eachm
                    now return lnow
                    fig
                next
        else
            now return linkco
            fig
    
        fig
    
    function urlhas url reaches
        now url lcase swap now url
        forin each reaches
            uh instr url each
            iftrue uh
                now return 1
                fig
            next
        now return 0
        fig
    
    function printinurl linkbuf reaches whichmode
        forin linkeach linkbuf
            linkco linkeach trimleftbrac linkco trimrightbrac linkco
            now linkco
    
            url split linkco " " mid 1 1
            urllen url len
    
            titlelen linkco len minus urllen minus 1
            title linkco right titlelen
            filt filterlinks title
            uh urlhas url reaches
            th urlhas title reaches
    
            ifequal whichmode "url"
                ifequal filt 1
                    ifequal uh 1
                        now linkeach print
                        fig
                    fig
                fig
    
            ifequal whichmode "title"
                ifequal filt 1
                    ifequal uh 0
                    ifequal th 1
                        now linkeach print
                        fig
                        fig
                    fig
                fig
    
            ifequal whichmode "body"
                ifequal filt 1
                    ifequal uh 0
                    ifequal th 0
                        now linkeach print
                        fig
                        fig
                    fig
                fig
    
            ifequal whichmode "links"
                ifequal filt 0
                        now linkeach print
                    fig
                fig
    
            next
        fig
    
    forin each pg
    
        e each left 1 ltrim
    
        iftrue e
    
            ifequal e "*"
                linkbuf plus each
            else
                eaches split each " "
                eacheslen eaches len minus 1
                preches eaches right eacheslen join preches " " split preches ":"
                reaches arr mid 1 0
                forin eachpreches preches
                    iftrue eachpreches
                        now split eachpreches " " mid 1 1
                        reaches plus now
                        fig
                    next
                now each print
                fig
    
        else
    
            iftrue linkbuf
                linkbuf printinurl    linkbuf reaches "url"
                now "" print
                linkbuf printinurl    linkbuf reaches "title"
                now "" print
                linkbuf printinurl    linkbuf reaches "body"
                now "" print
                linkbuf printinurl    linkbuf reaches "links"
                fig
            linkbuf arr mid 1 0
            now "" print
    
            fig
    
        next
    

    Web-Site/Indexing/.directory-listing-ok

    Web-Site/Indexing/trc.fig

    #### license: creative commons cc0 1.0 (public domain)
    #### http://creativecommons.org/publicdomain/zero/1.0/
    # load log.txt (db of entries) and search from trc.txt (output from coll.fig)
    
    python
        reload(sys)
        sys.setdefaultencoding('utf8')
        fig
    
    nl 10 chr
    now "" arr
    nowlen arr
    
    function getlink p
        eachr p ltrim
        pg split eachr nl mid 1 1
        pr split pg "ignorethis " join pr "" return pr
        fig
    
    function rplace p c t
        now split p c join now t return now
        fig
    
    function ctext t
        quot 34 chr
        nl 10 chr
        tab 9 chr
        now t lcase rplace now quot nl swap now t
        now t rplace now " " nl swap now t
        now t rplace now "&" nl swap now t
        now t rplace now ";" nl swap now t
    
        now t rplace now ")" nl swap now t
        now t rplace now "(" nl swap now t
        now t rplace now "," nl swap now t
        now t rplace now "'" nl swap now t
        now t rplace now ":" nl swap now t
        now t rplace now "?" nl swap now t
    python
        t = t.replace(unichr(8220), chr(10))
        t = t.replace(unichr(8221), chr(10))
        fig
        now t rplace now tab nl swap now t return t
        fig
    
    function nohtml p
        buf ""
        intag 0
        forin each p
            ifequal each "<"
                intag 1
                fig
            ifequal intag 0
                now buf plus each swap now buf
                fig
            ifequal each ">"
                intag 0
                fig
            next
        now return buf
        fig
    
    function lookfor findthese db dbcopy origfind
        nl 10 chr
        dblen db len
        buf 1
        for eachlen 1 dblen 1
            each arrget db eachlen
            copyeach arrget dbcopy eachlen
    
            forin eachofthese findthese
                iftrue eachofthese
                    #now eachofthese plus "-" print
                    now each split now nl
                    found 0
                    found instr now eachofthese
                    iftrue found
    
                        iftrue buf
                            now origfind print # print current list of searchwords
                            buf 0
                            fig
    
                        now copyeach split now "\n" mid 6 2
                        edate now mid 1 1 ltrim rtrim
                        elink "* '''" plus edate plus "''' [" prints
                        eurl getlink copyeach prints " " prints
                        etitle now mid 2 1 ltrim rtrim plus "]" print
                        iftrue 0
                            now eachofthese print # print found keyword
                            fig
                        break
                        fig
    
                    fig
                next
    
            next
        fig
    
    
    
    db "" arr
    dbcopy "" arr
    dblen 0
    python
        db = open("log.txt").read().split("If you liked this post, consider")
        dbcopy = db[:]
        dblen = len(db)
        fig
    
    now "processing entries... " prints
    prevcount 0
    for eachdb dblen 1 -1
        dbcount eachdb divby dblen times 1000 int divby 10 minus 100 times -1
    
        ifmore dbcount prevcount
            now dbcount str plus "% " prints
            prevcount dbcount
            fig
        p arrget db eachdb
        now nohtml p ctext now
        db arrset eachdb now
    
        p arrget dbcopy eachdb
        now nohtml p
        dbcopy arrset eachdb now
    
        next
    now "" print
    
    pg arropen "trc.txt"
    nowlen pg len
    
    for eachloop nowlen 1 -1
        each pg mid eachloop 1
        eaches split each " "
        eacheslen eaches len minus 1
        now "" print
        reaches eaches right eacheslen join reaches " " split reaches ":"
    python
        reaches.remove('')
        fig
    
        iftrue reaches
            findthese arr mid 1 0
            forin eachreaches reaches
                onereach split eachreaches " " mid 1 1
                findthese plus onereach
                next
            iftrue findthese
                now lookfor findthese db dbcopy each
                fig
            fig
    
       next
    

    Web-Site/Indexing/wikidump.fig.py

    #!/usr/bin/env python2
    # encoding: utf-8
    # fig translator version: fig 4.6
    import sys, os
    from sys import stdin, stdout
    from sys import argv as figargv
    try:
        from colorama import init
        init()
    except:
        pass # (only) windows users want colorama installed or ansi.sys enabled
    
    try:
        from sys import exit as quit
    except:
        pass
    
    from random import randint
    from time import sleep
    
    from os import chdir as figoch
    from os import popen as figpo
    from os import system as figsh
    from os import name as figosname
    figsysteme = 0
    figfilehandles = {}
    figfilecounters = {}
    from sys import stdout
    def figlocate(x, l = "ignore", c = "ignore"):
        import sys
        if l == "ignore" and c == "ignore": pass
        # do nothing. want it to return an error?
    
        elif l < 1 and c != "ignore":
            sys.stdout.write("[" + str(c) + "G") # not ansi.sys compatible
        elif l != "ignore" and c == "ignore":
            sys.stdout.write("[" + str(l) + ";" + str(1) + "H")
        else: sys.stdout.write("[" + str(l) + ";" + str(c) + "H")
    
    import time
    
    def fignonz(p, n=None):
        if n==None:
            if p == 0: return 1
        else:
            if p == 0: return n
        return p
    
    def fignot(p):
        if p: return 0
        return -1
    
    figbac = None
    figprsbac = None
    sub = None
    def fignone(p, figbac):
        if p == None: return figbac
        return p
        return -1
    
    def stopgraphics():
        global yourscreen
        global figraphics
        figraphics = 0
        try: pygame.quit()
        except: pass
    
    
    def figcolortext(x, f):
        b = 0
        if f == None: f = 0
        if b == None: b = 0
        n = "0"
        if f > 7:
            n = "1"
            f = f - 8
    
        if   f == 1: f = 4 ## switch ansi colours for qb colours
        elif f == 4: f = 1 ## 1 = blue not red, 4 = red not blue, etc.
    
        if   f == 3: f = 6
        elif f == 6: f = 3
    
        if b > 7: b = b - 8
    
        if   b == 1: b = 4
        elif b == 4: b = 1
    
        if   b == 3: b = 6
        elif b == 6: b = 3
    
        stdout.write("\x1b[" + n + ";" + str(30+f) + "m")
        return "\x1b[" + n + ";" + str(30+f) + ";" + str(40+b) + "m"
    
    def figcolourtext(x, f):
        b = 0
        if f == None: f = 0
        if b == None: b = 0
        n = "0"
        if f > 7:
            n = "1"
            f = f - 8
    
        if   f == 1: f = 4 ## switch ansi colours for qb colours
        elif f == 4: f = 1 ## 1 = blue not red, 4 = red not blue, etc.
    
        if   f == 3: f = 6
        elif f == 6: f = 3
    
        if b > 7: b = b - 8
    
        if   b == 1: b = 4
        elif b == 4: b = 1
    
        if   b == 3: b = 6
        elif b == 6: b = 3
    
        stdout.write("\x1b[" + n + ";" + str(30+f) + "m")
        return "\x1b[" + n + ";" + str(30+f) + ";" + str(40+b) + "m"
    
    figcgapal =   [(0, 0, 0),      (0, 0, 170),    (0, 170, 0),     (0, 170, 170),
    (170, 0, 0),   (170, 0, 170),  (170, 85, 0),   (170, 170, 170),
    (85, 85, 85),  (85, 85, 255),  (85, 255, 85),  (85, 255, 255),
    (255, 85, 85), (255, 85, 255), (255, 255, 85), (255, 255, 255)]
    
    def figget(p, s):
        return s
    
    def fighighlight(x, b):
        f = None
        if f == None: f = 0
        if b == None: b = 0
        n = "0"
        if f > 7:
            n = "1"
            f = f - 8
    
        if   f == 1: f = 4 ## switch ansi colours for qb colours
        elif f == 4: f = 1 ## 1 = blue not red, 4 = red not blue, etc.
    
        if   f == 3: f = 6
        elif f == 6: f = 3
    
        if b > 7: b = b - 8
    
        if   b == 1: b = 4
        elif b == 4: b = 1
    
        if   b == 3: b = 6
        elif b == 6: b = 3
    
        stdout.write("\x1b[" + n + str(40+b) + "m")
        return "\x1b[" + n + str(40+b) + "m"
    
    def figinstr(x, p, e):
        try:
            return p.index(e) + 1
        except:
            return 0
    
    def figchdir(p):
        try:
            figoch(p)
        except:
            print "no such file or directory: " + str(p)
            figend(1)
    
    def figshell(p):
        global figsysteme
        try:
            figsysteme = figsh(p)
        except:
            print "error running shell command: " + chr(34) + str(p) + chr(34)
            figend(1)
    
    def figarrshell(c):
        global figsysteme
        try:
            figsysteme = 0
            sh = figpo(c)
            ps = sh.read().replace(chr(13) + chr(10),
            chr(10)).replace(chr(13), chr(10)).split(chr(10))
            figsysteme = sh.close()
        except:
            print "error running arrshell command: " + chr(34) + str(c) + chr(34)
            figend(1)
        return ps[:]
    
    def figsgn(p):
        p = float(p)
        if p > 0:
            return 1
        if p < 0:
            return -1
        return 0
    
    def figstr(p):
        return str(p)
    
    def figprint(p):
        print p
    
    def figchr(p):
        if type(p) == str:
            if len(p) > 0:
                return p[0]
        return chr(p)
    
    def figprints(p):
        stdout.write(str(p))
        sys.stdout.flush()
    
    def figleft(p, s):
        return p[:s]
    
    def figmid(p, s, x):
        arr = 0
        if type(p) == list or type(p) == tuple:
            arr = 1
        rt = p[s - 1:
            x + s - 1]
        if arr and len(rt) == 1:
            rt = rt[0]
        return rt
    
    def figright(p, s):
        return p[-s:]
    
    def figrandint(x, s, f):
        return randint(s, f)
    
    def figlcase(p):
        return p.lower()
    
    def figucase(p):
        return p.upper()
    
    def figint(p):
        return int(p)
    
    def figarrset(x, p, s):
        if type(s) == tuple:
            if len(s) == 1: fas = s[0]
        elif type(s) == list:
            if len(s) == 1: fas = s[0]
        else:
            fas = s
        x[p - 1] = s
    
    def figopen(x, s):
        import fileinput
        if s.lower() == "w":
            if (x) not in figfilehandles.keys():
                figfilehandles[x] = open(x[:], s.lower())
        elif s.lower() == "r":
            if (x) not in figfilehandles.keys():
                figfilehandles[x] = fileinput.input(x[:])
                figfilecounters[x] = 0
        else:
            if (x) not in figfilehandles.keys(): figfilehandles[x] = open(x[:], s[:])
    
    def figfprint(x, s):
        fon = figosname
        sep = chr(10)
        if fon == "nt":
            sep = chr(13) + chr(10)
        figfilehandles[s].write(str(x) + sep)
    
    def figflineinput(x, s):
        try:
            p = figfilehandles[s][figfilecounters[s]].replace(chr(13),
            "").replace(chr(10), "")
            figfilecounters[s] += 1
        except:
            p = chr(10)
        return p
    
    def figclose(x):
        if (x) in figfilehandles.keys():
            figfilehandles[x].close()
            del figfilehandles[x]
            try:
                del figfilecounters[x]
            except:
                pass
    
    def figcls(x):
        if figosname == "nt":
            cls = figsh("cls")
        else:
            stdout.write("")
            sys.stdout.flush()
    
    def figarropen(x, s):
        x = open(s).read().replace(chr(13) + chr(10), chr(10)).replace(chr(13),
        chr(10)).split(chr(10))
        return x[:]
    
    def figarrcurl(x, s):
        from urllib import urlopen
        x = str(urlopen(s).read())
        x = x.replace(chr(13) + chr(10),
        chr(10)).replace(chr(13), chr(10)).split(chr(10))
        return x[:]
    
    def figarrstdin(x):
        ps = []
        for p in stdin:
            ps += [p[:-1]]
        return ps[:]
    
    def figarrget(x, p, s):
        if 1:
            return p[s - 1]
    
    def figplus(p, s):
        if type(p) in (float, int):
            if type(s) in (float, int):
                p = p + s
            else:
                p = p + s # float(s) if you want it easier
            if p == float(int(p)):
                p = int(p)
        else:
            if type(p) == str: p = p + s # str(s) if you want it easier
            if type(p) == list:
                if type(s) == tuple:
                    p = p + list(s)
                elif type(s) == list:
                    p = p + s[:]
                else:
                    p = p + [s]
            if type(p) == tuple:
                if type(s) == tuple:
                    p = tuple(list(p) + list(s))
                elif type(s) == list:
                    p = tuple(list(p) + s[:])
                else:
                    p = tuple(list(p) + [s])
        return p
    
    def figjoin(p, x, s):
        t = ""
        if len(x):
            t = str(x[0])
        for c in range(len(x)):
            if c > 0: t += str(s) + str(x[c])
        return t # s.join(x)
    
    def figarr(p):
        if type(p) in (float, int, str):
            p = [p]
        else:
            p = list(p)
        return p
    
    def figsplit(p, x, s):
        return x.split(s)
    
    def figval(n):
        n = float(n)
        if float(int(n)) == float(n):
            n = int(n)
        return n
    
    def figtimes(p, s):
        if type(p) in (float, int):
            p = p * s # float(s) if you want it easier
            if p == float(int(p)):
                p = int(p)
        else:
            if type(p) == list:
                p = p[:] * s # figval(s)
            else:
                p = p * s # figval(s) if you want it easer
        return p
    
    def figdivby(p, s):
        p = float(p) / s
        if p == float(int(p)):
            p = int(p)
        return p
    def figminus(p, s):
        return p - s
    
    def figtopwr(p, s):
        p = p ** s
        if p == float(int(p)):
            p = int(p)
        return p
    def figmod(p, s):
        return p % s
    
    def figcos(p):
        from math import cos
        p = cos(p)
        if p == float(int(p)):
            p = int(p)
        return p
    
    def figsin(p):
        from math import sin
        p = sin(p)
        if p == float(int(p)):
            p = int(p)
        return p
    def figsqr(p):
        from math import sqrt
        p = sqrt(p)
        if p == float(int(p)):
            p = int(p)
        return p
    
    def figltrim(p):
        return p.lstrip()
    def figlineinput(p):
        return raw_input()
    def figlen(p):
        return len(p)
    def figasc(p):
        return ord(p[0])
    def figatn(p):
        from math import atan
        p = atan(p)
        if p == float(int(p)):
            p = int(p)
        return p
    
    def fighex(p):
        return hex(p)
    def figrtrim(p):
        return p.rstrip()
    def figstring(x, p, n):
        if type(n) == str:
            return n * p
        return chr(n) * p
    def figtimer(p):
        from time import strftime
        return int(strftime("%H"))*60*60+int(strftime("%M"))*60+int(strftime("%S"))
    
    def figtime(p):
        from time import strftime
        return strftime("%H:%M:%S")
    
    def figdate(p):
        from time import strftime
        return strftime("%m/%d/%Y")
    
    def figcommand(p):
        return figargv[1:]
    
    def figtan(p):
        from math import tan
        p = tan(p)
        if p == float(int(p)):
            p = int(p)
        return p
    
    def figoct(p): return oct(p)
    
    def figsleep(p, s):
        sleep(s)
    def figarrsort(p):
        p.sort()
    
    def figdisplay(x):
        global figraphics, figrupd
        figrupd = 0
        if figraphics == 1:
            pygame.display.update()
    
    def figreverse(p):
        if type(p) == list:
            p.reverse()
            return p
        elif type(p) == str:
            p = map(str, p)
            p.reverse()
            p = "".join(p)
            return p
    
    def figarreverse(p):
        p.reverse()
    
    def figfunction(p, s):
        return p
    
    def figend(x):
        quit()
    
    def figif(p, s):
        return p
    
    def figthen(p, s):
        return p
    
    def figsystem(x):
        quit()
    
    #### http://creativecommons.org/publicdomain/zero/1.0/
    
    
    figlist = 0
    try: figlist = int(type(proginf) == list)
    except NameError: pass
    if not figlist: proginf = 0
    proginf = "wikidump 0.1 jul 2019 mn"
    
    # dump xml for each wiki page on techrights (no edit hist)
    
    # create each actual file
    def dumppage(url):
    
        figlist = 0
        try: figlist = int(type(urltext) == list)
        except NameError: pass
        if not figlist: urltext = 0
        urltext = figarrcurl(urltext, url)
    
    
        figlist = 0
        try: figlist = int(type(title) == list)
        except NameError: pass
        if not figlist: title = 0
        title = ""
    
        for each in urltext:
    
            figlist = 0
            try: figlist = int(type(findtitle) == list)
            except NameError: pass
            if not figlist: findtitle = 0
            findtitle = figinstr(findtitle, each, "")
    
            if findtitle:
    
                figlist = 0
                try: figlist = int(type(title) == list)
                except NameError: pass
                if not figlist: title = 0
                title = each
                title = figltrim(title)
                title = figrtrim(title)
                title = figsplit(title, title, "<title>")
                title = figjoin(title, title, "")
                title = figsplit(title, title, "")
                title = figjoin(title, title, "")
    
                break
        if title:
    
            figlist = 0
            try: figlist = int(type(outfilename) == list)
            except NameError: pass
            if not figlist: outfilename = 0
            outfilename = "techrights_"
            outfilename = figplus(outfilename, title)
            outfilename = figplus(outfilename, ".xml")
            outfilename = figsplit(outfilename, outfilename, "/")
            outfilename = figjoin(outfilename, outfilename, ":slash:")
            figopen(outfilename, "w")
    
            for each in urltext:
    
                figlist = 0
                try: figlist = int(type(now) == list)
                except NameError: pass
                if not figlist: now = 0
                now = each
                figfprint(now, outfilename)
    
    
            figlist = 0
            try: figlist = int(type(now) == list)
            except NameError: pass
            if not figlist: now = 0
            now = outfilename
            figclose(now)
    
    
    # get list of pages
    
    figlist = 0
    try: figlist = int(type(allpages) == list)
    except NameError: pass
    if not figlist: allpages = 0
    allpages = figarrcurl(allpages, "http://techrights.org/wiki/index.php/Special:AllPages")
    
    
    figlist = 0
    try: figlist = int(type(allpageslen) == list)
    except NameError: pass
    if not figlist: allpageslen = 0
    allpageslen = allpages
    allpageslen = figlen(allpageslen)
    
    
    figlist = 0
    try: figlist = int(type(longest) == list)
    except NameError: pass
    if not figlist: longest = 0
    longest = 0
    
    
    figlist = 0
    try: figlist = int(type(longestindex) == list)
    except NameError: pass
    if not figlist: longestindex = 0
    longestindex = 0
    
    for each in range(int(float(1)), int(float(allpageslen)) + figsgn(1), fignonz(int(float(1)))):
    
        figlist = 0
        try: figlist = int(type(eachlen) == list)
        except NameError: pass
        if not figlist: eachlen = 0
        eachlen = allpages
        eachlen = figmid(eachlen, each, 1)
        eachlen = figlen(eachlen)
    
        if eachlen > longest:
    
            figlist = 0
            try: figlist = int(type(longest) == list)
            except NameError: pass
            if not figlist: longest = 0
            longest = eachlen
    
    
            figlist = 0
            try: figlist = int(type(longestindex) == list)
            except NameError: pass
            if not figlist: longestindex = 0
            longestindex = each
    
    
    # process list of pages and call dumppage for each
    
    figlist = 0
    try: figlist = int(type(quot) == list)
    except NameError: pass
    if not figlist: quot = 0
    quot = 34
    quot = figchr(quot)
    
    
    figlist = 0
    try: figlist = int(type(pages) == list)
    except NameError: pass
    if not figlist: pages = 0
    pages = allpages
    pages = figmid(pages, longestindex, 1)
    pages = figsplit(pages, pages, quot)
    
    for each in pages:
    
        figlist = 0
        try: figlist = int(type(iswiki) == list)
        except NameError: pass
        if not figlist: iswiki = 0
        iswiki = figinstr(iswiki, each, "/wiki/index.php/")
    
        if each == "/wiki/index.php/Special:AllPages":
    
            figlist = 0
            try: figlist = int(type(ignoreit) == list)
            except NameError: pass
            if not figlist: ignoreit = 0
    
        else:
            if iswiki:
    
                figlist = 0
                try: figlist = int(type(now) == list)
                except NameError: pass
                if not figlist: now = 0
                now = "http://techrights.org"
                now = figplus(now, each)
                now = figsplit(now, now, "http://techrights.org/wiki/index.php/")
                now = figjoin(now, now, "http://techrights.org/wiki/index.php/Special:Export/")
                figbac = now
                now = dumppage(now) ; now = fignone(now, figbac) ;
    
    # create tgz archive
    
    figlist = 0
    try: figlist = int(type(pos) == list)
    except NameError: pass
    if not figlist: pos = 0
    pos = 0
    
    if figosname != "nt": pos = 1
    if pos:
    
        figlist = 0
        try: figlist = int(type(tm) == list)
        except NameError: pass
        if not figlist: tm = 0
        tm = figtime(tm)
        tm = figsplit(tm, tm, ":")
        tm = figjoin(tm, tm, ".")
    
    
        figlist = 0
        try: figlist = int(type(dt) == list)
        except NameError: pass
        if not figlist: dt = 0
        dt = figdate(dt)
        dt = figsplit(dt, dt, "/")
        dt = figjoin(dt, dt, "-")
    
    
        figlist = 0
        try: figlist = int(type(tgzname) == list)
        except NameError: pass
        if not figlist: tgzname = 0
        tgzname = "techrightswiki_"
        tgzname = figplus(tgzname, dt)
        tgzname = figplus(tgzname, "_")
        tgzname = figplus(tgzname, tm)
        tgzname = figplus(tgzname, ".tar.gz")
    
    
        figlist = 0
        try: figlist = int(type(now) == list)
        except NameError: pass
        if not figlist: now = 0
        now = "tar -cvzf "
        now = figplus(now, tgzname)
        now = figplus(now, " techrights_*")
        figshell(now)
    

    => Back to main index

    Proxy Information
    Original URL
    gemini://gemini.techrights.org/git/tr-git/Web-Site
    Status Code
    Success (20)
    Meta
    text/gemini;lang=en-GB
    Capsule Response Time
    352.042039 milliseconds
    Gemini-to-HTML Time
    3.113614 milliseconds

    This content has been proxied by September (ba2dc).