init
This commit is contained in:
1
ljcom/.forward
Normal file
1
ljcom/.forward
Normal file
@@ -0,0 +1 @@
|
||||
/home/lj/mail/
|
||||
22
ljcom/README-ljcom.txt
Normal file
22
ljcom/README-ljcom.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
========
|
||||
NOTICE
|
||||
========
|
||||
|
||||
The files in the "ljcom" CVS repository are not licensed under the GPL.
|
||||
|
||||
These are site-local modifications which differentiate LiveJournal.com
|
||||
from other livejournal(the code)-based sites. Everything here should
|
||||
be pretty trivial and/or non-essential, but critical in making
|
||||
LiveJournal "feel" different.
|
||||
|
||||
We provide the source to these files so developers/integrators know
|
||||
the proper ways to extend LiveJournal. (generally via hooks and extra
|
||||
styles and *-local.* files)
|
||||
|
||||
While we encourage you to learn from these files, you do not have
|
||||
permission to use them in production sites. You may use them on
|
||||
development servers such as goathack.livejournal.org.
|
||||
|
||||
Any questions or comments may be sent to:
|
||||
|
||||
Brad Fitzpatrick <brad@danga.com>
|
||||
64
ljcom/bin/checkconfig-local.pl
Normal file
64
ljcom/bin/checkconfig-local.pl
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
my @errors;
|
||||
my $err = sub {
|
||||
return unless @_;
|
||||
print STDERR "Problem:\n" . join('', map { " * $_\n" } @_) . "\n";
|
||||
exit 1;
|
||||
};
|
||||
|
||||
############################################################################
|
||||
print "[Checking site-local config....]\n";
|
||||
############################################################################
|
||||
|
||||
my %modules = (
|
||||
"Crypt::Cracklib" => { 'deb' => 'libcrypt-cracklib-perl',
|
||||
'opt' => 'Provides checking of strong password.' },
|
||||
"GnuPG::Interface" => { 'deb' => 'libgnupg-interface-perl',
|
||||
'opt' => 'Crypto and signed message authentication.' },
|
||||
"Inline" => { 'deb' => 'libinline-perl', },
|
||||
"Crypt::SSLeay" => {'deb' => "libcrypt-ssleay-perl", },
|
||||
"Geo::IP::PurePerl" => { 'opt' => "Provides IP to country mapping for stopping some CC fraud.", },
|
||||
);
|
||||
|
||||
my @debs;
|
||||
|
||||
foreach my $mod (sort keys %modules) {
|
||||
my $rv = eval "use $mod;";
|
||||
if ($@) {
|
||||
my $dt = $modules{$mod};
|
||||
if ($dt->{'opt'}) {
|
||||
print STDERR "Missing optional module $mod: $dt->{'opt'}\n";
|
||||
} else {
|
||||
push @errors, "Missing perl module: $mod";
|
||||
}
|
||||
push @debs, $dt->{'deb'} if $dt->{'deb'};
|
||||
next;
|
||||
}
|
||||
my $ver_want = $modules{$mod}{ver};
|
||||
my $ver_got = $mod->VERSION;
|
||||
if ($ver_want && $ver_got && $ver_got < $ver_want) {
|
||||
push @errors, "Out of date module: $mod (need $ver_want, $ver_got installed)";
|
||||
}
|
||||
}
|
||||
|
||||
unless (-e "/usr/share/doc/aspell-en" || -e "/usr/local/share/aspell") {
|
||||
push @errors, "Spell check dictionary not installed?";
|
||||
push @debs, "aspell-en";
|
||||
}
|
||||
|
||||
unless (-d "$ENV{'LJHOME'}/temp") {
|
||||
push @errors, "\$LJHOME/temp dir doesn't exist";
|
||||
}
|
||||
unless (-d "$ENV{'LJHOME'}/var") {
|
||||
push @errors, "\$LJHOME/var dir doesn't exist";
|
||||
}
|
||||
|
||||
if (@debs && -e '/etc/debian_version') {
|
||||
print STDERR "\n# apt-get install ", join(' ', @debs), "\n\n";
|
||||
}
|
||||
|
||||
$err->(@errors);
|
||||
|
||||
1;
|
||||
8
ljcom/bin/db
Executable file
8
ljcom/bin/db
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# <LJDEP> No dependencies.
|
||||
# </LJDEP>
|
||||
|
||||
mysql -A livejournal
|
||||
|
||||
|
||||
10
ljcom/bin/fixtime
Executable file
10
ljcom/bin/fixtime
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# <LJDEP>
|
||||
# prog: ntpdate
|
||||
# </LJDEP>
|
||||
|
||||
/usr/sbin/ntpdate -s tick.nyc.pnap.net tock.pnap.net
|
||||
|
||||
|
||||
|
||||
21
ljcom/bin/hkill
Executable file
21
ljcom/bin/hkill
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# <LJDEP>
|
||||
# prog: ps, grep
|
||||
# </LJDEP>
|
||||
|
||||
use strict;
|
||||
|
||||
my $prog = shift @ARGV;
|
||||
exit unless ($prog =~ /^[\w\.\/]+$/);
|
||||
|
||||
my @procs = `ps awx | grep $prog | grep -v grep | grep -v hkill`;
|
||||
foreach (@procs)
|
||||
{
|
||||
next unless (/^\s*(\d+)\s/);
|
||||
my $pid = $1;
|
||||
print $pid, "\n";
|
||||
kill 1, $pid;
|
||||
}
|
||||
|
||||
|
||||
BIN
ljcom/bin/jmk.jar
Executable file
BIN
ljcom/bin/jmk.jar
Executable file
Binary file not shown.
114
ljcom/bin/ljcontrib.pl
Executable file
114
ljcom/bin/ljcontrib.pl
Executable file
@@ -0,0 +1,114 @@
|
||||
#!/usr/bin/perl
|
||||
# -*-perl-*-
|
||||
# vim:ts=4:sw=4:et
|
||||
#
|
||||
# Tool to add/ack contributions on a livejournal server
|
||||
#
|
||||
# Gavin Mogan <halkeye@halkeye.net>
|
||||
#
|
||||
use strict;
|
||||
use LWP::UserAgent;
|
||||
use Digest::MD5 qw(md5_hex);
|
||||
use Getopt::Long;
|
||||
use URI::Escape;
|
||||
|
||||
my $CONFFILE = "$ENV{'HOME'}/.ljcontrib.conf";
|
||||
|
||||
my ($opt_help, $opt_type, $opt_zilla, $opt_url, $opt_ack );
|
||||
|
||||
exit 1 unless GetOptions('help' => \$opt_help,
|
||||
'zilla|z=s' => \$opt_zilla,
|
||||
'url|u=s' => \$opt_url,
|
||||
'type|t=s' => \$opt_type,
|
||||
'ack|a' => \$opt_ack,
|
||||
);
|
||||
|
||||
if ($opt_help || (@ARGV == 0)) {
|
||||
print STDERR "Usage: ljcontrib.pl [opts] <user> <description>\n\n";
|
||||
print STDERR "Options:\n";
|
||||
print STDERR " --ack Ack a contribution\n";
|
||||
print STDERR " --zilla=<bug#> [optional] What zilla bug is it for?\n";
|
||||
print STDERR " --url=<url> [optional] Supply a url for contribution\n";
|
||||
print STDERR " --type=<type> contrib type: code/doc/creative/biz/other\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
unless (-s $CONFFILE) {
|
||||
open (C, ">>$CONFFILE"); close C; chmod 0700, $CONFFILE;
|
||||
print "\nNo ~/.ljcontrib.conf config file found.\nFormat:\n\n";
|
||||
print "server: www.livejournal.com\n";
|
||||
print "username: test\n";
|
||||
print "password: test\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
my %conf;
|
||||
open (C, $CONFFILE);
|
||||
while (<C>) {
|
||||
next if /^\#/;
|
||||
next unless /\S/;
|
||||
chomp;
|
||||
next unless /^(\w+)\s*:\s*(.+)/;
|
||||
$conf{$1} = $2;
|
||||
}
|
||||
close C;
|
||||
my $commands;
|
||||
|
||||
if ($opt_ack) {
|
||||
die "No ack #\n" unless @ARGV;
|
||||
my $ackno = $ARGV[0];
|
||||
$commands = "command=" . uri_escape("contrib ack $ackno");
|
||||
} else {
|
||||
die "URL and Zilla are mutually exclusive\n" if ($opt_url && $opt_zilla);
|
||||
|
||||
if ($opt_type ne "code" && $opt_type ne "doc" && $opt_type ne "creative" &&
|
||||
$opt_type ne "biz" && $opt_type ne "other")
|
||||
{
|
||||
$opt_type = "other"; # default to other
|
||||
}
|
||||
|
||||
die "No user for ack\n" unless @ARGV;
|
||||
my $user = $ARGV[0];
|
||||
|
||||
die "No description given\n" unless @ARGV == 2;
|
||||
my $desc = $ARGV[1];
|
||||
|
||||
my $url = " ";
|
||||
|
||||
$url .= $opt_url if ($opt_url);
|
||||
$url .= " http://zilla.livejournal.org/show_bug.cgi?id=$opt_zilla" if ($opt_zilla);
|
||||
|
||||
$commands = "command=" . uri_escape("contrib add $user $opt_type \"$desc\"$url");
|
||||
}
|
||||
|
||||
|
||||
# Create a request
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->agent("Gavin_Contrib/0.1");
|
||||
my $req = HTTP::Request->new('POST',"http://$conf{'server'}/interface/flat");
|
||||
$req->content_type('application/x-www-form-urlencoded');
|
||||
my $user = "user=" . uri_escape($conf{'username'});
|
||||
my $pass = "hpassword=" . uri_escape(md5_hex($conf{'password'}));
|
||||
my $mode = "mode=consolecommand";
|
||||
my $clientversion = "clientversion=moocow/0.1";
|
||||
my $data = join('&', $user,$pass,$mode,$commands, $clientversion);
|
||||
|
||||
$req->content($data);
|
||||
|
||||
my $res = $ua->request($req);
|
||||
|
||||
if ($res->is_error) {
|
||||
die "Error posting to LJ server: " . $res->message . "\n";
|
||||
}
|
||||
my %ljres = split(/\n/, $res->content);
|
||||
|
||||
if ($ljres{'success'} ne "OK") {
|
||||
die "Error: " . $ljres{'errmsg'} . "\n";
|
||||
}
|
||||
|
||||
if ($ljres{'cmd_line_1_type'} eq "error") {
|
||||
die "Error: " . $ljres{'cmd_line_1'} . "\n";
|
||||
}
|
||||
|
||||
print "SUCCESS: contribution added.\n" unless ($opt_ack);
|
||||
print "SUCCESS: contribution acked.\n" if ($opt_ack);
|
||||
164
ljcom/bin/ljrpc
Executable file
164
ljcom/bin/ljrpc
Executable file
@@ -0,0 +1,164 @@
|
||||
#!/usr/bin/perl -w
|
||||
#
|
||||
# LiveJournal Remote Procedure Call Client (ljrpc)
|
||||
# Copyright 2001 Dormando (dormando@rydia.net)
|
||||
# Going to add a license (GPL?) later.
|
||||
#
|
||||
#
|
||||
# This client runs commands you give it at the prompt through the RPC
|
||||
# system. By default, first it sends out a 'ping', then sends the
|
||||
# command to any machine that replies to it. Prints out replies it
|
||||
# gets, too. It can also be invoked with --now, in which case it
|
||||
# broadcasts the command and exits immediately.
|
||||
#
|
||||
# <LJDEP>
|
||||
# lib: IO::Socket, Getopt::Long
|
||||
# </LJDEP>
|
||||
|
||||
use strict;
|
||||
use IO::Socket;
|
||||
use Getopt::Long;
|
||||
use constant SEC_SLAVE_WAIT => 4;
|
||||
use lib "$ENV{'LJHOME'}/cgi-bin";
|
||||
require "ljconfig.pl";
|
||||
|
||||
$SIG{CHLD} = 'IGNORE';
|
||||
|
||||
my $MAXLEN = 512;
|
||||
my $PORTNO = 6100;
|
||||
|
||||
if ($LJ::BCAST_ADDR) { } # shutup warning
|
||||
my $bcastaddr = $LJ::BCAST_ADDR || '10.0.0.255';
|
||||
|
||||
my ($cmdmsg, $remhost, @hosts);
|
||||
|
||||
### option processing
|
||||
my $timeout = 0;
|
||||
my $quick = 0;
|
||||
my $server = "web";
|
||||
my $ping = 0;
|
||||
my $delay = 0;
|
||||
my $serialized = 0;
|
||||
|
||||
exit 1 unless
|
||||
GetOptions('timeout=i' => \$timeout,
|
||||
'now' => \$quick,
|
||||
'server=s' => \$server,
|
||||
'ping' => \$ping,
|
||||
'serialized|s' => \$serialized,
|
||||
'dest=s' => \$bcastaddr,
|
||||
'delay|d=i' => \$delay,
|
||||
);
|
||||
|
||||
my $msg = "@ARGV";
|
||||
$msg = "cmd: " . $msg;
|
||||
|
||||
# Creat socket. Shoot the broadcast off.
|
||||
my $sock = IO::Socket::INET->new(Proto => 'udp') or die "Creating socket: $!\n";
|
||||
$sock->sockopt(SO_BROADCAST, 1);
|
||||
|
||||
my $ipaddr = inet_aton($bcastaddr);
|
||||
my $portaddr = sockaddr_in($PORTNO, $ipaddr);
|
||||
print STDERR "Broadcasting.\n";
|
||||
if ($quick) {
|
||||
$sock->send($msg, 0, $portaddr) or die "send: $!\n";
|
||||
exit 0;
|
||||
} else {
|
||||
$sock->send("marco $server", 0, $portaddr) or die "send: $!\n";
|
||||
}
|
||||
|
||||
my $count = 0;
|
||||
$| = 1;
|
||||
|
||||
# First loop, grabs machines that are up.
|
||||
|
||||
my %mark;
|
||||
if ($server eq "web") {
|
||||
open (O, "$ENV{LJHOME}/cgi-bin/pool_int_web.txt");
|
||||
while (<O>) {
|
||||
chomp;
|
||||
$mark{$_} = 1;
|
||||
}
|
||||
close O;
|
||||
}
|
||||
|
||||
eval {
|
||||
local $SIG{ALRM} = sub { die "timeout" };
|
||||
alarm(SEC_SLAVE_WAIT);
|
||||
while ($sock->recv($cmdmsg, $MAXLEN)) {
|
||||
my ($port, $ipaddr) = sockaddr_in($sock->peername);
|
||||
$remhost = gethostbyaddr($ipaddr, AF_INET) || "";
|
||||
my $remip = inet_ntoa($ipaddr);
|
||||
if ($cmdmsg eq "pollo") {
|
||||
alarm(SEC_SLAVE_WAIT);
|
||||
$count++;
|
||||
print "$count: $remhost [$remip]\n";
|
||||
delete $mark{$remip};
|
||||
push(@hosts, $remhost);
|
||||
}
|
||||
}
|
||||
alarm(0);
|
||||
};
|
||||
|
||||
print "\n";
|
||||
|
||||
if ($ping) {
|
||||
print "Unreported int_web nodes:\n" if %mark;
|
||||
foreach (keys %mark) {
|
||||
print " $_\n";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($serialized) {
|
||||
foreach my $host (@hosts) {
|
||||
printf "Sending: %-30s", "$host ...";
|
||||
my $ipaddr = inet_aton($host);
|
||||
my $portaddr = sockaddr_in($PORTNO, $ipaddr);
|
||||
if ($sock->send($msg, 0, $portaddr)) {
|
||||
print "sent.\n";
|
||||
} else {
|
||||
print "failed.\n";
|
||||
}
|
||||
|
||||
if ($delay) {
|
||||
sleep $delay;
|
||||
} else {
|
||||
$sock->recv($cmdmsg, $MAXLEN);
|
||||
my ($port, $remipaddr) = sockaddr_in($sock->peername);
|
||||
$remhost = gethostbyaddr($remipaddr, AF_INET);
|
||||
|
||||
print "Server $remhost:\n===============================\n";
|
||||
print $cmdmsg;
|
||||
print "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
foreach my $host (@hosts) {
|
||||
printf "Sending: %-30s", "$host ...";
|
||||
my $ipaddr = inet_aton($host);
|
||||
my $portaddr = sockaddr_in($PORTNO, $ipaddr);
|
||||
if ($sock->send($msg, 0, $portaddr)) {
|
||||
print "sent.\n";
|
||||
} else {
|
||||
print "failed.\n";
|
||||
}
|
||||
sleep $timeout;
|
||||
}
|
||||
|
||||
print "\n\n";
|
||||
|
||||
# Loop receiving command stuffs.
|
||||
for (my $i = 0; $i < @hosts; $i++) {
|
||||
$sock->recv($cmdmsg, $MAXLEN);
|
||||
my ($port, $ipaddr) = sockaddr_in($sock->peername);
|
||||
$remhost = gethostbyaddr($ipaddr, AF_INET);
|
||||
|
||||
# Parse thing.
|
||||
print "Server $remhost:\n===============================\n";
|
||||
print $cmdmsg;
|
||||
print "\n\n";
|
||||
}
|
||||
149
ljcom/bin/ljrpcd
Executable file
149
ljcom/bin/ljrpcd
Executable file
@@ -0,0 +1,149 @@
|
||||
#!/usr/bin/perl -w
|
||||
# LiveJournal Remote Procedure Call Daemon (ljrpcd)
|
||||
# Copyright 2001 Dormando (dormando@rydia.net)
|
||||
# Going add a license (GPL?) later.
|
||||
# This daemon forks off into the background, logs if told to
|
||||
# waits for UDP messages on the given port, and executes
|
||||
# commands sent to it.
|
||||
#
|
||||
# <LJDEP>
|
||||
# lib: IO::Socket
|
||||
# prog: bin/ljmaint.pl
|
||||
# </LJDEP>
|
||||
|
||||
use strict;
|
||||
use IO::Socket;
|
||||
|
||||
# Max message length and port to bind.
|
||||
my $MAXLEN = 512;
|
||||
my $PORTNO = 6100;
|
||||
my $PIDFILE = '/var/run/ljrpcd.pid';
|
||||
my $LOGFILE = '/var/log/ljrpcd.log';
|
||||
my $TYPE = shift @ARGV;
|
||||
|
||||
unless ($TYPE eq "web" || $TYPE eq "db") {
|
||||
print "Unknown/unspecified machine type, quitting.\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# Pid and pidfile.
|
||||
my $pid;
|
||||
my $is_parent = 1;
|
||||
# Socket. Needs to be here for the HUP stuff.
|
||||
my $sock;
|
||||
|
||||
# In case we're shot, unlink the pidfile.
|
||||
$SIG{TERM} = sub {
|
||||
unlink($PIDFILE);
|
||||
exit 1;
|
||||
};
|
||||
|
||||
if (-e $PIDFILE) {
|
||||
open (PID, $PIDFILE);
|
||||
my $tpid;
|
||||
chomp ($tpid = <PID>);
|
||||
close PID;
|
||||
|
||||
if ($tpid) {
|
||||
# so Linux-specific, but Proc::ProcessTable
|
||||
#iterates over /dev forever, which sucks on a NetApp
|
||||
if (open (CMD, "/proc/$tpid/cmdline")) {
|
||||
my $cmdline = <CMD>;
|
||||
close CMD;
|
||||
if ($cmdline =~ /ljrpcd/) {
|
||||
print "Process exists already, quitting.\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Print a banner.
|
||||
print "LiveJournal RPC Daemon starting up into the background...\n";
|
||||
|
||||
# Perhaps I should give it a command to not do this in the future.
|
||||
if ($pid = fork) {
|
||||
# Parent, log pid and exit.
|
||||
open(PID, ">$PIDFILE") or die "Couldn't open $PIDFILE for writing: $!\n";
|
||||
print PID $pid;
|
||||
close(PID);
|
||||
print "Closing ($pid) wrote to $PIDFILE\n";
|
||||
$is_parent = 1;
|
||||
exit;
|
||||
} else {
|
||||
# This is the child, main loop-de-doo.
|
||||
my($cmdmsg, $remaddr, $remhost);
|
||||
|
||||
# HUP signal handler.
|
||||
$SIG{HUP} = \&restart_request;
|
||||
|
||||
open(LOG, ">>$LOGFILE") or die "Couldn't open log file for appending: $!\n";
|
||||
flock(LOG, 2) or die "Couldn't flock log file for writing: $!\n";
|
||||
select(LOG); # Why the hell not, eh?
|
||||
$| = 1;
|
||||
|
||||
$sock = IO::Socket::INET->new(LocalPort => "$PORTNO", Proto => 'udp') or die "socket: $@";
|
||||
$sock->sockopt(SO_BROADCAST, 1);
|
||||
print "Bound, awaiting UDP commands on port $PORTNO\n";
|
||||
|
||||
# Main loop, simple parser.
|
||||
while ($sock->recv($cmdmsg, $MAXLEN)) {
|
||||
my ($port, $ipaddr) = sockaddr_in($sock->peername);
|
||||
my $ip_addy = inet_ntoa($ipaddr);
|
||||
|
||||
$remhost = gethostbyaddr($ipaddr, AF_INET);
|
||||
print "Client $remhost sent command: $cmdmsg\n";
|
||||
|
||||
# If the command is 'marco' return 'pollo'
|
||||
if ($cmdmsg =~ /^marco(\s+($TYPE|all))?$/) {
|
||||
print "Returning 'pollo' to client $remhost\n";
|
||||
$sock->send("pollo") or print "Couldn't scream pollo at $remhost\n";
|
||||
next;
|
||||
} elsif ($cmdmsg =~ s/^cmd:\s//) {
|
||||
# Handle the command.
|
||||
if ($cmdmsg eq "restart") {
|
||||
print "Restarting ljrpcd\n";
|
||||
$sock->send("Restarting ljrpcd...\n");
|
||||
restart_request();
|
||||
}
|
||||
my $return = handle_request($cmdmsg);
|
||||
print "Returning $return to client $remhost\n";
|
||||
$sock->send($return) or print "Couldn't return $return to $remhost\n";
|
||||
next;
|
||||
}
|
||||
}
|
||||
die "recv: $!\n";
|
||||
} #if
|
||||
|
||||
# Sub to restart the daemon.
|
||||
sub restart_request {
|
||||
$sock->close;
|
||||
unlink($PIDFILE);
|
||||
exec($0, $TYPE);
|
||||
}
|
||||
|
||||
|
||||
# Handle a request... Do further parsing, pass it appropriately.
|
||||
# Should return a discernable ok. Usually 'done' 'ok' or an
|
||||
# informative reply no longer than 500 characters.
|
||||
sub handle_request {
|
||||
my $cmd = shift;
|
||||
my $su = "";
|
||||
if ($cmd =~ s/^(\w+?)://) {
|
||||
my $user = $1;
|
||||
my ($login,$pass,$uid,$gid) = getpwnam($user)
|
||||
or return "$user not in passwd file.";
|
||||
$su = "su $user -c";
|
||||
}
|
||||
unless ($cmd =~ /[\|\>\<]/) {
|
||||
my $home = $ENV{'LJHOME'} || "/home/lj";
|
||||
$cmd =~ s/[;]/\\$&/;
|
||||
if ($su) {
|
||||
return `$su \'$home/bin/ljmaint.pl $cmd\'`;
|
||||
} else {
|
||||
return `$home/bin/ljmaint.pl $cmd`;
|
||||
}
|
||||
}
|
||||
|
||||
return 'bad command';
|
||||
}
|
||||
167
ljcom/bin/ljstatscasterd
Executable file
167
ljcom/bin/ljstatscasterd
Executable file
@@ -0,0 +1,167 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use Getopt::Long;
|
||||
use IO::Socket::INET;
|
||||
use IO::Select;
|
||||
use Time::HiRes qw(time ualarm);
|
||||
use POSIX ();
|
||||
|
||||
my $opt_pidfile;
|
||||
my $opt_stop;
|
||||
my $opt_foreground;
|
||||
|
||||
exit 1 unless GetOptions('pidfile=s' => \$opt_pidfile,
|
||||
'stop' => \$opt_stop,
|
||||
'foreground' => \$opt_foreground,
|
||||
);
|
||||
|
||||
$opt_pidfile ||= "/var/run/ljstatscasterd.pid";
|
||||
|
||||
$SIG{TERM} = sub {
|
||||
unlink($opt_pidfile);
|
||||
exit 1;
|
||||
};
|
||||
|
||||
my $pid;
|
||||
if (-e $opt_pidfile) {
|
||||
open (PID, $opt_pidfile);
|
||||
chomp ($pid = <PID>);
|
||||
close PID;
|
||||
if ($pid) {
|
||||
if ($opt_stop) {
|
||||
kill 15, $pid;
|
||||
print "Stopped.\n";
|
||||
exit;
|
||||
}
|
||||
if (kill(0,$pid)) {
|
||||
die "Already running as pid: $pid\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($opt_stop) {
|
||||
print "already stopped.\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
require "$ENV{'LJHOME'}/cgi-bin/ljlib.pl";
|
||||
|
||||
my ($host, $port, $ipaddr, $portaddr, $sock);
|
||||
my $TIMEOUT = 1.0; # transmit at least every 1 sec.
|
||||
|
||||
if ($LJ::FREECHILDREN_BCAST &&
|
||||
$LJ::FREECHILDREN_BCAST =~ /^(\S+):(\d+)$/) {
|
||||
($host, $port) = ($1, $2);
|
||||
} else {
|
||||
die "\$LJ::FREECHILDREN_BCAST not defined, nowhere to send";
|
||||
}
|
||||
|
||||
die "Can't write to $opt_pidfile" unless open(PID, ">>$opt_pidfile");
|
||||
close PID;
|
||||
|
||||
unless ($opt_foreground) {
|
||||
fork && exit 0;
|
||||
POSIX::setsid() or die "Couldn't become session leader: $!";
|
||||
fork && exit 0;
|
||||
}
|
||||
|
||||
# Parent, log pid and exit.
|
||||
unless (open(PID, ">$opt_pidfile")) {
|
||||
die "Couldn't open $opt_pidfile for writing: $!\n";
|
||||
}
|
||||
print PID $$;
|
||||
close(PID);
|
||||
print "Started with pid $$\n";
|
||||
|
||||
unless ($opt_foreground) {
|
||||
# Change working dir to the filesystem root, clear the umask
|
||||
chdir "/";
|
||||
umask 0;
|
||||
|
||||
# Close standard file descriptors and reopen them to /dev/null
|
||||
close STDIN && open STDIN, "</dev/null";
|
||||
close STDOUT && open STDOUT, "+>&STDIN";
|
||||
close STDERR && open STDERR, "+>&STDIN";
|
||||
}
|
||||
|
||||
$sock = IO::Socket::INET->new(Proto => 'udp');
|
||||
$sock->sockopt(SO_BROADCAST, 1);
|
||||
$ipaddr = inet_aton($host);
|
||||
$portaddr = sockaddr_in($port, $ipaddr);
|
||||
|
||||
my $insock = IO::Socket::INET->new(Proto=>'udp',
|
||||
LocalAddr=>"127.0.0.1:$port");
|
||||
or die "couldn't create socket\n";
|
||||
$insock->blocking(0);
|
||||
|
||||
my $sel = IO::Select->new();
|
||||
$sel->add($insock);
|
||||
|
||||
my ($buf, $last_message);
|
||||
my $no_servers = 1; # true if there are no servers available
|
||||
my $last_send;
|
||||
my $last_free;
|
||||
|
||||
|
||||
my ($type, $message);
|
||||
|
||||
sub transmit {
|
||||
#print "transmitting...\n";
|
||||
$sock->send($last_message, 0, $portaddr)
|
||||
if $last_message;
|
||||
}
|
||||
|
||||
my $MAXLEN = 512;
|
||||
SEL:
|
||||
while(1) {
|
||||
my @ready = $sel->can_read($TIMEOUT);
|
||||
unless (@ready) {
|
||||
# we got here via a timeout. check to make sure apache-perl
|
||||
# is still running before actually deciding to transmit more
|
||||
open (PID, "/var/run/apache-perl.pid") or next; # debian-specific
|
||||
my $pid = <PID>;
|
||||
chomp $pid;
|
||||
close PID;
|
||||
if (readlink("/proc/$pid/exe") =~ /apache/) {
|
||||
transmit();
|
||||
}
|
||||
next SEL;
|
||||
}
|
||||
|
||||
# assume we shouldn't transmit, until we've decided we should
|
||||
my $transmit = 0;
|
||||
|
||||
# only one handle selected, so we know it's the incoming UDP
|
||||
my $message;
|
||||
while ($sock->recv($message, $MAXLEN)) {
|
||||
$last_message = $message if $message;
|
||||
}
|
||||
$message = $last_message;
|
||||
|
||||
$message =~ m!free=(\d+)\n!;
|
||||
my $free = $1;
|
||||
next SEL if $free == $last_free;
|
||||
|
||||
$now = time();
|
||||
|
||||
if (defined $free && $now > $last_send + 0.2) {
|
||||
$transmit = 1;
|
||||
} elsif (defined $free) {
|
||||
my $new_no_servers = ($free == 0);
|
||||
if ($no_servers != $new_no_servers) {
|
||||
$transmit = 1;
|
||||
$no_servers = $new_no_servers;
|
||||
}
|
||||
} elsif ($message =~ m!shutdown=1!) {
|
||||
$transmit = 1;
|
||||
}
|
||||
|
||||
if ($transmit) {
|
||||
$last_send = $now;
|
||||
$last_free = $free;
|
||||
transmit();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
662
ljcom/bin/machine_config.pl
Executable file
662
ljcom/bin/machine_config.pl
Executable file
@@ -0,0 +1,662 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# <LJDEP>
|
||||
# lib: Sys::Hostname, Getopt::Long, Fcntl::, POSIX::
|
||||
# </LJDEP>
|
||||
|
||||
use strict;
|
||||
use Sys::Hostname;
|
||||
use Getopt::Long;
|
||||
use Fcntl;
|
||||
use POSIX qw(tmpnam);
|
||||
|
||||
my %DEFAULT = (
|
||||
'search' => 'lj',
|
||||
'ns1' => '10.2.0.1',
|
||||
);
|
||||
|
||||
my %MACHINE = (
|
||||
"stan" => {
|
||||
'ipco' => '10.0.0.3',
|
||||
'do_web' => 1,
|
||||
'web_slave' => 1,
|
||||
'paid_web_slave' => 1,
|
||||
},
|
||||
"kyle" => {
|
||||
'ipco' => '10.0.0.4',
|
||||
'do_web' => 1,
|
||||
'web_slave' => 1,
|
||||
'web_master' => 1,
|
||||
},
|
||||
"wendy" => {
|
||||
'ipco' => '10.0.0.5',
|
||||
'do_web' => 1,
|
||||
'web_slave' => 1,
|
||||
},
|
||||
"bebe" => {
|
||||
'ipco' => '10.0.0.6',
|
||||
'do_web' => 1,
|
||||
'web_slave' => 1,
|
||||
},
|
||||
"terrance" => {
|
||||
'ipco' => '10.0.0.7',
|
||||
'do_web' => 1,
|
||||
'web_slave' => 1,
|
||||
},
|
||||
"phillip" => {
|
||||
'ipco' => '10.0.0.8',
|
||||
'do_web' => 1,
|
||||
'web_slave' => 1,
|
||||
'paid_web_slave' => 1,
|
||||
},
|
||||
"ike" => {
|
||||
'ipco' => '10.0.0.11',
|
||||
'do_web' => 1,
|
||||
'web_slave' => 1,
|
||||
},
|
||||
"pip" => {
|
||||
'ipco' => '10.0.0.12',
|
||||
'do_web' => 1,
|
||||
'web_slave' => 1,
|
||||
},
|
||||
"kenny" => {
|
||||
'ipco' => '10.0.0.1',
|
||||
'db_slave' => 1,
|
||||
},
|
||||
"cartman" => {
|
||||
'ipco' => '10.0.0.2',
|
||||
'db_master' => 1,
|
||||
},
|
||||
"mackey" => {
|
||||
'ipco' => '10.0.0.9',
|
||||
'db_slave' => 1,
|
||||
},
|
||||
"hat" => {
|
||||
'ipco' => '10.0.0.10',
|
||||
'db_slave' => 1,
|
||||
},
|
||||
"marklar" => {
|
||||
'ip' => '216.231.32.128',
|
||||
'ipco' => '10.0.0.15',
|
||||
'db_slave' => 1,
|
||||
},
|
||||
);
|
||||
|
||||
my $machine = hostname();
|
||||
unless ($machine =~ /^lj-(\w+)(\.livejournal\.com)?$/) {
|
||||
die "Weird hostname.\n";
|
||||
}
|
||||
$machine = $1;
|
||||
|
||||
my $DRY = 0;
|
||||
my $HELP = 0;
|
||||
exit 1 unless GetOptions(
|
||||
'dryrun|n' => \$DRY,
|
||||
'help' => \$HELP,
|
||||
);
|
||||
|
||||
if ($HELP || ! defined $MACHINE{$machine}) {
|
||||
die("Usage: machine_config.pl [opts]\n\nWhere opts can be:\n".
|
||||
"--dryrun -n Don't change any config files; just show changes.\n".
|
||||
"--help -h This message.\n");
|
||||
}
|
||||
|
||||
my $host = { %DEFAULT };
|
||||
$host->{'name'} = $machine;
|
||||
foreach (keys %{$MACHINE{$machine}}) {
|
||||
$host->{$_} = $MACHINE{$machine}->{$_};
|
||||
}
|
||||
|
||||
print "Host information: ($host->{'name'})\n";
|
||||
foreach (sort keys %{$host}) {
|
||||
printf " %10s : %s\n", $_, $host->{$_};
|
||||
}
|
||||
|
||||
setup_resolve_conf($host);
|
||||
setup_hosts($host);
|
||||
setup_httpd($host) if ($host->{'do_web'});
|
||||
|
||||
#####################
|
||||
|
||||
sub write_file
|
||||
{
|
||||
my $file = shift;
|
||||
my $new = shift;
|
||||
my $old;
|
||||
|
||||
open (IN, $file);
|
||||
while (<IN>) {
|
||||
$old .= $_;
|
||||
}
|
||||
close IN;
|
||||
|
||||
if ($new ne $old) {
|
||||
if ($DRY) {
|
||||
my $tmp = tmpnam();
|
||||
die "temp file exists!\n" if (-e $tmp);
|
||||
print "$file needs updating!\n";
|
||||
open (OUT, ">$tmp");
|
||||
print OUT $new;
|
||||
close OUT;
|
||||
print `diff -u $file $tmp`;
|
||||
unlink $tmp;
|
||||
} else {
|
||||
print "Updating: $file\n";
|
||||
open (OUT, ">$file");
|
||||
print OUT $new;
|
||||
close OUT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub setup_resolve_conf
|
||||
{
|
||||
my $host = shift;
|
||||
my $file = "/etc/resolv.conf";
|
||||
my $new;
|
||||
|
||||
if (exists($host->{'search'})) {
|
||||
$new .= "search\t$host->{'search'}\n";
|
||||
}
|
||||
|
||||
foreach my $ns (qw(ns1)) {
|
||||
next unless ($host->{$ns});
|
||||
$new .= "nameserver\t$host->{$ns}\n";
|
||||
}
|
||||
|
||||
write_file($file, $new);
|
||||
}
|
||||
|
||||
# NOTE: this used to do a lot more, before we had DNS running
|
||||
# internally.
|
||||
sub setup_hosts
|
||||
{
|
||||
my $host = shift;
|
||||
my $file = "/etc/hosts";
|
||||
my $new;
|
||||
|
||||
$new .= "127.0.0.1\tlocalhost\n";
|
||||
write_file($file, $new);
|
||||
}
|
||||
|
||||
sub setup_httpd
|
||||
{
|
||||
my $host = shift;
|
||||
my $file = "/usr/local/apache/conf/httpd.conf";
|
||||
my $new;
|
||||
|
||||
$new .= <<"END_CONF";
|
||||
ServerType standalone
|
||||
ServerRoot "/usr/local/apache"
|
||||
PidFile /usr/local/apache/logs/httpd.pid
|
||||
ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard
|
||||
Timeout 30
|
||||
|
||||
## keep-alive
|
||||
KeepAlive Off
|
||||
MaxKeepAliveRequests 200
|
||||
KeepAliveTimeout 50
|
||||
|
||||
MinSpareServers 15
|
||||
MaxSpareServers 40
|
||||
StartServers 170
|
||||
MaxClients 255
|
||||
MaxRequestsPerChild 0
|
||||
|
||||
|
||||
# Dynamic Shared Object (DSO) Support
|
||||
# Note: The order is which modules are loaded is important. Don't change
|
||||
# the order below without expert advice.
|
||||
|
||||
LoadModule vhost_alias_module libexec/mod_vhost_alias.so
|
||||
LoadModule env_module libexec/mod_env.so
|
||||
LoadModule config_log_module libexec/mod_log_config.so
|
||||
#LoadModule mime_magic_module libexec/mod_mime_magic.so
|
||||
LoadModule mime_module libexec/mod_mime.so
|
||||
#LoadModule negotiation_module libexec/mod_negotiation.so
|
||||
LoadModule status_module libexec/mod_status.so
|
||||
LoadModule info_module libexec/mod_info.so
|
||||
LoadModule includes_module libexec/mod_include.so
|
||||
LoadModule autoindex_module libexec/mod_autoindex.so
|
||||
LoadModule dir_module libexec/mod_dir.so
|
||||
LoadModule cgi_module libexec/mod_cgi.so
|
||||
#LoadModule asis_module libexec/mod_asis.so
|
||||
#LoadModule imap_module libexec/mod_imap.so
|
||||
LoadModule action_module libexec/mod_actions.so
|
||||
#LoadModule speling_module libexec/mod_speling.so
|
||||
#LoadModule userdir_module libexec/mod_userdir.so
|
||||
LoadModule alias_module libexec/mod_alias.so
|
||||
LoadModule rewrite_module libexec/mod_rewrite.so
|
||||
LoadModule access_module libexec/mod_access.so
|
||||
LoadModule auth_module libexec/mod_auth.so
|
||||
#LoadModule anon_auth_module libexec/mod_auth_anon.so
|
||||
#LoadModule dbm_auth_module libexec/mod_auth_dbm.so
|
||||
#LoadModule digest_module libexec/mod_digest.so
|
||||
#LoadModule proxy_module libexec/libproxy.so
|
||||
#LoadModule cern_meta_module libexec/mod_cern_meta.so
|
||||
LoadModule expires_module libexec/mod_expires.so
|
||||
#LoadModule headers_module libexec/mod_headers.so
|
||||
LoadModule usertrack_module libexec/mod_usertrack.so
|
||||
LoadModule unique_id_module libexec/mod_unique_id.so
|
||||
LoadModule setenvif_module libexec/mod_setenvif.so
|
||||
LoadModule fastcgi_module libexec/mod_fastcgi.so
|
||||
#LoadModule php4_module libexec/libphp4.so
|
||||
|
||||
# Reconstruction of the complete module list from all available modules
|
||||
# (static and shared ones) to achieve correct module execution order.
|
||||
# [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
|
||||
ClearModuleList
|
||||
AddModule mod_vhost_alias.c
|
||||
AddModule mod_env.c
|
||||
AddModule mod_log_config.c
|
||||
#AddModule mod_mime_magic.c
|
||||
AddModule mod_mime.c
|
||||
#AddModule mod_negotiation.c
|
||||
AddModule mod_status.c
|
||||
AddModule mod_info.c
|
||||
AddModule mod_include.c
|
||||
AddModule mod_autoindex.c
|
||||
AddModule mod_dir.c
|
||||
AddModule mod_cgi.c
|
||||
#AddModule mod_asis.c
|
||||
#AddModule mod_imap.c
|
||||
AddModule mod_actions.c
|
||||
#AddModule mod_speling.c
|
||||
#AddModule mod_userdir.c
|
||||
AddModule mod_alias.c
|
||||
AddModule mod_rewrite.c
|
||||
AddModule mod_access.c
|
||||
AddModule mod_auth.c
|
||||
#AddModule mod_auth_anon.c
|
||||
#AddModule mod_auth_dbm.c
|
||||
#AddModule mod_digest.c
|
||||
#AddModule mod_proxy.c
|
||||
#AddModule mod_cern_meta.c
|
||||
AddModule mod_expires.c
|
||||
#AddModule mod_headers.c
|
||||
AddModule mod_usertrack.c
|
||||
AddModule mod_unique_id.c
|
||||
AddModule mod_so.c
|
||||
AddModule mod_setenvif.c
|
||||
AddModule mod_fastcgi.c
|
||||
#AddModule mod_php4.c
|
||||
|
||||
ExtendedStatus On
|
||||
Port 80
|
||||
END_CONF
|
||||
|
||||
if ($host->{'ip'} && ! $host->{'web_slave'}) {
|
||||
$new .= "Listen $host->{'ip'}:80\n";
|
||||
}
|
||||
|
||||
$new .= <<"END_CONF";
|
||||
Listen $host->{'ipco'}:80
|
||||
|
||||
User lj
|
||||
Group lj
|
||||
|
||||
ServerAdmin webmaster\@livejournal.com
|
||||
ServerName lj-$host->{'name'}.livejournal.com
|
||||
|
||||
DocumentRoot "/usr/local/apache/htdocs"
|
||||
|
||||
<Location /status>
|
||||
SetHandler server-status
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
Allow from 10.0 66.31.142.7
|
||||
</Location>
|
||||
|
||||
<IfModule mod_dir.c>
|
||||
DirectoryIndex index.html index.bml
|
||||
</IfModule>
|
||||
<Directory "/home/lj">
|
||||
Options Indexes FollowSymLinks ExecCGI
|
||||
#for speed, instead of "All"
|
||||
AllowOverride None
|
||||
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</Directory>
|
||||
|
||||
SendBufferSize 131072
|
||||
|
||||
#######################################
|
||||
END_CONF
|
||||
if ($host->{'ip'} && ! $host->{'web_slave'}) {
|
||||
$new .= "NameVirtualHost $host->{'ip'}:80\n";
|
||||
}
|
||||
|
||||
$new .= <<"END_CONF";
|
||||
NameVirtualHost $host->{'ipco'}:80
|
||||
|
||||
FastCgiSuexec Off
|
||||
FastCgiConfig -maxClassProcesses 10 -startDelay 1 -idle-timeout 20
|
||||
|
||||
END_CONF
|
||||
|
||||
if ($host->{'web_master'}) {
|
||||
$new .= <<"END_CONF";
|
||||
|
||||
# site's down message.
|
||||
Listen 10.0.0.4:81
|
||||
NameVirtualHost 10.0.0.4:81
|
||||
<VirtualHost 10.0.0.4:81>
|
||||
SetEnv LJHOME /home/lj
|
||||
FastCgiServer /home/lj/sites/sitedown/index.cgi -processes 1
|
||||
ServerName livejournal.com
|
||||
ServerAlias *.livejournal.com
|
||||
DocumentRoot /home/lj/sites/sitedown/
|
||||
DirectoryIndex index.cgi
|
||||
ErrorDocument 404 /index.cgi
|
||||
<Location /index.cgi>
|
||||
SetHandler fastcgi-script
|
||||
</Location>
|
||||
</VirtualHost>
|
||||
|
||||
### mrtg.livejournal.com
|
||||
Listen 10.0.0.4:88
|
||||
NameVirtualHost 10.0.0.4:88
|
||||
<VirtualHost 10.0.0.4:88>
|
||||
SetEnv LJHOME /home/lj
|
||||
ServerName mrtg.livejournal.com
|
||||
ServerAlias mrtg.livejournal.com
|
||||
|
||||
ServerAdmin webmaster\@livejournal.com
|
||||
DocumentRoot /home/lj/sites/mrtg/
|
||||
DirectoryIndex index.cgi
|
||||
AddHandler cgi-script .cgi
|
||||
Options -Indexes +ExecCGI
|
||||
|
||||
# Putting netsaint's aliases here for now.
|
||||
Alias /netsaint/ /usr/local/netsaint/share/
|
||||
ScriptAlias /cgi-bin/netsaint/ /usr/local/netsaint/sbin/
|
||||
|
||||
ErrorLog /dev/null
|
||||
TransferLog /dev/null
|
||||
|
||||
</VirtualHost>
|
||||
END_CONF
|
||||
|
||||
}
|
||||
|
||||
$new .= " <VirtualHost";
|
||||
if ($host->{'ip'} && $host->{'web_master'}) {
|
||||
$new .= " $host->{'ip'}:80";
|
||||
}
|
||||
$new .= " $host->{'ipco'}:80>\n";
|
||||
$new .=" SetEnv LJHOME /home/lj\n";
|
||||
{
|
||||
my %fcgi = ('/home/lj/htdocs/users' => 10,
|
||||
'/home/lj/cgi-bin/log.cgi' => 4,
|
||||
'/home/lj/cgi-bin/404notfound.cgi' => 1,
|
||||
'/home/lj/htdocs/customview.cgi' => 4,
|
||||
'/home/lj/cgi-bin/bmlp.pl' => 7,
|
||||
'/home/lj/cgi-bin/sbmlp.pl' => 3,
|
||||
'/home/lj/htdocs/userpic' => 1);
|
||||
|
||||
if ($host->{'name'} eq "kenny") {
|
||||
$fcgi{'/home/lj/htdocs/users'} = 5;
|
||||
$fcgi{'/home/lj/htdocs/customview.cgi'} = 2;
|
||||
$fcgi{'/home/lj/cgi-bin/bmlp.pl'} = 4;
|
||||
$fcgi{'/home/lj/cgi-bin/sbmlp.pl'} = 2;
|
||||
$fcgi{'/home/lj/cgi-bin/log.cgi'} = 2;
|
||||
}
|
||||
foreach my $app (sort keys %fcgi)
|
||||
{
|
||||
$new .= " FastCgiServer $app -processes $fcgi{$app} -initial-env LJHOME=/home/lj\n";
|
||||
}
|
||||
}
|
||||
|
||||
########## rewrite stuff. no interpolation.
|
||||
$new .= <<'END_CONF';
|
||||
RewriteEngine on
|
||||
RewriteLog /home/lj/logs/rewrite.log
|
||||
RewriteLogLevel 0
|
||||
|
||||
RewriteCond %{HTTP_HOST} ^(www\.)?livejournal\.com$ [NC]
|
||||
RewriteRule ^/~([a-z0-9_]+)(/?.*)$ /users/$1$2 [L,PT,NS]
|
||||
|
||||
RewriteCond %{REQUEST_URI} !\.bml
|
||||
RewriteRule ^/community/([a-z0-9_]+)(/?.*)$ /users/$1$2 [L,PT,NS]
|
||||
|
||||
RewriteCond %{HTTP_HOST} ^([a-z0-9_\-]+)\.livejournal\.com$ [NC]
|
||||
RewriteCond %1 !^www$ [NC]
|
||||
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
|
||||
RewriteRule ^([a-z0-9_\-]+)\.livejournal\.com(.+) /users/$1$2 [L,PT,NS]
|
||||
|
||||
RewriteCond %{HTTP_HOST} ^(www\.)?livejournal\.com$ [NC]
|
||||
RewriteRule ^/confirm/([a-z0-9]+\.[a-z0-9]+) http://www.livejournal.com/register.bml?$1 [L,R]
|
||||
|
||||
# if they send any Host header with letters (an IP address or blank
|
||||
# is okay) then it has to be www.livejournal.com or livejournal.com
|
||||
# (optional port, too)
|
||||
RewriteCond %{HTTP_HOST} [a-z] [NC]
|
||||
RewriteCond %{HTTP_HOST} !^(www\.)?livejournal\.com(:[0-9]+)?$ [NC]
|
||||
RewriteRule . . [F]
|
||||
|
||||
END_CONF
|
||||
|
||||
$new .= <<"END_CONF";
|
||||
|
||||
AddType text/rdf rdf
|
||||
AddType text/plain TCL
|
||||
AddType application/x-httpd-cgi CGI
|
||||
|
||||
Options +ExecCGI
|
||||
|
||||
ServerName lj-$host->{'name'}.livejournal.com
|
||||
ServerAlias livejournal.com *.livejournal.com
|
||||
ServerAdmin webmaster\@livejournal.com
|
||||
DocumentRoot /home/lj/htdocs/
|
||||
ScriptAlias /cgi-bin/ /home/lj/cgi-bin/
|
||||
|
||||
ErrorDocument 403 /403.html
|
||||
END_CONF
|
||||
|
||||
if ($host->{'paid_web_slave'}) {
|
||||
$new .= " ErrorDocument 500 /500-paid.html\n";
|
||||
} else {
|
||||
$new .= " ErrorDocument 500 /500.html\n";
|
||||
}
|
||||
|
||||
$new .= <<"END_CONF";
|
||||
ErrorDocument 404 /cgi-bin/404notfound.cgi
|
||||
# RedirectMatch 301 ^/users/?\$ http://www.livejournal.com/directory.bml
|
||||
|
||||
AddType text/bml BML
|
||||
Action text/bml /cgi-bin/bmlp.pl
|
||||
AddType text/sbml SBML
|
||||
Action text/sbml /cgi-bin/sbmlp.pl
|
||||
DirectoryIndex index.html index.bml
|
||||
|
||||
SetEnvIf Request_URI "^/img/" no-log
|
||||
SetEnvIf Request_URI "^/userpic/" no-log
|
||||
SetEnvIf Request_URI "^/status" no-log
|
||||
LogFormat "%h %l %u %t \\"%r\\" %s %b \\"%{Referer}i\\" \\"%{User-Agent}i\\" \\"%{Host}i\\"" ljlog
|
||||
ErrorLog "|/usr/local/apache/bin/rotatelogs /home/lj/logs/error-$host->{'name'} 3600"
|
||||
CustomLog "|/usr/local/apache/bin/rotatelogs /home/lj/logs/access-$host->{'name'} 3600" ljlog env=!no-log
|
||||
|
||||
<Location /cgi-bin/404notfound.cgi>
|
||||
SetHandler fastcgi-script
|
||||
</Location>
|
||||
<Location /userpic>
|
||||
SetHandler fastcgi-script
|
||||
</Location>
|
||||
<Location /users>
|
||||
SetHandler fastcgi-script
|
||||
</Location>
|
||||
<Location /cgi-bin/log.cgi>
|
||||
ErrorDocument 500 /500-log.html
|
||||
SetHandler fastcgi-script
|
||||
</Location>
|
||||
<Location /cgi-bin/bmlp.pl>
|
||||
SetHandler fastcgi-script
|
||||
</Location>
|
||||
<Location /cgi-bin/sbmlp.pl>
|
||||
SetHandler fastcgi-script
|
||||
</Location>
|
||||
<Location /customview.cgi>
|
||||
SetHandler fastcgi-script
|
||||
</Location>
|
||||
<Directory /home/lj/htdocs/img>
|
||||
AllowOverride None
|
||||
Options None
|
||||
ExpiresActive on
|
||||
ExpiresByType image/gif "access plus 1 month"
|
||||
ExpiresByType image/jpeg "access plus 1 month"
|
||||
</Directory>
|
||||
|
||||
<FilesMatch "~\$">
|
||||
Deny from all
|
||||
</FilesMatch>
|
||||
|
||||
<Directory /home/lj/htdocs/inc/>
|
||||
Deny from all
|
||||
</Directory>
|
||||
|
||||
<Directory /home/lj/htdocs/admin/brad/>
|
||||
AuthUserFile /home/lj/pass-gen.txt
|
||||
AuthName "Brad only area"
|
||||
AuthType Basic
|
||||
require user bradfitz
|
||||
Options +Indexes
|
||||
</Directory>
|
||||
|
||||
<Directory /home/lj/htdocs/files/>
|
||||
Options -ExecCGI
|
||||
</Directory>
|
||||
|
||||
</VirtualHost>
|
||||
|
||||
# backup image server (load balancer will prefer thttpd/tux/etc first)
|
||||
Listen $host->{'ipco'}:8081
|
||||
NameVirtualHost $host->{'ipco'}:8081
|
||||
<VirtualHost $host->{'ipco'}:8081>
|
||||
ServerName img.livejournal.com
|
||||
DocumentRoot /home/lj/htdocs/img
|
||||
DirectoryIndex index.html
|
||||
Options -ExecCGI
|
||||
</VirtualHost>
|
||||
|
||||
# AccessFileName: The name of the file to look for in each directory
|
||||
# for access control information.
|
||||
#
|
||||
AccessFileName .htaccess
|
||||
|
||||
<Files ~ "^\\.ht">
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</Files>
|
||||
<Files ~ "~\$">
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</Files>
|
||||
<Files ~ "\\.core\$">
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</Files>
|
||||
|
||||
UseCanonicalName Off
|
||||
|
||||
<IfModule mod_mime.c>
|
||||
TypesConfig /usr/local/apache/conf/mime.types
|
||||
</IfModule>
|
||||
|
||||
## MIME
|
||||
DefaultType text/plain
|
||||
<IfModule mod_mime_magic.c>
|
||||
MIMEMagicFile /usr/local/apache/conf/magic
|
||||
</IfModule>
|
||||
|
||||
HostnameLookups Off
|
||||
|
||||
ErrorLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/error_log 86400"
|
||||
LogLevel error
|
||||
CustomLog /dev/null common
|
||||
|
||||
ServerSignature On
|
||||
|
||||
<IfModule mod_alias.c>
|
||||
Alias /icons/ "/usr/local/apache/icons/"
|
||||
<Directory "/usr/local/apache/icons">
|
||||
Options Indexes
|
||||
AllowOverride None
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</Directory>
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_autoindex.c>
|
||||
|
||||
#
|
||||
# FancyIndexing is whether you want fancy directory indexing or standard
|
||||
#
|
||||
IndexOptions FancyIndexing SuppressDescription SuppressColumnSorting FoldersFirst NameWidth=*
|
||||
|
||||
#
|
||||
# AddIcon* directives tell the server which icon to show for different
|
||||
# files or filename extensions. These are only displayed for
|
||||
# FancyIndexed directories.
|
||||
#
|
||||
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
|
||||
|
||||
AddIconByType (TXT,/icons/text.gif) text/*
|
||||
AddIconByType (IMG,/icons/image2.gif) image/*
|
||||
AddIconByType (SND,/icons/sound2.gif) audio/*
|
||||
AddIconByType (VID,/icons/movie.gif) video/*
|
||||
|
||||
AddIcon /icons/rpm.gif .rpm
|
||||
AddIcon /icons/debian.gif .deb
|
||||
AddIcon /icons/binary.gif .bin .exe
|
||||
AddIcon /icons/binhex.gif .hqx
|
||||
AddIcon /icons/tar.gif .tar
|
||||
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
|
||||
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
|
||||
AddIcon /icons/a.gif .ps .ai .eps
|
||||
AddIcon /icons/layout.gif .html .shtml .htm .pdf
|
||||
AddIcon /icons/text.gif .txt
|
||||
AddIcon /icons/c.gif .c
|
||||
AddIcon /icons/p.gif .pl .py
|
||||
AddIcon /icons/f.gif .for
|
||||
AddIcon /icons/dvi.gif .dvi
|
||||
AddIcon /icons/uuencoded.gif .uu
|
||||
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
|
||||
AddIcon /icons/tex.gif .tex
|
||||
AddIcon /icons/bomb.gif core
|
||||
|
||||
AddIcon /icons/back.gif ..
|
||||
AddIcon /icons/hand.right.gif README
|
||||
AddIcon /icons/folder.gif ^^DIRECTORY^^
|
||||
AddIcon /icons/blank.gif ^^BLANKICON^^
|
||||
|
||||
#
|
||||
# DefaultIcon is which icon to show for files which do not have an icon
|
||||
# explicitly set.
|
||||
#
|
||||
DefaultIcon /icons/unknown.gif
|
||||
ReadmeName README
|
||||
HeaderName HEADER
|
||||
IndexIgnore .??* *~ *# HEADER* RCS CVS *,v *,t
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_mime.c>
|
||||
AddEncoding x-compress Z
|
||||
AddEncoding x-gzip gz tgz
|
||||
AddType application/x-httpd-php .php
|
||||
AddType application/x-httpd-php-source .phps
|
||||
AddType application/x-tar .tgz
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_setenvif.c>
|
||||
BrowserMatch "Mozilla/2" nokeepalive
|
||||
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
|
||||
BrowserMatch "RealPlayer 4\.0" force-response-1.0
|
||||
BrowserMatch "Java/1\.0" force-response-1.0
|
||||
BrowserMatch "JDK/1\.0" force-response-1.0
|
||||
</IfModule>
|
||||
|
||||
END_CONF
|
||||
|
||||
write_file($file, $new);
|
||||
}
|
||||
13
ljcom/bin/maint/aliases.pl
Normal file
13
ljcom/bin/maint/aliases.pl
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
$maint{'makealiases'} = sub
|
||||
{
|
||||
my $dbh = LJ::get_dbh("master");
|
||||
foreach (keys %LJ::FIXED_ALIAS) {
|
||||
$dbh->do("REPLACE INTO email_aliases (alias, rcpt) VALUES (?,?)",
|
||||
undef, "$_\@$LJ::USER_DOMAIN", $LJ::FIXED_ALIAS{$_});
|
||||
}
|
||||
};
|
||||
|
||||
1;
|
||||
14
ljcom/bin/maint/clean_caches-local.pl
Normal file
14
ljcom/bin/maint/clean_caches-local.pl
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
$maint{'clean_caches_local'} = sub
|
||||
{
|
||||
my $dbh = LJ::get_db_writer();
|
||||
|
||||
my $verbose = $LJ::LJMAINT_VERBOSE;
|
||||
|
||||
print "-I- Cleaning authactions.\n";
|
||||
$dbh->do("DELETE FROM authactions WHERE datecreate < DATE_SUB(NOW(), INTERVAL 30 DAY)");
|
||||
};
|
||||
|
||||
1;
|
||||
80
ljcom/bin/maint/dirsync.pl
Normal file
80
ljcom/bin/maint/dirsync.pl
Normal file
@@ -0,0 +1,80 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
$maint{'dirsync'} = sub
|
||||
{
|
||||
use File::Copy;
|
||||
|
||||
my $FROMBASE = "/home/devftp";
|
||||
my $TOBASE = "/home/lj/htdocs";
|
||||
my $REWRITE_PERIOD = 3600*2; # for 2 hours, ftp area files can overwrite masters
|
||||
my $VERBOSE = 0;
|
||||
|
||||
print "-I- Connecting to db.\n" if ($VERBOSE);
|
||||
|
||||
my $dbr = LJ::get_db_reader();
|
||||
|
||||
print "-I- Fetching users with devftp privs.\n" if ($VERBOSE);
|
||||
my $sth = $dbr->prepare("SELECT u.user, u.userid, pm.arg FROM priv_map pm, priv_list pl, user u WHERE pl.prlid=pm.prlid AND pl.privcode='dirsync' AND pm.userid=u.userid ORDER BY u.user");
|
||||
$sth->execute;
|
||||
while (my ($user, $userid, $arg) = $sth->fetchrow_array)
|
||||
{
|
||||
print "-I- $user: $arg\n" if ($VERBOSE);
|
||||
if ($arg =~ /\.\./) { print "-E- ($user) arg contains '..', skipping!\n"; next; }
|
||||
if ($arg =~ /~/) { print "-E- ($user) arg contains '~', skipping!\n"; next; }
|
||||
my $opts;
|
||||
if ($arg =~ s/\s*\[(.+)?\]\s*$//) {
|
||||
$opts = $1;
|
||||
}
|
||||
unless ($arg =~ /^(\S+)=(\S+)$/) { print "-E- arg doesn't match \S+=\S+, skipping!\n"; next; }
|
||||
my ($from, $to) = ($1, $2);
|
||||
|
||||
$to =~ s/\0//; # fuck perl, seriously. why's a NULL in this string?
|
||||
if ($from =~ /\0/) { die "from has null (0)!\n"; }
|
||||
if ($to =~ /\0/) { die "to has null (0)!\n"; }
|
||||
|
||||
$from = "$FROMBASE/$user/$from";
|
||||
$to = "$TOBASE/$to";
|
||||
unless (-d $from) { print "-E- ($user) From directory doesn't exist: $from, skipping!\n"; next; }
|
||||
unless (-d $to) { print "-E- ($user) To directory doesn't exist: $to, skipping!\n"; next; }
|
||||
|
||||
opendir (DIR, $from);
|
||||
while (my $file = readdir DIR)
|
||||
{
|
||||
if ($file eq "." || $file eq ".." || $file =~ /~/ || length($file) > 40) { next; }
|
||||
|
||||
my $tofile = "$to/$file";
|
||||
if ($tofile =~ /\0/) { die "tofile has null (1)!\n"; }
|
||||
|
||||
my $fromfile = "$from/$file";
|
||||
if (-d $fromfile) { next; }
|
||||
unless (-f $fromfile) { next; }
|
||||
|
||||
my $fromtime = (stat($fromfile))[9];
|
||||
my $totime = (-e $tofile) ? (stat($tofile))[9] : 0;
|
||||
my $existtime = $totime - $fromtime;
|
||||
|
||||
my $allow = 0;
|
||||
if ($totime == 0) { $allow = 1; }
|
||||
elsif ($fromtime > $totime) {
|
||||
if ($existtime < $REWRITE_PERIOD) { $allow = 1; }
|
||||
elsif ($file =~ /^changelog(\.txt)?$/i ||
|
||||
$file =~ /^readme(\.txt)?$/i) { $allow = 1; }
|
||||
elsif ($opts =~ /u/) { $allow = 1; }
|
||||
}
|
||||
|
||||
if ($allow) {
|
||||
if ($fromfile =~ /\0/) { die "from has null!\n"; }
|
||||
if ($tofile =~ /\0/) { die "to has null!\n"; }
|
||||
print "-I- ($user) Copying $file ($fromfile to $tofile)\n";
|
||||
unless (copy($fromfile, $tofile)) {
|
||||
print "-E- ($user) Didn't copy! error: $!\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
1;
|
||||
259
ljcom/bin/maint/expiring.pl
Normal file
259
ljcom/bin/maint/expiring.pl
Normal file
@@ -0,0 +1,259 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
use strict;
|
||||
use vars qw(%maint);
|
||||
|
||||
$maint{'expiring'} = sub
|
||||
{
|
||||
require "$ENV{'LJHOME'}/cgi-bin/paylib.pl";
|
||||
my $dbh = LJ::get_db_writer();
|
||||
my $sth;
|
||||
|
||||
# NOTES:
|
||||
# We mail people about 10 days before, 3 days before,
|
||||
# and when their account expires. But because we have
|
||||
# to plan for this script not running all the time, here
|
||||
# are the rules/ranges we play by:
|
||||
#
|
||||
#
|
||||
# 10 8 3 2 0
|
||||
# ------------------------+-----------+.....
|
||||
# ^-----------^ ^------^ ^>>>>
|
||||
# "Expiring..." "Soon!" "Expired"
|
||||
#
|
||||
# First, expire all accounts t>=0, and email them.
|
||||
#
|
||||
# Second, mail all accounts expiring in 2-3 days,
|
||||
# provided they haven't been mailed in the past 5 days.
|
||||
# (less than 2 days would be considered too rude,
|
||||
# considering we'll be mailing them again in a day
|
||||
# or so to say it expired.)
|
||||
#
|
||||
# Third, mail all accounts expiring 8-10 days, again
|
||||
# if they haven't been mailed in past 5 days.
|
||||
|
||||
# what time is it on the database?
|
||||
my $nowu = $dbh->selectrow_array("SELECT UNIX_TIMESTAMP()");
|
||||
|
||||
if (abs($nowu - time()) > 30*60) {
|
||||
die "Database and host clock differ too much. Something might be wrong.\n";
|
||||
}
|
||||
|
||||
# do expirations
|
||||
print "-I- Doing expirations.\n";
|
||||
|
||||
# paid accounts
|
||||
$sth = $dbh->prepare("SELECT userid FROM paiduser ".
|
||||
"WHERE paiduntil < NOW() AND paiduntil > '0000-00-00'");
|
||||
$sth->execute;
|
||||
die $dbh->errstr if $dbh->err;
|
||||
while (my ($userid) = $sth->fetchrow_array)
|
||||
{
|
||||
|
||||
# about to modify account, get a lock on the user,
|
||||
# try again later if we fail to get a lock
|
||||
next unless LJ::Pay::get_lock($userid);
|
||||
|
||||
# re-verify $u object and skip if the expiration data no longer matches
|
||||
my $u = $dbh->selectrow_hashref("SELECT u.* FROM user u, paiduser pu ".
|
||||
"WHERE pu.userid=? AND u.userid=pu.userid AND u.caps&16=0 AND ".
|
||||
" pu.paiduntil < NOW() AND pu.paiduntil > '0000-00-00'",
|
||||
undef, $userid);
|
||||
unless ($u) {
|
||||
LJ::Pay::release_lock($userid);
|
||||
next;
|
||||
}
|
||||
|
||||
# expire the account
|
||||
print "Expiring $u->{'user'}...\n";
|
||||
|
||||
# remove paid time, this %res is coming from LJ::Pay::freeze_bonus
|
||||
my $bonus_ref = [];
|
||||
my $res = LJ::Pay::remove_paid_account($u, $bonus_ref);
|
||||
|
||||
# release lock on this account
|
||||
LJ::Pay::release_lock($userid);
|
||||
|
||||
# did an error occur above?
|
||||
unless ($res) {
|
||||
LJ::statushistory_add($userid, undef, "pay_modify",
|
||||
"error trying to expire paid account");
|
||||
next;
|
||||
}
|
||||
|
||||
# and send them an email, if they're not self-deleted/suspended
|
||||
if ($u->{'statusvis'} eq "V") {
|
||||
my $bonus_msg;
|
||||
if (@$bonus_ref) {
|
||||
$bonus_msg = "Additionally, the following bonus features have been deactivated " .
|
||||
"from your account. Any remaining time has been saved and will " .
|
||||
"be reapplied if you later decide to renew your paid account.\n\n" .
|
||||
join("\n", map { " - " . LJ::Pay::product_name($_->{'item'}, $_->{'size'}, undef, "short") .
|
||||
": $_->{'daysleft'} days saved" }
|
||||
sort { $a->{'item'} cmp $b->{'item'} } @$bonus_ref) . "\n\n";
|
||||
}
|
||||
|
||||
# email the user
|
||||
LJ::send_mail({ 'to' => $u->{'email'},
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => 'Paid Account Expired',
|
||||
'body' => ("Your $LJ::SITENAMESHORT paid account for user \"$u->{'user'}\" has expired.\n\n".
|
||||
$bonus_msg .
|
||||
"You can continue to use the site, but without all the paid features. If ".
|
||||
"you'd like to renew your subscription, visit:\n\n".
|
||||
" $LJ::SITEROOT/pay/\n\n".
|
||||
"And if you have any questions or requests, feel free to ask. We want ".
|
||||
"to keep you happy. :)\n\n".
|
||||
"Thanks,\n".
|
||||
"$LJ::SITENAMESHORT Team\n"),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
# bonus features
|
||||
$sth = $dbh->prepare("SELECT userid, item, size FROM paidexp " .
|
||||
"WHERE (daysleft=0 OR daysleft IS NULL) AND ".
|
||||
" expdate < NOW() AND expdate > '0000-00-00'");
|
||||
$sth->execute;
|
||||
die $dbh->errstr if $dbh->err;
|
||||
while (my ($userid, $item, $size) = $sth->fetchrow_array)
|
||||
{
|
||||
|
||||
# get a u object
|
||||
my $u = LJ::load_userid($userid, "force");
|
||||
|
||||
# going to modify this account, get a lock.
|
||||
# but try again later if we can't get one
|
||||
next unless LJ::Pay::get_lock($userid);
|
||||
|
||||
# expire the feature
|
||||
print "Expiring $u->{'user'} bonus feature: $item..\n";
|
||||
|
||||
# expire this bonus feature
|
||||
my $res = LJ::Pay::expire_bonus($userid, $item);
|
||||
|
||||
# finished doing account modifications
|
||||
LJ::Pay::release_lock($userid);
|
||||
|
||||
# an error occurred above, log to statushistory
|
||||
unless ($res) {
|
||||
LJ::statushistory_add($userid, undef, "pay_modify",
|
||||
"error trying to expire bonus feature: $item");
|
||||
next;
|
||||
}
|
||||
|
||||
# and send them an email, if they're not self-deleted/suspended
|
||||
if ($u->{'statusvis'} eq "V") {
|
||||
my $name = LJ::Pay::product_name($item, $size, undef, "short");
|
||||
LJ::send_mail({ 'to' => $u->{'email'},
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => 'Bonus Feature Expired',
|
||||
'body' => ("$u->{'name'},\n\n".
|
||||
"The following bonus feature of your $LJ::SITENAMESHORT paid " .
|
||||
"account for user \"$u->{'user'}\" has expired.\n\n" .
|
||||
" - $name\n\n" .
|
||||
"If you'd like this feature reactivated, you can " .
|
||||
"renew your subscription. To do so, visit:\n\n" .
|
||||
" $LJ::SITEROOT/pay/\n\n".
|
||||
"Thanks,\n".
|
||||
"$LJ::SITENAMESHORT Team\n"),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# do reminders
|
||||
foreach my $range ([2,3,"warn"], [8,10,"soon"]) {
|
||||
my $rlo = $range->[0];
|
||||
my $rhi = $range->[1];
|
||||
my $level = $range->[2];
|
||||
|
||||
# expiring paid accounts
|
||||
my $subject = $level eq "soon" ? "Account Expiring Soon" : "Account Expiration Warning";
|
||||
print "-I- Do $rlo-$rhi day reminders...\n";
|
||||
$sth = $dbh->prepare("SELECT u.*, pu.paiduntil, pu.paidreminder ".
|
||||
"FROM user u, paiduser pu ".
|
||||
"WHERE u.userid=pu.userid AND u.caps&16=0 AND u.caps&8 ".
|
||||
"AND u.statusvis='V' ".
|
||||
"AND pu.paiduntil BETWEEN DATE_ADD(NOW(), INTERVAL $rlo DAY) ".
|
||||
"AND DATE_ADD(NOW(), INTERVAL $rhi DAY) ".
|
||||
"AND (pu.paidreminder IS NULL ".
|
||||
"OR pu.paidreminder < DATE_SUB(NOW(), INTERVAL 5 DAY))");
|
||||
$sth->execute;
|
||||
die $dbh->errstr if $dbh->err;
|
||||
while (my $u = $sth->fetchrow_hashref)
|
||||
{
|
||||
my $uexp = LJ::mysqldate_to_time($u->{'paiduntil'});
|
||||
my $days = int(($uexp - $nowu) / 86400 + 0.5);
|
||||
print "Mailing user $u->{'user'} about $days days...\n";
|
||||
$dbh->do("UPDATE paiduser SET paidreminder=NOW() WHERE userid=?", undef, $u->{'userid'});
|
||||
LJ::send_mail({ 'to' => $u->{'email'},
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => $subject,
|
||||
'body' => ("$u->{'name'},\n\n".
|
||||
"Your $LJ::SITENAMESHORT paid account for user \"$u->{'user'}\" is expiring ".
|
||||
"in $days days, at which time it'll revert to free account status.\n\n".
|
||||
"If you're still using and enjoying the site, please renew your ".
|
||||
"subscription before it runs out and help support the project. ".
|
||||
"(Servers and bandwidth don't come free, unfortunately...)\n\n".
|
||||
" $LJ::SITEROOT/pay/\n\n".
|
||||
"And if you have any questions or requests, feel free to ask. We want ".
|
||||
"to keep you happy. :)\n\n".
|
||||
"Thanks,\n".
|
||||
"$LJ::SITENAMESHORT Team\n"),
|
||||
});
|
||||
}
|
||||
|
||||
# expiring bonus feature reminders
|
||||
my $subject = $level eq "soon" ? "Subscription Expiring Soon" : "Subscription Expiration Warning";
|
||||
$sth = $dbh->prepare("SELECT u.*, px.item, px.size, px.expdate FROM user u, paidexp px ".
|
||||
"WHERE u.userid=px.userid AND u.statusvis='V' AND ".
|
||||
" px.expdate BETWEEN DATE_ADD(NOW(), INTERVAL $rlo DAY) AND ".
|
||||
" DATE_ADD(NOW(), INTERVAL $rhi DAY)".
|
||||
" AND (px.lastmailed IS NULL ".
|
||||
" OR px.lastmailed < DATE_SUB(NOW(), INTERVAL 5 DAY))");
|
||||
$sth->execute;
|
||||
die $dbh->errstr if $dbh->err;
|
||||
while (my $u = $sth->fetchrow_hashref)
|
||||
{
|
||||
my $expdate = LJ::mysqldate_to_time($u->{'expdate'});
|
||||
my $days = int(($expdate - $nowu) / 86400 + 0.5);
|
||||
print "Mailing user $u->{'user'} about $days days...\n";
|
||||
$dbh->do("UPDATE paidexp SET lastmailed=NOW() WHERE userid=? AND item=?",
|
||||
undef, $u->{'userid'}, $u->{'item'});
|
||||
my $bonus_name = LJ::Pay::product_name($u->{'item'}, $u->{'size'}, undef, "short");
|
||||
LJ::send_mail({ 'to' => $u->{'email'},
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => $subject,
|
||||
'body' => ("$u->{'name'},\n\n".
|
||||
"Your $LJ::SITENAMESHORT paid account for user \"$u->{'user'}\" has ".
|
||||
"bonus features expiring soon. In $days days, your ".
|
||||
"$bonus_name will expire and you will be reverted to the standard ".
|
||||
"set of features included with your paid account.\n\n".
|
||||
"If you're still using and enjoying your $bonus_name, please ".
|
||||
"renew your subscription at the $LJ::SITENAMESHORT store:\n\n".
|
||||
" $LJ::SITEROOT/pay/\n\n".
|
||||
"If you have any further questions, feel free to ask. We'll do our ".
|
||||
"best to help.\n\n".
|
||||
"Thanks,\n".
|
||||
"$LJ::SITENAMESHORT Team\n"),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
print "-I- Done.\n";
|
||||
};
|
||||
|
||||
1;
|
||||
84
ljcom/bin/maint/interests.pl
Normal file
84
ljcom/bin/maint/interests.pl
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
$maint{'clean_intdups'} = sub
|
||||
{
|
||||
my $dbh = LJ::get_dbh("master");
|
||||
my ($sth);
|
||||
my @dups;
|
||||
|
||||
print "-I- Cleaning duplicates.\n";
|
||||
foreach my $let ('a'..'z', '0'..'9')
|
||||
{
|
||||
print "-I- Letter $let\n";
|
||||
$sth = $dbh->prepare("SELECT interest, COUNT(*) AS 'count' FROM interests WHERE interest LIKE '$let%' GROUP BY 1 HAVING count > 1");
|
||||
$sth->execute;
|
||||
while (($interest, $count) = $sth->fetchrow_array)
|
||||
{
|
||||
print " $interest has $count\n";
|
||||
push @dups, $interest;
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $dup (@dups) {
|
||||
print "Fixing: $dup\n";
|
||||
my $min = 0;
|
||||
my @fix = ();
|
||||
my $qdup = $dbh->quote($dup);
|
||||
$sth = $dbh->prepare("SELECT intid FROM interests WHERE interest=$qdup ORDER BY intid");
|
||||
$sth->execute;
|
||||
while (my ($id) = $sth->fetchrow_array) {
|
||||
if ($min) { push @fix, $id; }
|
||||
else { $min = $id; }
|
||||
}
|
||||
if (@fix) {
|
||||
my $in = join(",", @fix);
|
||||
|
||||
# change duplicate interests to the minimum, ignoring duplicates.
|
||||
$sth = $dbh->prepare("UPDATE IGNORE userinterest SET intid=$min WHERE intid IN ($in)");
|
||||
$sth->execute;
|
||||
|
||||
# delete ones that had duplicate key conflicts and didn't change
|
||||
$sth = $dbh->prepare("DELETE FROM userinterest WHERE intid IN ($in)");
|
||||
$sth->execute;
|
||||
|
||||
# update the intcount column
|
||||
$sth = $dbh->prepare("REPLACE INTO interests (intid, interest, intcount) SELECT intid, $qdup, COUNT(*) FROM userinterests WHERE intid=$min GROUP BY 1, 2");
|
||||
$sth->execute;
|
||||
|
||||
# delete from interests table
|
||||
$sth = $dbh->prepare("DELETE FROM interests WHERE intid IN ($in)");
|
||||
$sth->execute;
|
||||
}
|
||||
print " @fix --> $min\n";
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$maint{'clean_intcounts'} = sub
|
||||
{
|
||||
my $dbh = LJ::get_dbh("master");
|
||||
my ($sth);
|
||||
|
||||
$sth = $dbh->prepare("SELECT MAX(intid) FROM userinterests");
|
||||
$sth->execute;
|
||||
my ($max) = $sth->fetchrow_array;
|
||||
|
||||
print "Fixing intcounts, up to intid=$max\n";
|
||||
for (my $i=1; $i < $max; $i += 5000)
|
||||
{
|
||||
my $low = $i;
|
||||
my $high = $i+4999;
|
||||
print "$low..$high:\n";
|
||||
$sth = $dbh->prepare("SELECT ui.intid, i.intcount, COUNT(*) AS 'count' FROM userinterests ui, interests i WHERE i.intid=ui.intid AND ui.intid BETWEEN $low AND $high GROUP BY 1, 2 HAVING i.intcount<>COUNT(*)");
|
||||
$sth->execute;
|
||||
while (my ($intid, $wrong, $count) = $sth->fetchrow_array) {
|
||||
print " $intid: $count, not $wrong\n";
|
||||
$dbh->do("UPDATE interests SET intcount=$count WHERE intid=$intid");
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
1;
|
||||
215
ljcom/bin/maint/ljadmin.pl
Normal file
215
ljcom/bin/maint/ljadmin.pl
Normal file
@@ -0,0 +1,215 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
use SOAP::Lite;
|
||||
|
||||
sub SOAP::Transport::HTTP::Client::get_basic_credentials
|
||||
{
|
||||
return $LJ::BIGIP_USER => $LJ::BIGIP_PASS;
|
||||
}
|
||||
|
||||
$maint{'echo'} = sub
|
||||
{
|
||||
my (@args) = @_;
|
||||
print "echo: @args\n";
|
||||
};
|
||||
|
||||
$maint{'echosleep'} = sub
|
||||
{
|
||||
my ($sleep, @args) = @_;
|
||||
print "echosleep: @args\n";
|
||||
sleep $sleep;
|
||||
};
|
||||
|
||||
$maint{'debug'} = sub
|
||||
{
|
||||
my (@args) = @_;
|
||||
print "debug: @args\n";
|
||||
print "\$LJ::HOME = $LJ::HOME\n";
|
||||
print "whoami? ", `whoami`;
|
||||
print "\$< = $<, \$> = $>\n";
|
||||
print "ENV:\n";
|
||||
foreach (keys %ENV) {
|
||||
print " $_ = $ENV{$_}\n";
|
||||
}
|
||||
};
|
||||
|
||||
$maint{'apgrace'} = sub
|
||||
{
|
||||
unless ($> == 0) {
|
||||
print "Only root can restart apache\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
print "Gracefully restarting apache...\n";
|
||||
system("/usr/sbin/apachectl", "graceful");
|
||||
print "Done.\n";
|
||||
};
|
||||
|
||||
$maint{'appgrace'} = sub
|
||||
{
|
||||
unless ($> == 0) {
|
||||
print "Only root can restart apache-perl\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
print "Gracefully restarting apache-perl...\n";
|
||||
system("/usr/sbin/apache-perl-ctl", "graceful");
|
||||
print "Done.\n";
|
||||
};
|
||||
|
||||
$maint{'appss'} = sub
|
||||
{
|
||||
unless ($> == 0) {
|
||||
print "Only root can stop/start apache-perl\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
open (BC, "$ENV{'LJHOME'}/.bigip_soap.conf");
|
||||
my $line = <BC>;
|
||||
chomp $line;
|
||||
($LJ::BIGIP_HOST, $LJ::BIGIP_PORT, $LJ::BIGIP_USER, $LJ::BIGIP_PASS)
|
||||
= split(/\s+/, $line);
|
||||
close BC;
|
||||
my $soap;
|
||||
if ($LJ::BIGIP_HOST) {
|
||||
$soap = SOAP::Lite
|
||||
-> uri('urn:iControl:ITCMLocalLB/Node')
|
||||
-> readable(1)
|
||||
-> proxy("https://${LJ::BIGIP_HOST}:${LJ::BIGIP_PORT}/iControl/iControlPortal.cgi");
|
||||
}
|
||||
|
||||
my $ifconfig = `/sbin/ifconfig -a`;
|
||||
my $ip;
|
||||
if ($ifconfig =~ /addr:(10\.0\.\S+)/) {
|
||||
$ip = $1;
|
||||
}
|
||||
|
||||
my $node_config = sub {
|
||||
return 0 unless $soap && $ip;
|
||||
my $state = shift;
|
||||
$state = $state ? 1 : 0;
|
||||
|
||||
my $node_definition = { address => $ip, port => 80 };
|
||||
my $soap_response = $soap->set_state(SOAP::Data->name(node_defs => ( [$node_definition] )),
|
||||
SOAP::Data->name(state => $state));
|
||||
if ($soap_response->fault) {
|
||||
print $soap_response->faultcode, " ", $soap_response->faultstring, "\n";
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
};
|
||||
|
||||
print "Stopping & starting apache-perl...\n";
|
||||
if ($node_config->(0)) {
|
||||
print "Node disabled on BIG-IP.\n";
|
||||
}
|
||||
system("/usr/sbin/apache-perl-ctl", "stop");
|
||||
while (-e "/var/run/apache-perl.pid") {
|
||||
sleep 1;
|
||||
}
|
||||
system("/usr/sbin/apache-perl-ctl", "start");
|
||||
if ($node_config->(1)) {
|
||||
print "Node enabled on BIG-IP.\n";
|
||||
}
|
||||
print "Done.\n";
|
||||
};
|
||||
|
||||
$maint{'sshkick'} = sub
|
||||
{
|
||||
unless ($> == 0) {
|
||||
print "Only root can stop/start ssh\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
print "Stopping & starting ssh...\n";
|
||||
system("/etc/init.d/ssh", "restart");
|
||||
print "Done.\n";
|
||||
};
|
||||
|
||||
$maint{'statscaster_restart'} = sub
|
||||
{
|
||||
unless ($> == 0) {
|
||||
print "Only root can stop/start statscaster\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
print "Stopping & starting statscaster...\n";
|
||||
system("cp", "$ENV{LJHOME}/bin/lj-init.d/ljstatscasterd", "/etc/init.d/ljstatscasterd");
|
||||
system("chmod", "+x", "/etc/init.d/ljstatscasterd");
|
||||
system("/etc/init.d/ljstatscasterd", "restart");
|
||||
print "Done.\n";
|
||||
};
|
||||
|
||||
$maint{'aprestart'} = sub
|
||||
{
|
||||
unless ($> == 0) {
|
||||
print "Only root can restart apache\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
print "Restarting apache...\n";
|
||||
system("/usr/sbin/apachectl", "restart");
|
||||
print "Done.\n";
|
||||
};
|
||||
|
||||
$maint{'hupcaches'} = sub
|
||||
{
|
||||
if ($> == 0) {
|
||||
print "Don't run this as root.\n";
|
||||
return 0;
|
||||
}
|
||||
foreach my $proc (qw(404notfound.cgi users customview.cgi bmlp.pl interface))
|
||||
{
|
||||
print "$proc...";
|
||||
print `$LJ::BIN/hkill $proc | wc -l`;
|
||||
}
|
||||
};
|
||||
|
||||
$maint{'restartapps'} = sub
|
||||
{
|
||||
if ($> == 0) {
|
||||
print "Don't run this as root.\n";
|
||||
return 0;
|
||||
}
|
||||
my $pid;
|
||||
if ($pid = fork)
|
||||
{
|
||||
print "Started.\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
foreach my $proc (qw(404notfound.cgi users customview.cgi interface)) {
|
||||
system("$LJ::BIN/pkill", $proc);
|
||||
}
|
||||
};
|
||||
|
||||
$maint{'load'} = sub
|
||||
{
|
||||
print ((`w`)[0]);
|
||||
|
||||
};
|
||||
|
||||
$maint{'date'} = sub
|
||||
{
|
||||
print ((`date`)[0]);
|
||||
|
||||
};
|
||||
|
||||
$maint{'exposeconf'} = sub
|
||||
{
|
||||
print "-I- Copying configuration files to /misc/conf\n";
|
||||
my @files = qw(
|
||||
/usr/src/sys/i386/conf/KENNYSMP kernel-config.txt
|
||||
/etc/postfix/main.cf postfix-main.cf.txt
|
||||
/etc/postfix/master.cf postfix-master.cf.txt
|
||||
);
|
||||
|
||||
while (@files) {
|
||||
my $src = shift @files;
|
||||
my $dest = shift @files;
|
||||
print "$src -> $dest\n";
|
||||
system("cp", $src, "$LJ::HTDOCS/misc/conf/$dest");
|
||||
}
|
||||
print "done.\n";
|
||||
};
|
||||
10
ljcom/bin/maint/moods.pl
Normal file
10
ljcom/bin/maint/moods.pl
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
$maint{'makemoodindexes'} = sub
|
||||
{
|
||||
print "-I- Making mood index files.\n" if $VERBOSE;
|
||||
system("find $LJ::HTDOCS/img/mood/ -type d -exec makemoodindex.pl {} \\;");
|
||||
};
|
||||
|
||||
1;
|
||||
713
ljcom/bin/maint/pay.pl
Normal file
713
ljcom/bin/maint/pay.pl
Normal file
@@ -0,0 +1,713 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
use strict;
|
||||
use vars qw(%maint);
|
||||
|
||||
$maint{'pay_mail'} = sub
|
||||
{
|
||||
require "$ENV{'LJHOME'}/cgi-bin/paylib.pl";
|
||||
|
||||
my $dbh = LJ::get_db_writer();
|
||||
|
||||
my $sth;
|
||||
my $now = time();
|
||||
|
||||
# we don't mail receipts (yet?) to non-users paying, or carts w/ no price (eg coppa verifications)
|
||||
$dbh->do("UPDATE payments SET mailed='X' WHERE mailed='N' AND forwhat='cart' AND (userid=0 OR amount=0)");
|
||||
|
||||
$sth = $dbh->prepare("SELECT u.user, u.email, u.name, p.* FROM payments p, user u ".
|
||||
"WHERE p.userid=u.userid AND p.mailed='N' ".
|
||||
"AND (IFNULL(p.giveafter,0) = 0 OR $now >= p.giveafter)");
|
||||
$sth->execute;
|
||||
die $dbh->errstr if $dbh->err;
|
||||
while (my $p = $sth->fetchrow_hashref)
|
||||
{
|
||||
|
||||
my $note_msg = sub {
|
||||
return "" unless $p->{'notes'};
|
||||
|
||||
# this will get run through Text::Wrap when it's emailed
|
||||
my $notes = $p->{'notes'};
|
||||
$notes =~ s/\n/\n /g;
|
||||
|
||||
return "Here are some notes associated with this payment:\n\n" .
|
||||
" $notes\n\n";
|
||||
};
|
||||
|
||||
if ($p->{'forwhat'} eq "cart") {
|
||||
my $cart = "$p->{'payid'}-$p->{'anum'}";
|
||||
LJ::send_mail({
|
||||
'to' => $p->{'email'},
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => "Payment received (Order $cart)",
|
||||
'body' => ("Your payment of \$$p->{'amount'} for order $cart was received and the order is now being processed.\n\n".
|
||||
"For your reference, you can view the order here:\n\n".
|
||||
" $LJ::SITEROOT/pay/?c=$cart\n\n".
|
||||
$note_msg->() .
|
||||
"We thank you for supporting the site,\n\n".
|
||||
"$LJ::SITENAMESHORT Team"
|
||||
)});
|
||||
$dbh->do("UPDATE payments SET mailed='Y' WHERE payid=$p->{'payid'}");
|
||||
next;
|
||||
}
|
||||
|
||||
if ($p->{'forwhat'} eq "rename") {
|
||||
my $token = LJ::Pay::new_rename_token($dbh, $p->{'payid'})
|
||||
or next;
|
||||
|
||||
LJ::send_mail({
|
||||
'to' => $p->{'email'},
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => "Rename Token",
|
||||
'body' => ("Here is the username rename token you purchased:\n\n".
|
||||
" $token\n\n".
|
||||
"You can use it here:\n\n".
|
||||
" $LJ::SITEROOT/rename/use.bml?token=$token\n\n".
|
||||
"For more information regarding account renames, read:\n\n".
|
||||
" $LJ::SITEROOT/rename/\n\n".
|
||||
$note_msg->() .
|
||||
"$LJ::SITENAMESHORT Team"
|
||||
),
|
||||
});
|
||||
|
||||
$dbh->do("UPDATE payments SET mailed='Y', used='Y' WHERE payid=$p->{'payid'}");
|
||||
next;
|
||||
}
|
||||
|
||||
my $howmany = $p->{'months'} == 99 ? "UNLIMITED" : $p->{'months'};
|
||||
print "$p->{'payid'}: Mailing $p->{'email'} ($howmany) ...\n";
|
||||
$p->{'notes'} =~ s/\r//g;
|
||||
|
||||
my $msg;
|
||||
$msg .= "$p->{'name'} ...\n\n";
|
||||
$msg .= "Your $LJ::SITENAMESHORT payment of \$$p->{'amount'} was received $p->{'daterecv'}";
|
||||
if ($p->{'forwhat'} eq "account") {
|
||||
$msg .= " and your account has been credited with $howmany more months";
|
||||
}
|
||||
$msg .= ".\n\n";
|
||||
|
||||
$msg .= $note_msg->();
|
||||
|
||||
$msg .= "We thank you for supporting the site,\n\n$LJ::SITENAMESHORT Team";
|
||||
|
||||
LJ::send_mail({
|
||||
'to' => $p->{'email'},
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => "$LJ::SITENAMESHORT Payment Received -- \#$p->{'payid'}",
|
||||
'body' => $msg,
|
||||
});
|
||||
|
||||
$dbh->do("UPDATE payments SET mailed='Y' WHERE payid=$p->{'payid'}");
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$maint{'pay_updateaccounts'} = sub
|
||||
{
|
||||
require "$ENV{'LJHOME'}/cgi-bin/paylib.pl";
|
||||
|
||||
my $dbh = LJ::get_db_writer()
|
||||
or die "Could not contact global database master";
|
||||
|
||||
# for some reason, use of purchased codes doesn't always apply payment
|
||||
# to account when it's created. some code path involved when paypal
|
||||
# servers are being lame isn't as robust, or something. in any case,
|
||||
# this query fixes it:
|
||||
my $sth = $dbh->prepare
|
||||
("SELECT ac.rcptid, p.payid ".
|
||||
"FROM acctcode ac, acctpay ap, payments p ".
|
||||
"WHERE p.userid=0 AND p.used='N' AND p.payid=ap.payid AND ".
|
||||
" ap.acid=ac.acid AND ac.rcptid <> 0");
|
||||
$sth->execute;
|
||||
while (my ($userid, $payid) = $sth->fetchrow_array) {
|
||||
$dbh->do("UPDATE payments SET userid=$userid WHERE payid=$payid AND userid=0");
|
||||
print "Fix payid=$payid to userid=$userid.\n";
|
||||
}
|
||||
|
||||
# and now, back to what this maint task is supposed to do:
|
||||
my $now = time();
|
||||
$sth = $dbh->prepare("SELECT payid, userid, months, forwhat, amount, method, datesent ".
|
||||
"FROM payments WHERE used='N' ".
|
||||
"AND (IFNULL(giveafter,0) = 0 OR $now >= giveafter)");
|
||||
$sth->execute;
|
||||
die $dbh->errstr if $dbh->err;
|
||||
my @used = ();
|
||||
while (my $p = $sth->fetchrow_hashref)
|
||||
{
|
||||
my $userid = $p->{'userid'};
|
||||
|
||||
# check userids of all the affected clusterids before deciding whether to process this payment
|
||||
my %userids = $userid ? ($userid => 1) : ();
|
||||
if ($p->{'forwhat'} eq 'cart') {
|
||||
my $s = $dbh->prepare("SELECT rcptid FROM payitems WHERE payid=? AND rcptid>0");
|
||||
$s->execute($p->{'payid'});
|
||||
die $dbh->errstr if $dbh->err;
|
||||
while (my $uid = $s->fetchrow_array) {
|
||||
$userids{$uid} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (%userids) {
|
||||
# call into LJ::load_userids_multi() to get clusterids for these users
|
||||
# -- cheap because we load all payment userids later during processing
|
||||
|
||||
my $users = LJ::load_userids(keys %userids);
|
||||
|
||||
# verify we can get all of the handles necessary to complete this request
|
||||
my $dirty = 0;
|
||||
foreach (values %$users) {
|
||||
$dirty = $_->{clusterid}, last unless $_->writer;
|
||||
}
|
||||
|
||||
if ($dirty) {
|
||||
print "Cluster $dirty unreachable, skipping payment: $p->{payid}\n";
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
print "Payment: $p->{'payid'} ($p->{'forwhat'})\n";
|
||||
|
||||
# mail notification of large orders... but only if it was automatically processed
|
||||
if ($LJ::ACCOUNTS_EMAIL && $LJ::LARGE_ORDER_NOTIFY &&
|
||||
($p->{'method'} eq "cc" || $p->{'method'} eq "paypal") &&
|
||||
$p->{'amount'} > $LJ::LARGE_ORDER_NOTIFY) {
|
||||
|
||||
my $dollars = sub { sprintf("\$%.02f", shift()) };
|
||||
print "Sending large order notification: " . $dollars->($p->{'amount'}) . "\n";
|
||||
|
||||
LJ::send_mail({
|
||||
'to' => $LJ::ACCOUNTS_EMAIL,
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => "Large order processed: " . $dollars->($p->{'amount'}) .
|
||||
" [payid: $p->{'payid'}]",
|
||||
'body' => "This warning has been sent because the following order of over " .
|
||||
$dollars->($LJ::LARGE_ORDER_NOTIFY) .
|
||||
" has been processed on $LJ::SITENAMESHORT.\n\n" .
|
||||
|
||||
" Amount: " . $dollars->($p->{'amount'}) . "\n" .
|
||||
" Payid: $p->{'payid'}\n" .
|
||||
" Method: $p->{'method'}\n" .
|
||||
" Date Sent: $p->{'datesent'}\n\n"
|
||||
});
|
||||
}
|
||||
|
||||
# park this payment as used
|
||||
push @used, $p->{'payid'};
|
||||
|
||||
# if a cart, mark each item in the cart as ready to be processed,
|
||||
# then we'll do that below.
|
||||
if ($p->{'forwhat'} eq "cart") {
|
||||
$dbh->do("UPDATE payitems SET status='pend' WHERE ".
|
||||
"payid=? AND status='cart'", undef, $p->{'payid'});
|
||||
|
||||
next;
|
||||
}
|
||||
|
||||
### legacy support from here on.
|
||||
|
||||
# needs to be for a user
|
||||
next unless $userid;
|
||||
|
||||
# if permanent account, ignore this legacy (non-cart) payment
|
||||
my $u = LJ::load_userid($userid);
|
||||
next if $u->{'caps'} & (1 << $LJ::Pay::capinf{'perm'}->{'bit'});
|
||||
|
||||
# if there is an error adding paid months, remove from used list
|
||||
# so we'll try again later
|
||||
unless (LJ::Pay::add_paid_months($userid, $p->{'months'})) {
|
||||
pop @used;
|
||||
}
|
||||
}
|
||||
|
||||
# @used is only populated in legacy (non-cart) case
|
||||
if (@used) {
|
||||
my $usedin = join(", ", @used);
|
||||
$dbh->do("UPDATE payments SET used='Y' WHERE payid IN ($usedin)");
|
||||
}
|
||||
|
||||
my %pay;
|
||||
my $get_payment = sub {
|
||||
my $id = shift;
|
||||
return $pay{$id} if $pay{$id};
|
||||
return $pay{$id} =
|
||||
$dbh->selectrow_hashref("SELECT * FROM payments WHERE payid=?",
|
||||
undef, $id);
|
||||
};
|
||||
|
||||
# get pending cart items
|
||||
my %payitems = ( 'paidacct' => [], 'other' => [] );
|
||||
$sth = $dbh->prepare("SELECT * FROM payitems WHERE status='pend'");
|
||||
$sth->execute;
|
||||
while (my $pi = $sth->fetchrow_hashref) {
|
||||
my $key = $pi->{'item'} eq 'perm' ? 'perm' :
|
||||
$pi->{'item'} eq 'paidacct' ? 'paidacct' : 'other';
|
||||
push @{$payitems{$key}}, $pi;
|
||||
}
|
||||
my %bonus_failure = ();
|
||||
|
||||
# paid accounts are special because they have to apply before bonus features
|
||||
foreach my $pi (@{$payitems{'perm'}}, @{$payitems{'paidacct'}}, @{$payitems{'other'}}) {
|
||||
next if $pi->{'giveafter'} > $now; # delayed payment
|
||||
|
||||
my $pp = $get_payment->($pi->{'payid'});
|
||||
my $bu = LJ::load_userid($pp->{'userid'}); # buying user, no force needed
|
||||
|
||||
my $email = $pi->{'rcptemail'};
|
||||
my $ru; # rcpt user
|
||||
if ($pi->{'rcptid'}) {
|
||||
$ru = LJ::load_userid($pi->{'rcptid'}, "force");
|
||||
$email = $ru->{'email'};
|
||||
}
|
||||
|
||||
# optional gift header
|
||||
my $msg;
|
||||
if ($bu && $bu->{'userid'} != $pi->{'rcptid'}) {
|
||||
if ($pi->{'anon'}) {
|
||||
$msg .= "(the following is an anonymous gift)\n\n"
|
||||
} else {
|
||||
$msg .= "(the following is a gift from $LJ::SITENAMESHORT user \"$bu->{'user'}\")\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
my ($token, $tokenid);
|
||||
my $close = sub {
|
||||
$dbh->do("UPDATE payitems SET status='done', token=?, tokenid=? ".
|
||||
"WHERE piid=? AND status='pend'", undef, $token,
|
||||
$tokenid, $pi->{'piid'});
|
||||
};
|
||||
|
||||
# paid/perm accounts
|
||||
if ($pi->{'item'} eq "paidacct" || $pi->{'item'} eq "perm") {
|
||||
my $isacct = $pi->{'item'} eq "paidacct";
|
||||
|
||||
my $has_perm = $ru && $ru->{'caps'} & (1 << $LJ::Pay::capinf{'perm'}->{'bit'});
|
||||
|
||||
# send 'em a token
|
||||
if ($pi->{'rcptid'} == 0 || $has_perm) { # rcpt is an email address, or perm acct
|
||||
$token = LJ::acct_code_generate($bu ? $bu->{userid} : 0);
|
||||
my ($acid, $auth) = LJ::acct_code_decode($token);
|
||||
$dbh->do("INSERT INTO acctpayitem (piid, acid) VALUES (?,?)",
|
||||
undef, $pi->{'piid'}, $acid);
|
||||
|
||||
$tokenid = $acid;
|
||||
|
||||
my $what;
|
||||
if ($isacct) {
|
||||
$what = "$pi->{'qty'} month(s) of paid account time";
|
||||
} else {
|
||||
$what = "a permanent account";
|
||||
}
|
||||
|
||||
$msg .= "The following code will give $what to any $LJ::SITENAMESHORT account:\n\n";
|
||||
$msg .= " $token\n\n";
|
||||
$msg .= "To apply it to an existing account, visit:\n\n";
|
||||
$msg .= " $LJ::SITEROOT/paidaccounts/apply.bml?code=$token\n\n";
|
||||
$msg .= "To create a new account using it, visit:\n\n";
|
||||
$msg .= " $LJ::SITEROOT/create.bml?code=$token\n\n";
|
||||
|
||||
LJ::send_mail({
|
||||
'to' => $email,
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => $isacct ? "Paid account" : "Permanent account",
|
||||
'body' => $msg,
|
||||
});
|
||||
$close->();
|
||||
# don't need to release lock, no rcptid
|
||||
next;
|
||||
}
|
||||
|
||||
# just set it up now, and tell them it's done.
|
||||
# no need to release lock since no $ru anyway
|
||||
next unless $ru;
|
||||
|
||||
my $mo;
|
||||
$mo = $pi->{'qty'} if $isacct;
|
||||
$mo = 99 if $pi->{'item'} eq "perm";
|
||||
my $bonus_ref = [];
|
||||
|
||||
# modifying paid account status, need to get a lock on the account,
|
||||
# try again later if we fail to get a lock
|
||||
next unless LJ::Pay::get_lock($ru);
|
||||
|
||||
my $res = LJ::Pay::add_paid_months($ru->{'userid'}, $mo, $bonus_ref);
|
||||
|
||||
# finished modifying account, can unconditionally release lock and finish payitem now
|
||||
LJ::Pay::release_lock($ru);
|
||||
|
||||
# some sort of error occurred, log to payvars and try again later
|
||||
unless ($res) {
|
||||
LJ::Pay::payvar_append($pi->{'payid'}, "error",
|
||||
"[" . LJ::mysql_time() . "] unable to apply: item=$pi->{'item'}, qty=$pi->{'qty'}.");
|
||||
next;
|
||||
}
|
||||
|
||||
# account changes were successful: close transaction, only need to send email now
|
||||
$close->();
|
||||
|
||||
# finish composing email to send to user
|
||||
my $bonus_added;
|
||||
if (@$bonus_ref) {
|
||||
$bonus_added = "Additionally, the following previously deactivated bonus features\n" .
|
||||
"have been reactivated so you can use the time remaining on them:\n\n" .
|
||||
join("\n", map { " - " . LJ::Pay::product_name($_->{'item'}, $_->{'size'}, undef, "short") .
|
||||
": $_->{'daysleft'} days applied" }
|
||||
sort { $a->{'item'} cmp $b->{'item'} } @$bonus_ref) .
|
||||
"\n\n";
|
||||
}
|
||||
|
||||
if ($isacct) {
|
||||
$msg .= "$mo months of paid account time have been added to your $LJ::SITENAMESHORT account for user \"$ru->{'user'}\".\n\n$bonus_added$LJ::SITENAMESHORT Team";
|
||||
} else {
|
||||
$msg .= "Your $LJ::SITENAMESHORT account \"$ru->{'user'}\" has been upgraded to a permanent account.\n\n$bonus_added$LJ::SITENAMESHORT Team";
|
||||
}
|
||||
|
||||
# send notification email
|
||||
LJ::send_mail({
|
||||
'to' => $email,
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => $isacct ? "Paid Account" : "Permanent Account",
|
||||
'body' => $msg,
|
||||
});
|
||||
|
||||
next;
|
||||
}
|
||||
|
||||
# rename tokens
|
||||
elsif ($pi->{'item'} eq "rename") {
|
||||
next unless ($token, $tokenid) = LJ::Pay::new_rename_token($dbh, $pp->{'payid'});
|
||||
|
||||
# send email notification
|
||||
LJ::send_mail({
|
||||
'to' => $email,
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => "Rename Token",
|
||||
'body' => "${msg}$LJ::SITENAMESHORT username rename token:\n\n".
|
||||
" $token\n\n".
|
||||
"You can use it here:\n\n".
|
||||
" $LJ::SITEROOT/rename/use.bml?token=$token\n\n".
|
||||
"For more information regarding account renames, read:\n\n".
|
||||
" $LJ::SITEROOT/rename/\n\n".
|
||||
"$LJ::SITENAMESHORT Team",
|
||||
});
|
||||
|
||||
$close->();
|
||||
next;
|
||||
}
|
||||
|
||||
# clothing items
|
||||
elsif ($pi->{'item'} eq "clothes") {
|
||||
$dbh->do("INSERT IGNORE INTO shipping (payid, status, dateready) VALUES (?, 'needs', NOW())",
|
||||
undef, $pp->{'payid'}) and $close->();
|
||||
next;
|
||||
}
|
||||
|
||||
# coupons
|
||||
elsif ($pi->{'item'} eq "coupon") {
|
||||
|
||||
# subitem used to be type-dollaramount, but that was redundant
|
||||
my ($type) = split('-', $pi->{'subitem'});
|
||||
|
||||
# If amt < 0, this item is a previously purchased coupon being applied
|
||||
# to this cart. So we shouldn't generate a new tokenid for it, especially
|
||||
# since it will have rcptid=0, so we wouldn't know where to mail it anyway.
|
||||
if ($type eq 'dollaroff' && $pi->{'amt'} > 0) {
|
||||
|
||||
($tokenid, $token) =
|
||||
LJ::Pay::new_coupon("dollaroff", $pi->{'amt'}, $pi->{'rcptid'}, $pp->{'payid'});
|
||||
|
||||
# if there was an error, try again later
|
||||
next unless $tokenid;
|
||||
|
||||
LJ::send_mail({
|
||||
'to' => $email,
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => "Coupon Purchase",
|
||||
'body' => "${msg}$LJ::SITENAMESHORT coupon code:\n\n".
|
||||
" $token\n\n".
|
||||
"You can redeem it for \$$pi->{amt} USD in $LJ::SITENAMESHORT merchandise and/or services:\n\n".
|
||||
"$LJ::SITENAMESHORT store:\n" .
|
||||
" - $LJ::SITEROOT/store/\n\n" .
|
||||
"$LJ::SITENAMESHORT services:\n" .
|
||||
" - $LJ::SITEROOT/pay/\n\n" .
|
||||
|
||||
"NOTE: Your coupon is only valid for one use, so be sure that your order's " .
|
||||
"value is greater than or equal to \$$pi->{amt} USD.\n\n" .
|
||||
|
||||
"$LJ::SITENAMESHORT Team",
|
||||
});
|
||||
|
||||
# close, but preserve token info
|
||||
} else {
|
||||
($token, $tokenid) = ($pi->{'token'}, $pi->{'tokenid'});
|
||||
}
|
||||
$close->();
|
||||
next;
|
||||
}
|
||||
|
||||
# bonus features
|
||||
elsif (LJ::Pay::is_bonus($pi)) {
|
||||
|
||||
# if a bonus item of this type failed to apply, don't try to apply any more
|
||||
next if exists $bonus_failure{"$pi->{'payid'}-$pi->{'item'}-$pi->{'subitem'}"};
|
||||
|
||||
# get a lock since we're about to modify their account,
|
||||
# try again later if we can't get a lock
|
||||
next unless LJ::Pay::get_lock($ru);
|
||||
|
||||
# apply the bonus item to the recipient user's account
|
||||
my $res = LJ::Pay::apply_bonus_item($ru, $pi);
|
||||
|
||||
# release lock and close regardless of results of operation
|
||||
LJ::Pay::release_lock($ru);
|
||||
|
||||
# if an error, log to payvars (call above also logged to statushistory) and skip the email
|
||||
unless ($res) {
|
||||
LJ::Pay::payvar_append($pi->{'payid'}, "error",
|
||||
"[" . LJ::mysql_time() . "] unable to apply: item=$pi->{'item'}, size=" .
|
||||
(split("-", $pi->{'subitem'}))[0] . ", qty=$pi->{'qty'}. invalid cart?");
|
||||
|
||||
# if there was a failure, all bonus items of this type were marked
|
||||
# as failed, so we shouldn't try to process any more of them
|
||||
$bonus_failure{"$pi->{'payid'}-$pi->{'item'}-$pi->{'subitem'}"}++;
|
||||
|
||||
next;
|
||||
}
|
||||
|
||||
# at this point time is applied, just need to send mail. so close.
|
||||
$close->();
|
||||
|
||||
# send notification email to user
|
||||
my $name = LJ::Pay::product_name($pi);
|
||||
LJ::send_mail({
|
||||
'to' => $email,
|
||||
'from' => $LJ::ACCOUNTS_EMAIL,
|
||||
'fromname' => $LJ::SITENAMESHORT,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => $name,
|
||||
'body' => "${msg}Your $LJ::SITENAMESHORT account for user \"$ru->{'user'}\" has been " .
|
||||
"credited with the following bonus feature:\n\n" .
|
||||
" - $name\n\n" .
|
||||
"Your account has been updated so you can use your new feature immediately.\n\n" .
|
||||
"$LJ::SITENAMESHORT Team"
|
||||
});
|
||||
|
||||
next;
|
||||
|
||||
# just close -- shipping, coppa, etc
|
||||
} else {
|
||||
$close->();
|
||||
next;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$maint{'pay_lookupstates'} = sub
|
||||
{
|
||||
require "$ENV{'LJHOME'}/cgi-bin/paylib.pl";
|
||||
require "$ENV{'LJHOME'}/cgi-bin/statslib.pl";
|
||||
|
||||
my $get_dbr = sub {
|
||||
my @roles = ('slow');
|
||||
push @roles, ('slave', 'master') unless $LJ::STATS_FORCE_SLOW;
|
||||
return LJ::get_dbh({raw=>1}, @roles)
|
||||
or die "couldn't connect to database";
|
||||
};
|
||||
|
||||
my $dbr = $get_dbr->();
|
||||
|
||||
# see where we got to on our last run
|
||||
my $min_payid = $dbr->selectrow_array("SELECT value FROM blobcache WHERE bckey='pay_lookupstates_pos'")+0;
|
||||
my $max_payid = $dbr->selectrow_array("SELECT MAX(payid) FROM payments")+0;
|
||||
my $to_do = $max_payid - $min_payid;
|
||||
|
||||
print " -I- $to_do rows to process... ";
|
||||
unless ($to_do) {
|
||||
print "done\n\n";
|
||||
return;
|
||||
}
|
||||
print "\n";
|
||||
|
||||
# we'll call into LJ::Stats since it has handy functions
|
||||
my $blocks = LJ::Stats::num_blocks($to_do);
|
||||
|
||||
# get some userprop ids
|
||||
my $propid = LJ::get_prop("user", "sidx_loc")->{id};
|
||||
|
||||
foreach my $block (1..$blocks) {
|
||||
my ($low, $high) = LJ::Stats::get_block_bounds($block, $min_payid);
|
||||
print LJ::Stats::block_status_line($block, $blocks);
|
||||
|
||||
# make sure our database handles aren't stale
|
||||
$LJ::DBIRole->clear_req_cache();
|
||||
$dbr = $get_dbr->()
|
||||
or die "Couldn't connect to global db reader";
|
||||
|
||||
# find all payids that don't have a corresponding paystate row
|
||||
my $rows = $dbr->selectall_arrayref
|
||||
("SELECT p.payid, p.userid FROM payments p " .
|
||||
"LEFT JOIN paystates s ON s.payid=p.payid " .
|
||||
"WHERE s.payid IS NULL AND p.userid > 0 " .
|
||||
"AND p.payid BETWEEN $low AND $high");
|
||||
|
||||
next unless @$rows; # probably won't happen
|
||||
|
||||
my %payids_of_userid = (); # userid => [ payids ]
|
||||
foreach (@$rows) {
|
||||
my ($payid, $userid) = @$_;
|
||||
push @{$payids_of_userid{$userid}}, $payid;
|
||||
}
|
||||
my @userids = keys %payids_of_userid;
|
||||
|
||||
my $userid_bind = join(",", map { "?" } @userids);
|
||||
my $st_data = $dbr->selectall_arrayref
|
||||
("SELECT userid, value FROM userprop " .
|
||||
"WHERE upropid=? AND userid IN ($userid_bind)",
|
||||
undef, $propid, @userids);
|
||||
|
||||
# save userprop data for setting later
|
||||
my %state_of_userid = map { $_ => "??" } @userids;
|
||||
foreach (@$st_data) {
|
||||
my ($userid, $value) = @$_;
|
||||
|
||||
my ($ctry, $st) = LJ::Pay::check_country_state((split("-", $value))[0,1]);
|
||||
|
||||
# only care about states of 'US'
|
||||
$state_of_userid{$userid} = $ctry || '??';
|
||||
$state_of_userid{$userid} .= "-" . ($st || '??') if $ctry eq 'US';
|
||||
}
|
||||
|
||||
# save results in DB
|
||||
my @vals = ();
|
||||
my $bind = "";
|
||||
while (my ($userid, $state) = each %state_of_userid) {
|
||||
foreach (@{$payids_of_userid{$userid}}) {
|
||||
push @vals, $_ => $state;
|
||||
$bind .= "(?,?),";
|
||||
}
|
||||
}
|
||||
chop $bind;
|
||||
|
||||
my $dbh = LJ::get_db_writer();
|
||||
$dbh->do("REPLACE INTO paystates VALUES $bind", undef, @vals);
|
||||
die "ERROR: " . $dbh->errstr if $dbh->err;
|
||||
|
||||
# now save where we got to for subsequent runs
|
||||
$dbh->do("REPLACE INTO blobcache (bckey, dateupdate, value) " .
|
||||
"VALUES ('pay_lookupstates_pos', NOW(), ?)",
|
||||
undef, $max_payid);
|
||||
die "ERROR: " . $dbh->errstr if $dbh->err;
|
||||
}
|
||||
|
||||
# we're all done
|
||||
print " -I- Processed $to_do rows... done\n\n";
|
||||
};
|
||||
|
||||
$maint{'pay_unreserve'} = sub
|
||||
{
|
||||
use strict;
|
||||
require "$ENV{'LJHOME'}/cgi-bin/ljlib.pl";
|
||||
|
||||
print "Unreserving inventory...\n";
|
||||
|
||||
my $dbh = LJ::get_db_writer()
|
||||
or die "couldn't get master db handle";
|
||||
|
||||
my $sth = $dbh->prepare(qq{
|
||||
SELECT pi.* FROM payitems pi, payments p
|
||||
WHERE pi.payid=p.payid
|
||||
AND pi.qty_res > 0 AND pi.status='cart' AND p.mailed='C'
|
||||
AND (
|
||||
(p.method='cc' and p.datesent < DATE_SUB(NOW(), INTERVAL 3 DAY))
|
||||
OR
|
||||
(p.datesent < DATE_SUB(NOW(), INTERVAL 12 DAY))
|
||||
)
|
||||
});
|
||||
die $dbh->errstr if $dbh->err;
|
||||
$sth->execute;
|
||||
|
||||
while (my $it = $sth->fetchrow_hashref) {
|
||||
print "$it->{'piid'}: $it->{'item'} $it->{'subitem'} $it->{'qty_res'}\n";
|
||||
|
||||
$dbh->do("UPDATE inventory SET avail=avail+? WHERE item=? AND subitem=?",
|
||||
undef, $it->{'qty_res'}, $it->{'item'}, $it->{'subitem'});
|
||||
die $dbh->errstr if $dbh->err;
|
||||
|
||||
$dbh->do("UPDATE payitems SET qty_res=0 WHERE piid=?", undef, $it->{'piid'});
|
||||
die $dbh->errstr if $dbh->err;
|
||||
}
|
||||
};
|
||||
|
||||
$maint{'pay_shipping_notify'} = sub
|
||||
{
|
||||
use strict;
|
||||
require "$ENV{'LJHOME'}/cgi-bin/ljlib.pl";
|
||||
|
||||
die "no shipping email"
|
||||
unless $LJ::SHIPPING_EMAIL;
|
||||
die "no shipping contact email"
|
||||
unless $LJ::SHIPPING_CONTACT_EMAIL;
|
||||
|
||||
my $dbh = LJ::get_db_writer()
|
||||
or die "couldn't get master db handle";
|
||||
|
||||
my ($ct, $min_date) =
|
||||
$dbh->selectrow_array("SELECT COUNT(*), MIN(dateready) " .
|
||||
"FROM shipping WHERE status='needs'");
|
||||
|
||||
LJ::send_mail({
|
||||
'to' => $LJ::SHIPPING_EMAIL,
|
||||
'from' => $LJ::ADMIN_EMAIL,
|
||||
'fromname' => $LJ::SITENAME,
|
||||
'wrap' => 1,
|
||||
'charset' => 'utf-8',
|
||||
'subject' => "$ct Outstanding $LJ::SITENAME Merchandise Orders",
|
||||
'body' =>
|
||||
"There are currently $ct outstanding $LJ::SITENAME merchandise orders in need of shipping. " .
|
||||
"The oldest of which became ready at $min_date.\n\n" .
|
||||
|
||||
"Visit the following URL for details about currently outstanding orders. Please print all " .
|
||||
"invoices and include a copy of each order's invoice with its shipment, which should be " .
|
||||
"the cheaper of UPS Ground or FedEx Ground.\n\n" .
|
||||
|
||||
" $LJ::SITEROOT/admin/accounts/shipping_labels.bml\n\n" .
|
||||
|
||||
"As orders are shipped, please enter their order numbers at the following URL so that " .
|
||||
"$LJ::SITENAME\'s cart system will be able to stop selling merchandise as supplies run out.\n\n" .
|
||||
|
||||
" $LJ::SITEROOT/admin/accounts/shipping_finish.bml\n\n" .
|
||||
|
||||
"Please contact $LJ::SHIPPING_CONTACT_EMAIL directly with any questions or problems.\n\n" .
|
||||
|
||||
"Regards,\n" .
|
||||
"$LJ::SITENAME Team\n",
|
||||
});
|
||||
|
||||
print " -I- Emailed $LJ::SHIPPING_EMAIL\n\n";
|
||||
};
|
||||
|
||||
1;
|
||||
45
ljcom/bin/maint/stats-local.pl
Normal file
45
ljcom/bin/maint/stats-local.pl
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
use strict;
|
||||
use vars qw(%maint);
|
||||
|
||||
$maint{'genstatslocal'} = sub
|
||||
{
|
||||
my @which = @_;
|
||||
|
||||
unless (@which) { @which = qw(singles); }
|
||||
my %do = map { $_, 1, } @which;
|
||||
|
||||
my %to_pop;
|
||||
|
||||
LJ::load_props("user");
|
||||
|
||||
if ($do{'singles'}) {
|
||||
my $dbr = LJ::get_db_reader();
|
||||
my $propid = $dbr->selectrow_array("SELECT upropid FROM userproplist WHERE name='single_status'");
|
||||
my $ct = $dbr->selectrow_array("SELECT COUNT(*) FROM userprop WHERE upropid=$propid");
|
||||
$to_pop{'singles'}->{'total'} = $ct;
|
||||
}
|
||||
|
||||
# copied from stats.pl:
|
||||
my $dbh = LJ::get_db_writer();
|
||||
foreach my $cat (keys %to_pop)
|
||||
{
|
||||
print " dumping $cat stats\n";
|
||||
my $qcat = $dbh->quote($cat);
|
||||
$dbh->do("DELETE FROM stats WHERE statcat=$qcat");
|
||||
if ($dbh->err) { die $dbh->errstr; }
|
||||
foreach (sort keys %{$to_pop{$cat}}) {
|
||||
my $qkey = $dbh->quote($_);
|
||||
my $qval = $to_pop{$cat}->{$_}+0;
|
||||
$dbh->do("REPLACE INTO stats (statcat, statkey, statval) VALUES ($qcat, $qkey, $qval)");
|
||||
if ($dbh->err) { die $dbh->errstr; }
|
||||
}
|
||||
}
|
||||
|
||||
print "-I- Done.\n";
|
||||
|
||||
};
|
||||
|
||||
1;
|
||||
247
ljcom/bin/maint/syncweb.pl
Normal file
247
ljcom/bin/maint/syncweb.pl
Normal file
@@ -0,0 +1,247 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
use Sys::Hostname;
|
||||
use Digest::MD5;
|
||||
use File::Copy;
|
||||
|
||||
$maint{'syncsoon'} = sub
|
||||
{
|
||||
if ($> == 0) {
|
||||
print "Don't run this as root.\n";
|
||||
return 0;
|
||||
}
|
||||
open (F, ">/home/lj/var/do-syncweb");
|
||||
print F "this file flags to syncweb to sync later.\n";
|
||||
close F;
|
||||
|
||||
print "Flag set.\n";
|
||||
return 1;
|
||||
};
|
||||
|
||||
$maint{'syncweb'} = sub
|
||||
{
|
||||
my $arg = shift;
|
||||
|
||||
# update inc files on disk if necessary
|
||||
if ($LJ::FILEEDIT_VIA_DB) {
|
||||
my $syncfile = "$LJ::HOME/temp/last-fileedit-sync";
|
||||
open (F, $syncfile);
|
||||
my $lasttime = <F>;
|
||||
close F;
|
||||
$lasttime += 0;
|
||||
my $dbh = LJ::get_dbh("master");
|
||||
my $sth = $dbh->prepare("SELECT incname, inctext, updatetime FROM includetext ".
|
||||
"WHERE updatetime > $lasttime");
|
||||
$sth->execute;
|
||||
|
||||
my $newmax = 0;
|
||||
while (my ($name, $text, $time) = $sth->fetchrow_array) {
|
||||
if (open (F, ">$LJ::HOME/htdocs/inc/$name")) {
|
||||
print F $text;
|
||||
close F;
|
||||
$newmax = $time if ($time > $newmax);
|
||||
}
|
||||
}
|
||||
|
||||
if ($newmax) {
|
||||
open (F, ">$syncfile");
|
||||
print F $newmax;
|
||||
close F;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if ($arg eq "norsync");
|
||||
|
||||
unless ($arg eq "now" || -e "/home/lj/var/do-syncweb") {
|
||||
return 1;
|
||||
}
|
||||
|
||||
my $host = hostname();
|
||||
|
||||
if ($> == 0) {
|
||||
print "Don't run this as root.\n";
|
||||
return 0;
|
||||
}
|
||||
if (`grep '/home nfs' /proc/mounts`) {
|
||||
print "Don't run this on an NFS client.\n";
|
||||
return 0;
|
||||
}
|
||||
unless (chdir("/home/lj"))
|
||||
{
|
||||
print "Could not chdir to /home/lj\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
my @exclude = qw(/logs/
|
||||
/mail/
|
||||
/var/
|
||||
/backup/
|
||||
/cvs/
|
||||
/temp/
|
||||
/.ssh/
|
||||
/.ssh2/
|
||||
/.procmailrc
|
||||
/htdocs/userpics
|
||||
);
|
||||
my $excludes = join(" ", map { "--exclude='$_'"} @exclude);
|
||||
|
||||
print "Syncing...\n";
|
||||
print `/usr/bin/rsync -avz --delete $excludes masterweb::ljhome/ .`;
|
||||
|
||||
unlink "/home/lj/var/do-syncweb";
|
||||
print "Done.\n";
|
||||
return 1;
|
||||
};
|
||||
|
||||
$maint{'syncmodules'} = sub
|
||||
{
|
||||
my $host = hostname();
|
||||
|
||||
unless ($> == 0 || $< == 0) {
|
||||
print "Must run this as root.\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
my %state;
|
||||
my $STATE_FILE = "/home/lj/var/modstate.dat";
|
||||
my $LINK_DIR = "/home/lj/modules";
|
||||
my $BUILD_DIR = "/usr/build";
|
||||
my $changed = 0; # did state change?
|
||||
|
||||
unless (-d $BUILD_DIR) {
|
||||
print "Build directory ($BUILD_DIR) doesn't exist!\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
###
|
||||
## load everything about what we did last
|
||||
#
|
||||
open (ST, $STATE_FILE);
|
||||
while (<ST>) {
|
||||
chomp;
|
||||
my ($file, $target, $status, $digest) = split(/\t/, $_);
|
||||
$state{$file} = {'target' => $target,
|
||||
'status' => $status,
|
||||
'digest' => $digest, };
|
||||
}
|
||||
close ST;
|
||||
|
||||
## look for all symlinks in the link dir. for each
|
||||
## try to install it if, 1) it points to someplace
|
||||
## that it didn't before, or 2) it failed before and
|
||||
## the md5 sum changed from last time.
|
||||
|
||||
unless (chdir ($LINK_DIR)) {
|
||||
print "Can't chdir to link directory: $LINK_DIR\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
unless (opendir (DIR, $LINK_DIR)) {
|
||||
print "Can't open link directory: $LINK_DIR\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
LINKWHILE:
|
||||
while (my $file = readdir(DIR))
|
||||
{
|
||||
chdir $LINK_DIR;
|
||||
next if (-d $file);
|
||||
next unless (-l $file);
|
||||
my $target = readlink($file);
|
||||
|
||||
# FIXME: and check for weird characters?
|
||||
# could be a problem if user lj is hacked, could be used to get
|
||||
# root, if symlink goes somewhere odd.
|
||||
next unless (-f $file);
|
||||
|
||||
my $install = 0;
|
||||
my $digest = "";
|
||||
|
||||
if ($target ne $state{$file}->{'target'}) {
|
||||
$install = 1;
|
||||
} elsif ($state{$file}->{'status'} eq "FAIL") {
|
||||
$digest = Digest::MD5::md5_hex($target);
|
||||
if ($digest ne $state{$file}->{'digest'}) {
|
||||
$install = 1;
|
||||
}
|
||||
}
|
||||
next unless ($install);
|
||||
|
||||
#
|
||||
# install it!
|
||||
#
|
||||
|
||||
print "Installing $file ($target)...\n";
|
||||
$digest ||= Digest::MD5::md5_hex($target);
|
||||
$state{$file}->{'digest'} = $digest;
|
||||
$state{$file}->{'target'} = $target;
|
||||
$changed = 1;
|
||||
|
||||
my $subdir;
|
||||
open (CON, "tar ztf $target |");
|
||||
while (<CON>) {
|
||||
chomp;
|
||||
unless (/^(\S+?)\//) {
|
||||
warn "Target has no subdirectories it extracts from?\n";
|
||||
$state{$file}->{'status'} = "FAIL";
|
||||
next LINKWHILE;
|
||||
}
|
||||
my $dir = $1;
|
||||
$subdir ||= $dir;
|
||||
if ($subdir ne $dir) {
|
||||
warn "Target has multiple sub-directories.\n";
|
||||
$state{$file}->{'status'} = "FAIL";
|
||||
next LINKWHILE;
|
||||
}
|
||||
}
|
||||
close CON;
|
||||
|
||||
print "Sub-directory = $subdir\n";
|
||||
|
||||
if (system("tar zxvf $target -C $BUILD_DIR")) {
|
||||
warn "Extraction failed.\n";
|
||||
$state{$file}->{'status'} = "FAIL";
|
||||
next LINKWHILE;
|
||||
}
|
||||
chdir "$BUILD_DIR/$subdir";
|
||||
if (system("perl Makefile.PL")) {
|
||||
warn "makefile creation failed.\n";
|
||||
$state{$file}->{'status'} = "FAIL";
|
||||
next LINKWHILE;
|
||||
}
|
||||
if (system("make")) {
|
||||
warn "make failed.\n";
|
||||
$state{$file}->{'status'} = "FAIL";
|
||||
next LINKWHILE;
|
||||
}
|
||||
if (system("make test")) {
|
||||
warn "make test failed.\n";
|
||||
$state{$file}->{'status'} = "FAIL";
|
||||
next LINKWHILE;
|
||||
}
|
||||
if (system("make install")) {
|
||||
warn "make install failed.\n";
|
||||
$state{$file}->{'status'} = "FAIL";
|
||||
next LINKWHILE;
|
||||
}
|
||||
|
||||
$state{$file}->{'status'} = "OK";
|
||||
|
||||
}
|
||||
closedir (DIR);
|
||||
|
||||
if ($changed) {
|
||||
print "Writing state.\n";
|
||||
open (ST, ">$STATE_FILE");
|
||||
foreach (sort keys %state) {
|
||||
print ST join("\t",
|
||||
$_,
|
||||
$state{$_}->{'target'},
|
||||
$state{$_}->{'status'},
|
||||
$state{$_}->{'digest'}), "\n";
|
||||
}
|
||||
close ST;
|
||||
}
|
||||
|
||||
};
|
||||
56
ljcom/bin/maint/taskinfo-local.txt
Normal file
56
ljcom/bin/maint/taskinfo-local.txt
Normal file
@@ -0,0 +1,56 @@
|
||||
ljadmin.pl:
|
||||
apgrace - gracefully restart apache
|
||||
appss - stops apache-perl, waits, and starts again
|
||||
sshkick - restarts ssh
|
||||
appgrace - gracefully restart apache-perl
|
||||
aprestart - restart apache
|
||||
exposeconf - OLD: shows server's configuration to public
|
||||
hupcaches - sends HUP signals to fastcgi processes so they clear their caches
|
||||
load - prints load (the output of 'w')
|
||||
date - prints date/time (the output of 'date')
|
||||
restartapps - slowly restarts fastcgi processes
|
||||
echo - echo arguments back
|
||||
echosleep - sleeps for first arg seconds after echoing rest arguments back
|
||||
debug - prints debug info
|
||||
statscaster_restart - restart the ljstatscasterd
|
||||
|
||||
expiring.pl:
|
||||
expiring - Expire un-renewed paid accounts, and remind users with accounts soon to expire.
|
||||
|
||||
interests.pl:
|
||||
clean_intcounts - OLD: Migration tool. Used to define intcount when it was null.
|
||||
clean_intdups - OLD: Remove duplicate interests (fixed. shouldn't happen anymore)
|
||||
|
||||
dirsync.pl:
|
||||
dirsync - Copies files from FTP area to web root
|
||||
|
||||
aliases.pl:
|
||||
makealiases - Adds the fixed aliases to the email_aliases table
|
||||
|
||||
moods.pl:
|
||||
makemoodindexes - Generate the index.html files in all the mood directories.
|
||||
|
||||
pay.pl:
|
||||
pay_mail - Sends out the email thanking people for their payment
|
||||
pay_updateaccounts - Sets people's accounts to 'paid' if it's not already.
|
||||
pay_lookupstates - Looks up and sets country/state info based on userprops
|
||||
pay_unreserve - Unreserve inventory items that are over 3 days old and unclaimed
|
||||
pay_shipping_notify - Notify third party shipping agent of new orders
|
||||
|
||||
xplanet.pl:
|
||||
stats_makemarkers - Make the markers.txt file to feed to xplanet
|
||||
|
||||
syncweb.pl:
|
||||
syncmodules - Install new local perl modules if needed, on master or slaves
|
||||
syncweb - rsync files from master server (if given arg of "now", does it immediately)
|
||||
syncsoon - set a flag so that the next syncweb actually syncs
|
||||
|
||||
xfers.pl:
|
||||
xfers_do - FTPs/SCPs people's journals to their webservers.
|
||||
|
||||
stats-local.pl:
|
||||
genstatslocal - Daily stats for ljcom code
|
||||
|
||||
clean_caches-local.pl:
|
||||
clean_caches_local - cleans old caches
|
||||
|
||||
54
ljcom/bin/maint/xfers.pl
Normal file
54
ljcom/bin/maint/xfers.pl
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
use Net::FTP;
|
||||
|
||||
# FIXME: low priority. bitrot. never made public.
|
||||
|
||||
$maint{'xfers_do'} = sub
|
||||
{
|
||||
|
||||
my $dbh = LJ::get_db_writer();
|
||||
|
||||
print "-I- Loading users that need transfers...\n";
|
||||
$sth = $dbh->prepare("SELECT t.*, u.user, u.lastn_style FROM transferinfo t, user u WHERE t.userid=u.userid AND t.lastxfer < u.timeupdate AND t.state='on'");
|
||||
$sth->execute;
|
||||
if ($dbh->err) { die $dbh->errstr; }
|
||||
while ($ti = $sth->fetchrow_hashref)
|
||||
{
|
||||
print " ==> $ti->{'user'} ($ti->{'userid'})\n";
|
||||
my $styleid = $ti->{'styleid'} || $ti->{'lastn_style'};
|
||||
|
||||
my $localfile = "$LJ::TEMP/$ti->{'userid'}.xfer";
|
||||
open (TEMP, ">$localfile") or die ($!);
|
||||
my $data = &make_journal_by_style($ti->{'user'}, $styleid, "", "");
|
||||
$data ||= "<B>[LiveJournal: Bad username, styleid, or style definition]</B>";
|
||||
print TEMP $data;
|
||||
close TEMP;
|
||||
|
||||
if ($ti->{'method'} eq "ftp") {
|
||||
my $ftp = Net::FTP->new($ti->{'host'});
|
||||
$ftp->login($username, $ti->{'password'});
|
||||
$ftp->cwd($ti->{'directory'});
|
||||
$ftp->put($localfile, ($ti->{'filename'} || "livejournal.html"));
|
||||
$ftp->quit;
|
||||
}
|
||||
elsif ($ti->{'method'} eq "scp")
|
||||
{
|
||||
my $username = $ti->{'username'};
|
||||
$username =~ s/[^a-zA-Z0-9\-\_]//g;
|
||||
my $host = $ti->{'host'};
|
||||
$host =~ s/[^a-zA-Z0-9\-\.]//g;
|
||||
my $directory = $ti->{'directory'};
|
||||
$directory =~ s/[^a-zA-Z0-9\_\-\. \/]//g;
|
||||
my $filename = $ti->{'filename'};
|
||||
$filename =~ s/[^a-zA-Z0-9\_\-\. ]//g;
|
||||
my $rc = system("scp $localfile \"$username\@$host:$directory/$filename\"");
|
||||
print "Return: $rc\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
1;
|
||||
24
ljcom/bin/maint/xplanet.pl
Normal file
24
ljcom/bin/maint/xplanet.pl
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
$maint{'stats_makemarkers'} = sub
|
||||
{
|
||||
my $dbr = LJ::get_db_reader();
|
||||
|
||||
my ($sth);
|
||||
|
||||
open (MARK, ">${STATSDIR}/markers.txt");
|
||||
|
||||
# FIXME: this is broken. zip is a userprop now.
|
||||
$sth = $dbr->prepare("CREATE TEMPORARY TABLE tmpmarkzip SELECT DISTINCT zip FROM user WHERE country='US' and zip<>''");
|
||||
$sth->execute;
|
||||
$sth = $dbr->prepare("SELECT z.lon, z.lat FROM zips z, tmpmarkzip t WHERE t.zip=z.zip");
|
||||
$sth->execute;
|
||||
while (my ($lon, $lat) = $sth->fetchrow_array) {
|
||||
print MARK "$lat -$lon \"\" color=white # \n";
|
||||
}
|
||||
$sth->finish;
|
||||
close (MARK);
|
||||
};
|
||||
|
||||
1;
|
||||
64
ljcom/bin/makemoodindex.pl
Executable file
64
ljcom/bin/makemoodindex.pl
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
my $dir = shift @ARGV;
|
||||
unless ($dir || -d $dir) {
|
||||
die "Usage:\n makemoodindex.pl <dir>\n";
|
||||
}
|
||||
|
||||
print "Making mood index for $dir\n";
|
||||
|
||||
@colors = qw(ffffff 333333 663300 ff9900 ffff33 00ff00 006600 009999 0066cc 9900cc ff3399 ff0000
|
||||
cccccc 000000 cccc99 ffcc99 ffffcc ccffcc 339933 99ffff 99ccff cc99ff ff99cc ffcccc);
|
||||
|
||||
opendir (DIR, $dir);
|
||||
@files = readdir DIR;
|
||||
closedir DIR;
|
||||
|
||||
if (-e "$dir/index.html") {
|
||||
open (HTML, "$dir/index.html");
|
||||
my $line = <HTML>;
|
||||
chomp $line;
|
||||
unless ($line eq "<!--MOODINDEX-->") { die "Won't overwrite index.html in this directory!\n"; }
|
||||
}
|
||||
|
||||
open (HTML, ">$dir/index.html");
|
||||
print HTML "<!--MOODINDEX-->\n";
|
||||
print HTML "<HTML><BODY BGCOLOR=#ffffff>\n";
|
||||
|
||||
print HTML <<"CHOOSER_HEADER";
|
||||
<CENTER>
|
||||
<FONT FACE="verdana,arial,helvetica" SIZE=1 color=#999999>
|
||||
•• click for background color ••
|
||||
</FONT>
|
||||
<TABLE border=1 bordercolor=#999999 cellpadding=0 cellspacing=0><tr><td valign=center align=center bgcolor=#eaeaea>
|
||||
<FORM>
|
||||
<TABLE border=0 bordercolor=#999999 cellpadding=0 cellspacing=0>
|
||||
<TR valign=middle align=center bgcolor=#eaeaea>
|
||||
CHOOSER_HEADER
|
||||
|
||||
my $count = 0;
|
||||
foreach my $col (@colors) {
|
||||
if (++$count == 13) { print HTML "\n</tr><tr>\n"; }
|
||||
print HTML "<td><input type=button value=\" \" onclick=\"document.bgColor='$col'\" style=\"background-color: #$col\"></td>\n";
|
||||
|
||||
}
|
||||
print HTML "</tr></table></td></tr></table></font></center>\n\n";
|
||||
|
||||
foreach my $file (sort @files)
|
||||
{
|
||||
next unless (-d "$dir/$file" && $file ne ".");
|
||||
print HTML "<B><A HREF=\"$file/\">$file/</A></B><BR>\n";
|
||||
}
|
||||
|
||||
print HTML "<TABLE CELLPADDING=2>\n";
|
||||
foreach my $file (sort @files)
|
||||
{
|
||||
next unless ($file =~ /\.gif$/);
|
||||
|
||||
print HTML "<TR VALIGN=MIDDLE><TD>$file</TD>";
|
||||
print HTML "<TD><IMG SRC=\"$file\"></TD>";
|
||||
print HTML "</TR>\n";
|
||||
}
|
||||
|
||||
print HTML "</TABLE></BODY></HTML>\n";
|
||||
803
ljcom/bin/mcvsui.pl
Executable file
803
ljcom/bin/mcvsui.pl
Executable file
@@ -0,0 +1,803 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
# * Diff selected files.
|
||||
#
|
||||
# * Push selected files live.
|
||||
#
|
||||
# * Invoke $EDITOR and parse the resulting output, selecting all files which
|
||||
# match.
|
||||
#
|
||||
# * Deselect all files.
|
||||
#
|
||||
#
|
||||
|
||||
package MultiCvsUI;
|
||||
use strict;
|
||||
|
||||
BEGIN {
|
||||
# Versioning stuff and custom includes
|
||||
use vars qw{$VERSION $RCSID};
|
||||
|
||||
$VERSION = do { my @r = (q$Revision: 1.3 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
|
||||
$RCSID = q$Id: mcvsui.pl,v 1.3 2004/04/21 00:19:14 deveiant Exp $;
|
||||
|
||||
if ( ! $ENV{HOME} || ! -d $ENV{HOME} ) {
|
||||
die "LJHOME not set or invalid";
|
||||
}
|
||||
use lib ("$ENV{LJHOME}/cgi-bin", "$ENV{LJHOME}/cvs/wcmtools/lib");
|
||||
|
||||
use Carp qw{confess croak};
|
||||
use Curses::UI qw{};
|
||||
use Cwd qw{getcwd};
|
||||
use Data::Dumper qw{};
|
||||
use IO::File qw{};
|
||||
use IO::Handle qw{};
|
||||
use List::Util qw{max min};
|
||||
use File::Temp qw{tempfile tempdir};
|
||||
use File::Spec qw{};
|
||||
use Fcntl qw{SEEK_SET};
|
||||
|
||||
use MultiCVS qw{};
|
||||
|
||||
$Data::Dumper::Indent = 1;
|
||||
$Data::Dumper::Terse = 1;
|
||||
}
|
||||
|
||||
|
||||
our ( $MultiCvsConf, $GoLive, %Keynames, %WindowOptions, %KeyBindings );
|
||||
|
||||
# The path to the multicvs config
|
||||
$MultiCvsConf = $ENV{LJHOME} . "/cvs/multicvs.conf";
|
||||
|
||||
# The path to the golive program
|
||||
$GoLive = $ENV{LJHOME} . "/bin/golive";
|
||||
|
||||
# Map of keys to human-readable names for onscreen keybinding documentation
|
||||
%Keynames = (
|
||||
"\t" => "<tab>",
|
||||
"\n" => "<ret>",
|
||||
"\e" => "<esc>",
|
||||
);
|
||||
|
||||
|
||||
%WindowOptions = (
|
||||
mainWindow => [
|
||||
mainWindow => 'Window',
|
||||
-title => "MultiCVS UI $VERSION",
|
||||
-titlereverse => 0,
|
||||
-border => 1,
|
||||
#-padbottom => 5,
|
||||
],
|
||||
|
||||
selectionList => [
|
||||
selList => 'Listbox',
|
||||
-multi => 1,
|
||||
-values => [],
|
||||
-labels => {},
|
||||
-border => 1,
|
||||
-vscrollbar => 1,
|
||||
-htmltext => 1,
|
||||
-ipadleft => 2,
|
||||
-ipadright => 2,
|
||||
-ipadtop => 1,
|
||||
-ipadbottom => 1,
|
||||
-padbottom => 5,
|
||||
],
|
||||
|
||||
helpPane => [
|
||||
'' => 'Label',
|
||||
-border => 0,
|
||||
-width => -1,
|
||||
#-height => -1,
|
||||
-y => -1,
|
||||
-ipad => 1,
|
||||
-paddingspaces => 1,
|
||||
],
|
||||
|
||||
logWindow => [
|
||||
logWindow => 'Window',
|
||||
-title => 'Log',
|
||||
-border => 1,
|
||||
-titlereverse => 0,
|
||||
-padtop => 2,
|
||||
-padleft => 1,
|
||||
-padright => 1,
|
||||
-padbottom => 6,
|
||||
-ipad => 1,
|
||||
],
|
||||
|
||||
logViewer => [
|
||||
logViewer => 'TextViewer',
|
||||
title => "Log",
|
||||
-text => "",
|
||||
-wrapping => 1,
|
||||
],
|
||||
|
||||
pagerWindow => [
|
||||
pagerWindow => 'Window',
|
||||
-title => "Pager",
|
||||
-border => 1,
|
||||
-titlereverse => 0,
|
||||
-padtop => 2,
|
||||
-padleft => 1,
|
||||
-padright => 1,
|
||||
-padbottom => 6,
|
||||
-ipad => 1,
|
||||
],
|
||||
|
||||
pager => [
|
||||
pager => 'TextViewer',
|
||||
-text => "",
|
||||
-wrapping => 0,
|
||||
-showoverflow => 1,
|
||||
],
|
||||
|
||||
applyDialog => [
|
||||
applyDialog => "Dialog::Basic",
|
||||
-title => "Apply",
|
||||
-message => "Command? (d)iff, (g)olive, (u)nmark",
|
||||
-buttons => ['cancel'],
|
||||
],
|
||||
);
|
||||
|
||||
# App keybindings
|
||||
%KeyBindings = (
|
||||
|
||||
# 'l': Switch focus to the log viewer
|
||||
"l" => {
|
||||
desc => "Show/hide the log",
|
||||
handler => "showLog",
|
||||
applyable => 0,
|
||||
},
|
||||
|
||||
# 'a': Apply (aggregate) next command
|
||||
a => {
|
||||
desc => "Apply",
|
||||
handler => "applyCommand",
|
||||
applyable => 0,
|
||||
},
|
||||
|
||||
# 'd': Show diffs for current selection
|
||||
d => {
|
||||
desc => "Diff",
|
||||
handler => "showDiff",
|
||||
applyable => 1,
|
||||
},
|
||||
|
||||
# 'g': Push files up to the live site
|
||||
g => {
|
||||
desc => "Golive",
|
||||
handler => "pushFilesLive",
|
||||
applyable => 1,
|
||||
},
|
||||
|
||||
# 'e': Edit the list of selected files
|
||||
e => {
|
||||
desc => "Edit Selection",
|
||||
handler => "editSelection",
|
||||
applyable => 0,
|
||||
},
|
||||
|
||||
# 'u': Unmark all selected files
|
||||
u => {
|
||||
desc => "Unmark All",
|
||||
handler => "unmarkAll",
|
||||
applyable => 1,
|
||||
},
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
### M A I N B O D Y
|
||||
#####################################################################
|
||||
|
||||
### (CLASS) METHOD: new( undef )
|
||||
### Instantiate and return a new CvsReportShell.
|
||||
sub new {
|
||||
my $proto = shift;
|
||||
my $class = ref $proto || $proto;
|
||||
|
||||
my $self = bless {
|
||||
mainWindow => undef, # Main enclosing window
|
||||
selList => undef, # Selection list (holds files)
|
||||
logWindow => undef, # Logging window
|
||||
logViewer => undef, # Log viewer window
|
||||
pagerWindow => undef, # Pager top-level window
|
||||
pager => undef, # Pager scrolling container
|
||||
|
||||
display => 'cvs', # Display 'cvs', 'live', or 'both' updates?
|
||||
|
||||
_log => undef,
|
||||
}, $class;
|
||||
|
||||
# Open the logfile and append to it.
|
||||
open $self->{_log}, ">>mcvsui.log" or die "Failed to open log: $!";
|
||||
$self->logmsg( "\n\n>>> Starting shell at %s\n\n", scalar localtime );
|
||||
|
||||
# Get the interface object to the multicvs layout
|
||||
die "Cannot find multicvs.conf: Is your \$LJHOME set correctly?\n"
|
||||
unless -e $MultiCvsConf;
|
||||
$self->{multicvs} = new MultiCVS ($MultiCvsConf)
|
||||
or die "Failed to create multicvs interface";
|
||||
|
||||
# Create the UI object
|
||||
$self->{ui} = new Curses::UI( -color_support => 0 );
|
||||
$self->setupWindows;
|
||||
|
||||
# Circular reference: Be sure to break this association if the object needs
|
||||
# to be destroyed.
|
||||
$self->{ui}->userdata( $self );
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
|
||||
### METHOD: run( undef )
|
||||
### Run the shell.
|
||||
sub run {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
|
||||
my (
|
||||
%bindings,
|
||||
@keydocs,
|
||||
);
|
||||
|
||||
$self->logmsg( "Running the shell." );
|
||||
|
||||
# Global keybindings
|
||||
$self->{ui}->set_binding( sub {$self->exitDialog}, "\cq" );
|
||||
$self->{ui}->set_binding( sub {$self->exitDialog}, "\cc" );
|
||||
|
||||
# Log viewer keybindings
|
||||
$self->{logViewer}->set_binding( sub {$self->{selList}->focus}, "\t" );
|
||||
|
||||
# Add a binding and documentation for each key
|
||||
foreach my $key ( keys %KeyBindings ) {
|
||||
my $code;
|
||||
|
||||
# Either build a callback to invoke the handler by name or use an
|
||||
# explicit CODE ref if present
|
||||
if ( ! exists $KeyBindings{$key}{code} ) {
|
||||
my $method = $KeyBindings{$key}{handler};
|
||||
$code = sub { $self->$method() };
|
||||
} else {
|
||||
$code = $KeyBindings{$key}{code};
|
||||
}
|
||||
|
||||
$self->{selList}->set_binding( $code, $key );
|
||||
}
|
||||
|
||||
# List the keybindings in the help window
|
||||
$self->makeHelpPane( \%KeyBindings );
|
||||
|
||||
# Read cvsreport's output and put it in the selectlist
|
||||
$self->populateSelectionList;
|
||||
|
||||
# Start the main event loop
|
||||
$self->{selList}->focus;
|
||||
$self->{ui}->mainloop;
|
||||
}
|
||||
|
||||
|
||||
### METHOD: showLog( undef )
|
||||
### Show the log viewer window.
|
||||
sub showLog {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
$self->{logViewer}->focus;
|
||||
}
|
||||
|
||||
|
||||
### METHOD: applyCommand( undef )
|
||||
### Apply a command to all selected files.
|
||||
sub applyCommand {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
my $list = $self->{selList};
|
||||
my @selections = $list->get;
|
||||
|
||||
my $dialog = $self->{ui}->add( @{$WindowOptions{applyDialog}} );
|
||||
|
||||
# Add a binding and documentation for each key
|
||||
foreach my $key ( keys %KeyBindings ) {
|
||||
next unless $KeyBindings{$key}{applyable};
|
||||
my $code;
|
||||
|
||||
# Either build a callback to invoke the handler by name or use an
|
||||
# explicit CODE ref if present
|
||||
if ( ! exists $KeyBindings{$key}{code} ) {
|
||||
# Call the handler with a true value to set 'apply mode'
|
||||
my $method = $KeyBindings{$key}{handler};
|
||||
$code = sub {
|
||||
$dialog->lose_focus;
|
||||
$self->$method(1);
|
||||
};
|
||||
} else {
|
||||
$code = sub {
|
||||
$dialog->lose_focus;
|
||||
$KeyBindings{$key}{code}->(1);
|
||||
};
|
||||
}
|
||||
|
||||
$dialog->set_binding( $code, $key );
|
||||
}
|
||||
|
||||
$dialog->set_binding( sub {}, "\e" );
|
||||
|
||||
$dialog->modalfocus;
|
||||
$dialog->lose_focus;
|
||||
$self->{ui}->delete( $WindowOptions{applyDialog}[0] );
|
||||
}
|
||||
|
||||
|
||||
### METHOD: makeHelpPane( \%KeyBindings )
|
||||
### Given a hashref of keybindings, write the list of documentation for them to
|
||||
### the help window.
|
||||
sub makeHelpPane {
|
||||
my $self = shift or throw Exception::MethodError;
|
||||
my $bindings = shift or return ();
|
||||
|
||||
my (
|
||||
@keydocs,
|
||||
$keyhelp,
|
||||
$cols,
|
||||
$colwidth,
|
||||
$colpat,
|
||||
$rows,
|
||||
$helptext,
|
||||
$curcol,
|
||||
);
|
||||
|
||||
$self->logmsg( "Building keyhelp" );
|
||||
|
||||
$colwidth = 0;
|
||||
foreach my $key ( keys %$bindings ) {
|
||||
#$self->logmsg( "Generating key help for %s: %s", $key, $bindings->{$key} );
|
||||
if ( exists $Keynames{$key} ) {
|
||||
$keyhelp = sprintf( '%5s %s', $Keynames{$key}, $bindings->{$key}{desc} );
|
||||
} else {
|
||||
$keyhelp = sprintf( ' <%s> %s', $key, $bindings->{$key}{desc} );
|
||||
}
|
||||
|
||||
push @keydocs, $keyhelp;
|
||||
$colwidth = length $keyhelp if length $keyhelp > $colwidth;
|
||||
}
|
||||
|
||||
# Make all the column widths the same by padding with spaces.
|
||||
$colpat = "\%${colwidth}s";
|
||||
@keydocs = map { sprintf $colpat, $_ } @keydocs;
|
||||
|
||||
# Calculate columns and rows
|
||||
$cols = int( $self->{helpPane}->canvaswidth / $colwidth + 2 );
|
||||
$rows = min( (int(scalar @keydocs / $cols) || 1), $self->{helpPane}->canvasheight );
|
||||
return () if $cols < 1 || $rows < 1;
|
||||
|
||||
# Build the actual text rows
|
||||
$helptext = '';
|
||||
foreach my $row ( 0 .. ($rows - 1) ) {
|
||||
$curcol = $cols * $row;
|
||||
$helptext .= " " . join(' ', @keydocs[$curcol .. $curcol + $cols]) . " \n";
|
||||
}
|
||||
|
||||
$self->{helpPane}->text( $helptext );
|
||||
}
|
||||
|
||||
|
||||
|
||||
### METHOD: editSelection( @items )
|
||||
### Edit the list of the selected items as text, making any changes necessary to
|
||||
### reflect the changes made in the file.
|
||||
sub editSelection {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
my $list = $self->{selList};
|
||||
my @items = $list->get;
|
||||
my @newItems = $self->forkEditor( join("\n", @items) . "\n" );
|
||||
|
||||
# Explode space-separated lines into multiple entries, discarding null
|
||||
# entries.
|
||||
@newItems = grep { defined } map { split /(?!<\\)\s+/, $_ } @newItems;
|
||||
#$self->logmsg( "Got modified selection list: %s", \@newItems );
|
||||
|
||||
$self->populateSelectionList( @newItems );
|
||||
}
|
||||
|
||||
|
||||
### METHOD: pushFilesLive( @files )
|
||||
### Ask the golive script to publish the specified I<files>.
|
||||
sub pushFilesLive {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
my $applyMode = shift || 0;
|
||||
|
||||
my $list = $self->{selList};
|
||||
my @files = ();
|
||||
|
||||
if ( $applyMode ) {
|
||||
@files = $list->get;
|
||||
} else {
|
||||
@files = ( $list->get_active_value );
|
||||
}
|
||||
|
||||
$self->{ui}->status( sprintf("Pushing %d files live.", scalar @files) );
|
||||
my @output = $self->forkRead( $GoLive, @files );
|
||||
$self->logmsg( "Output from golive:\n%s", join('', @output) );
|
||||
$self->{ui}->nostatus;
|
||||
|
||||
$self->populateSelectionList;
|
||||
}
|
||||
|
||||
|
||||
### METHOD: unmarkAll( undef )
|
||||
### Unmark all marked files.
|
||||
sub unmarkAll {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
|
||||
$self->{selList}->clear_selection;
|
||||
$self->populateSelectionList;
|
||||
}
|
||||
|
||||
|
||||
### METHOD: showDiff( @files )
|
||||
### Ask cvsreport for a diff and display it in the pager window.
|
||||
sub showDiff {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
my $applyMode = shift || 0;
|
||||
|
||||
my $list = $self->{selList};
|
||||
my @files = ();
|
||||
|
||||
if ( $applyMode ) {
|
||||
@files = $list->get;
|
||||
} else {
|
||||
@files = ( $list->get_active_value );
|
||||
}
|
||||
|
||||
$self->logmsg( "Got list of files to diff: %s", \@files );
|
||||
|
||||
# Slice out just the tuples that are needed for the diff
|
||||
my @tuples = @{$self->{changes}}{ @files };
|
||||
$self->logmsg( "Got list of tuples for files to diff: %s", \@tuples );
|
||||
|
||||
# Get unified diffs
|
||||
#$self->{multicvs}{_debug} = 1;
|
||||
my @diffs = $self->{multicvs}->get_diffs( ['-u'], @tuples );
|
||||
#$self->{multicvs}{_debug} = 0;
|
||||
$self->logmsg( "Got diffs: %s", \@diffs );
|
||||
|
||||
my $title = sprintf( "Differences (%d files)", scalar @files );
|
||||
$self->showPager( $title, @diffs );
|
||||
}
|
||||
|
||||
|
||||
### METHOD: showPager( $text )
|
||||
### Fork an instance of the user's pager as defined by C<$PAGER> and pipe the
|
||||
### given I<text> to it after temporarily leaving curses mode.
|
||||
sub showPager {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
my $title = shift;
|
||||
my $text = join '', @_;
|
||||
|
||||
# If they have a pager configured, use that to display the output
|
||||
if ( ($ENV{PAGER} || $ENV{MCVSUI_PAGER}) && $ENV{MCVSUI_PAGER} ne 'builtin' ) {
|
||||
$self->forkWrite( $text, $ENV{MCVSUI_PAGER}||$ENV{PAGER} );
|
||||
}
|
||||
|
||||
# Otherwise use the built-in page
|
||||
else {
|
||||
$self->{pagerWindow}->title( $title || 'Pager' );
|
||||
$self->{pager}->text( $text );
|
||||
$self->{pager}->focus;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
# 'htdocs/site/free.bml' => {
|
||||
# 'cvs_time' => 1075506514,
|
||||
# 'to' => '/Library/LiveJournal/cvs/local/htdocs/site/free.bml',
|
||||
# 'type' => 'l',
|
||||
# 'from' => '/Library/LiveJournal/htdocs/site/free.bml',
|
||||
# 'module' => 'local',
|
||||
# 'live_time' => 1075935006
|
||||
# },
|
||||
|
||||
|
||||
### METHOD: populateSelectionList( @selected )
|
||||
### Run cvsreport and populate the selectlist with the files which are reported
|
||||
### as actionable. Files in I<selected> will be pre-selected.
|
||||
sub populateSelectionList {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
my @selected = @_;
|
||||
|
||||
my (
|
||||
$maxlength,
|
||||
$changes,
|
||||
@displayKeys,
|
||||
@values,
|
||||
%labels,
|
||||
%selectPositions,
|
||||
$count,
|
||||
);
|
||||
|
||||
$changes = $self->{multicvs}->find_changed_files;
|
||||
|
||||
# Get the list of relpaths to display based on the current view mask
|
||||
@displayKeys = grep {
|
||||
$self->{display} eq 'both'
|
||||
or
|
||||
( $self->{display} eq 'cvs' && $changes->{$_}{type} eq 'c' )
|
||||
or
|
||||
$self->{display} eq 'live'
|
||||
} sort keys %$changes;
|
||||
|
||||
$self->logmsg( "Selected %d '%s' changes of %d total",
|
||||
scalar @displayKeys,
|
||||
$self->{display},
|
||||
scalar keys %$changes );
|
||||
|
||||
# If there were changes to list, list 'em
|
||||
if ( @displayKeys ) {
|
||||
$maxlength = max map { length $_ } @displayKeys;
|
||||
|
||||
$self->logmsg( "Got %d items to set in the select list.", scalar @displayKeys );
|
||||
$count = 0;
|
||||
|
||||
# For each file cvsreport says needs moving, add the filename to the
|
||||
# list of raw items, make a label for display purposes, and note the
|
||||
# item's position so it can be highlighted later.
|
||||
foreach my $relpath ( @displayKeys ) {
|
||||
$labels{ $relpath } =
|
||||
sprintf( "%-*s [%s]", $maxlength, $relpath,
|
||||
$changes->{$relpath}{module} );
|
||||
$selectPositions{ $relpath } = $count;
|
||||
$count++;
|
||||
}
|
||||
|
||||
# Stuff the items into the select list. Merge the selected item
|
||||
# filenames with the map of their indexes.
|
||||
$self->logmsg( "Setting the select list to: %s", \@displayKeys );
|
||||
$self->{changes} = $changes;
|
||||
$self->{selList}->values( \@displayKeys );
|
||||
$self->{selList}->labels( \%labels );
|
||||
$self->{selList}->set_selection( @selectPositions{@selected} );
|
||||
$self->{selList}->title( scalar @displayKeys . " Pending Files" );
|
||||
} else {
|
||||
$self->{changes} = undef;
|
||||
$self->{selList}->values();
|
||||
$self->{selList}->labels( {} );
|
||||
$self->{selList}->set_selection();
|
||||
$self->{selList}->title( "No Pending Files" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
### METHOD: logmsg( $fmt, @args )
|
||||
### Write a message to a logfile and to the log window if it's been created
|
||||
### already. The I<fmt> is a C<printf>-style output format, and I<args> is a
|
||||
### list of arguments to the C<sprintf> call, with the additional functionality
|
||||
### of dumping references instead of just stringifying them as-is for C<%s>.
|
||||
sub logmsg {
|
||||
my $self = shift or confess "Can't be used as a function";
|
||||
my ( $format, @args ) = @_;
|
||||
|
||||
chomp( $format );
|
||||
$format .= "\n";
|
||||
|
||||
for ( my $i = 0; $i <= $#args; $i++ ) {
|
||||
next unless ref $args[$i];
|
||||
$args[$i] = Data::Dumper->Dumpxs( [$args[$i]], [qw{$i}] );
|
||||
}
|
||||
|
||||
$self->{_log}->printf( $format, @args ) if $self->{_log};
|
||||
$self->appendToLogWindow( sprintf($format, @args) );
|
||||
}
|
||||
|
||||
|
||||
### METHOD: appendToLogWindow( $text )
|
||||
### Append the specified I<text> to the log window if it's been created already.
|
||||
sub appendToLogWindow {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
my $text = shift;
|
||||
|
||||
my $lv = $self->{logViewer} or return ();
|
||||
$lv->text( $lv->get . $text );
|
||||
$lv->cursor_to_end;
|
||||
}
|
||||
|
||||
|
||||
### METHOD: forkRead( $cmd, @args )
|
||||
### Fork and exec the specified I<cmd>, giving it the specified I<args>, and
|
||||
### return the output of the command as a list of lines.
|
||||
sub forkRead {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
my ( $cmd, @args ) = @_;
|
||||
|
||||
my (
|
||||
$fh,
|
||||
@lines,
|
||||
$pid,
|
||||
);
|
||||
|
||||
#$self->logmsg( "Reading from a forked child." );
|
||||
|
||||
# Fork-open and read the child's output as the parent
|
||||
if (( $pid = open($fh, "-|") )) {
|
||||
@lines = <$fh>;
|
||||
$fh->close;
|
||||
}
|
||||
|
||||
# Child - capture output for diagnostics and progress display stuff.
|
||||
else {
|
||||
die "Couldn't fork: $!" unless defined $pid;
|
||||
$self->{ui}->clear_on_exit( 0 );
|
||||
|
||||
open STDERR, ">&STDOUT" or die "Can't dup stdout: $!";
|
||||
{ exec $cmd, @args };
|
||||
|
||||
# Only reached if the exec() fails.
|
||||
close STDERR;
|
||||
close STDOUT;
|
||||
exit 1;
|
||||
}
|
||||
|
||||
#$self->logmsg( "Read %d lines from '%s'", scalar @lines, $cmd );
|
||||
return @lines;
|
||||
}
|
||||
|
||||
|
||||
### METHOD: forkWrite( $output, $cmd, @args )
|
||||
### Fork and exec the specified I<cmd> with the specified I<args> and
|
||||
### print the given I<output> to it.
|
||||
sub forkWrite {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
my ( $output, $cmd, @args ) = @_;
|
||||
|
||||
my (
|
||||
$fh,
|
||||
$pid,
|
||||
);
|
||||
|
||||
$self->logmsg( "Leaving curses..." );
|
||||
$self->{ui}->leave_curses;
|
||||
|
||||
# Fork-open and read the child's output as the parent
|
||||
if (( $pid = open($fh, "|-") )) {
|
||||
print $fh $output;
|
||||
$fh->close;
|
||||
}
|
||||
|
||||
# Child - capture output for diagnostics and progress display stuff.
|
||||
else {
|
||||
die "Couldn't fork: $!" unless defined $pid;
|
||||
|
||||
{ exec $cmd, @args };
|
||||
|
||||
# Only reached if the exec() fails.
|
||||
exit 1;
|
||||
}
|
||||
|
||||
$self->{ui}->reset_curses;
|
||||
$self->logmsg( "Curses restored." );
|
||||
}
|
||||
|
||||
|
||||
### METHOD: forkEditor( $content )
|
||||
### Write the given I<content> to a tempfile and invoke $ENV{EDITOR} on it,
|
||||
### returning whatever was left in it after the editor returns.
|
||||
sub forkEditor {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
my $content = shift || '';
|
||||
|
||||
my (
|
||||
$editor,
|
||||
$tempdir,
|
||||
$tempfile,
|
||||
$fname,
|
||||
$fh,
|
||||
$pid,
|
||||
@rlines,
|
||||
);
|
||||
|
||||
# Pick the editor based on the environment or a sensible default
|
||||
$editor = $ENV{EDITOR} || $ENV{VISUAL} || 'vi';
|
||||
|
||||
# Pick a temporary directory on this platform
|
||||
$tempdir = File::Spec->tmpdir;
|
||||
|
||||
# Open a tempfile and write the conte to it
|
||||
( $tempfile, $fname ) = tempfile( "mcvsui.XXXXX", DIR => $tempdir );
|
||||
$self->logmsg( "Writing %d bytes to '%s'", length $content, $fname );
|
||||
$tempfile->print( $content );
|
||||
$tempfile->close;
|
||||
|
||||
# Switch off curses
|
||||
$self->logmsg( "Leaving curses..." );
|
||||
$self->{ui}->leave_curses;
|
||||
|
||||
# Invoke the editor on the tempfile
|
||||
unless ( system($editor, $fname) == 0 ) {
|
||||
die "Could not invoke '$editor': Error $?\n\n";
|
||||
}
|
||||
|
||||
# Restore the curses ui
|
||||
$self->{ui}->reset_curses;
|
||||
$self->logmsg( "Curses restored." );
|
||||
|
||||
# Rewind and re-read the tempfile back in
|
||||
$tempfile = new IO::File( $fname, "r" )
|
||||
or die "open: $fname: $!";
|
||||
@rlines = <$tempfile>;
|
||||
$tempfile->close;
|
||||
unlink $fname if -e $fname;
|
||||
|
||||
chomp( @rlines );
|
||||
$self->logmsg( "Read in:\n%s", \@rlines );
|
||||
|
||||
return @rlines;
|
||||
}
|
||||
|
||||
|
||||
### METHOD: setupWindows( undef )
|
||||
### Set up all the initial windows.
|
||||
sub setupWindows {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
|
||||
# Create the main window
|
||||
$self->{mainWindow} = $self->{ui}->add( @{$WindowOptions{mainWindow}} );
|
||||
$self->{selList} = $self->{mainWindow}->add( @{$WindowOptions{selectionList}} );
|
||||
$self->{helpPane} = $self->{mainWindow}->add( @{$WindowOptions{helpPane}} );
|
||||
$self->logmsg( "Created main window." );
|
||||
|
||||
# Create the log window at the bottom of the screen and put a text viewer in
|
||||
# it.
|
||||
$self->{logWindow} = $self->{ui}->add( @{$WindowOptions{logWindow}} );
|
||||
$self->{logViewer} = $self->{logWindow}->add( @{$WindowOptions{logViewer}} );
|
||||
$self->{logViewer}->set_binding( sub {$self->{mainWindow}->focus} => 'q' );
|
||||
$self->logmsg( "Created log window." );
|
||||
|
||||
# Create the pager window and widget
|
||||
$self->{pagerWindow} = $self->{ui}->add( @{$WindowOptions{pagerWindow}} );
|
||||
$self->{pager} = $self->{pagerWindow}->add( @{$WindowOptions{pager}} );
|
||||
$self->{pager}->set_binding( sub {$self->{mainWindow}->focus} => "q" );
|
||||
$self->logmsg( "Create the pager window." );
|
||||
|
||||
}
|
||||
|
||||
|
||||
### METHOD: exitDialog( undef )
|
||||
### Display an confirmation dialog and quit if the user confirms.
|
||||
sub exitDialog {
|
||||
my $self = shift or confess "Cannot be used as a function";
|
||||
|
||||
exit( 0 );
|
||||
#my $return = $self->{ui}->dialog(
|
||||
# -message => "Really quit?",
|
||||
# -title => "Confirm",
|
||||
# -buttons => ['yes', 'no'],
|
||||
# );
|
||||
#
|
||||
#exit(0) if $return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
### C L E A N U P
|
||||
#####################################################################
|
||||
END {
|
||||
#Cdk::end();
|
||||
}
|
||||
|
||||
|
||||
|
||||
package mcvsui;
|
||||
use strict;
|
||||
|
||||
open STDERR, ">err.out" or die "open: STDERR: $!";
|
||||
|
||||
my $sh = new MultiCvsUI;
|
||||
$sh->run;
|
||||
38
ljcom/bin/misc/fixuu.pl
Executable file
38
ljcom/bin/misc/fixuu.pl
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
require "$ENV{'LJHOME'}/cgi-bin/ljlib.pl";
|
||||
|
||||
my $dbh = LJ::get_db_writer();
|
||||
my $dbslo = LJ::get_dbh("slow");
|
||||
die "no slow" unless $dbslo;
|
||||
|
||||
my $sth = $dbslo->prepare("select u.userid from user u left join userusage uu on u.userid=uu.userid where uu.userid is null");
|
||||
$sth->execute;
|
||||
while (my $userid = $sth->fetchrow_array)
|
||||
{
|
||||
print "$userid...\n";
|
||||
my $u = LJ::load_userid($userid);
|
||||
die unless $u;
|
||||
|
||||
print "Find timeupdate...\n";
|
||||
my $timeupdate;
|
||||
my $dbcr = LJ::get_cluster_reader($u);
|
||||
$timeupdate = $dbcr->selectrow_array("SELECT logtime FROM log2 WHERE journalid=$u->{'userid'} AND rlogtime>0 ORDER BY journalid, rlogtime");
|
||||
die $dbcr->errstr if $dbcr->err;
|
||||
$timeupdate = $dbh->quote($timeupdate);
|
||||
|
||||
print "BS a time create...\n";
|
||||
my $timecreate;
|
||||
my $puserid = $u->{'userid'};
|
||||
while (not defined $timecreate) {
|
||||
$puserid--;
|
||||
print " trying $puserid\n";
|
||||
$timecreate = $dbslo->selectrow_array("SELECT DATE_ADD(timecreate, INTERVAL 10 MINUTE) FROM userusage WHERE userid=$puserid");
|
||||
}
|
||||
$timecreate = $dbh->quote($timecreate);
|
||||
|
||||
my $sql = "INSERT INTO userusage VALUES ($u->{'userid'}, $timecreate, $timeupdate, NULL, 0)";
|
||||
print "$sql\n";
|
||||
$dbh->do($sql);
|
||||
}
|
||||
250
ljcom/bin/multideb
Executable file
250
ljcom/bin/multideb
Executable file
@@ -0,0 +1,250 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# multideb - compare package installation differences over
|
||||
# many machines remotely.
|
||||
#
|
||||
# example ~/.multideb.conf file:
|
||||
#
|
||||
# servera port=2210 user=bob classes=web,db
|
||||
# serverb user=root classes=web
|
||||
# serverc user=root classes=web
|
||||
# serverd user=mysql classes=db
|
||||
# localhost classes=web
|
||||
#
|
||||
# Port 22 is the default. User required unless servername is localhost.
|
||||
#
|
||||
|
||||
use strict;
|
||||
use Getopt::Long;
|
||||
use Data::Dumper;
|
||||
|
||||
my $MD_DIR = ensure_dir("$ENV{'HOME'}/.multideb");
|
||||
|
||||
my %host; # hostname -> {..., classes => { classname => 1 } }
|
||||
my %classes; # classname -> { hostname => 1 }
|
||||
my %core; # classname -> [ packagename, ... ]
|
||||
|
||||
my $opt_full = 0;
|
||||
my $opt_core = 0;
|
||||
help() unless GetOptions(
|
||||
"full" => \$opt_full,
|
||||
"core" => \$opt_core,
|
||||
);
|
||||
|
||||
my $mode = shift @ARGV;
|
||||
|
||||
if ($mode eq "check")
|
||||
{
|
||||
load_conf();
|
||||
my @pkgs = @ARGV;
|
||||
my @hosts = sort keys %host;
|
||||
|
||||
foreach my $host (@hosts) {
|
||||
my $h = $host{$host};
|
||||
parse_status($h);
|
||||
}
|
||||
|
||||
foreach my $pkg (@pkgs)
|
||||
{
|
||||
my %whowhat;
|
||||
foreach my $host (@hosts) {
|
||||
my $h = $host{$host};
|
||||
my $p = $h->{'pkg'}->{$pkg};
|
||||
|
||||
my $status = status_of_package($p);
|
||||
push @{$whowhat{$status}}, $host;
|
||||
}
|
||||
|
||||
print "$pkg\n";
|
||||
foreach my $stat (sort keys %whowhat) {
|
||||
print " $stat: @{$whowhat{$stat}}\n";
|
||||
}
|
||||
}
|
||||
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($mode eq "compare")
|
||||
{
|
||||
load_conf();
|
||||
my $class = shift @ARGV;
|
||||
my @hosts = sort keys %{$classes{$class}};
|
||||
|
||||
unless (@hosts) {
|
||||
die "No matching '$class' hosts.\n";
|
||||
}
|
||||
|
||||
my @comp_list;
|
||||
|
||||
my %epkg; # existing packages: { name => 1 }
|
||||
foreach my $host (@hosts)
|
||||
{
|
||||
my $h = $host{$host};
|
||||
parse_status($h);
|
||||
foreach (keys %{$h->{'pkg'}}) {
|
||||
$epkg{$_} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ($opt_core) {
|
||||
unless (defined $core{$class}) {
|
||||
die "No core packages defined for class '$class'\n";
|
||||
}
|
||||
@comp_list = @{$core{$class}};
|
||||
} else {
|
||||
@comp_list = sort keys %epkg;
|
||||
}
|
||||
|
||||
# iterate through all packages, showing differences:
|
||||
foreach my $pkg (@comp_list)
|
||||
{
|
||||
my %whowhat;
|
||||
my $installed = 0;
|
||||
foreach my $host (@hosts) {
|
||||
my $h = $host{$host};
|
||||
my $p = $h->{'pkg'}->{$pkg};
|
||||
|
||||
my $status = status_of_package($p);
|
||||
push @{$whowhat{$status}}, $host;
|
||||
|
||||
my ($sa, $sb, $sc) = split(/ /, $p->{'Status'});
|
||||
if ($sc eq "installed") { $installed = 1; }
|
||||
}
|
||||
if ($installed &&
|
||||
($opt_full || scalar(keys %whowhat) > 1))
|
||||
{
|
||||
print "$pkg\n";
|
||||
foreach my $stat (sort keys %whowhat) {
|
||||
print " $stat: @{$whowhat{$stat}}\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($mode eq "update")
|
||||
{
|
||||
load_conf();
|
||||
foreach my $host (sort keys %host)
|
||||
{
|
||||
my $h = $host{$host};
|
||||
my $user = $h->{'user'};
|
||||
my $port = $h->{'port'};
|
||||
|
||||
print "$host...\n";
|
||||
if ($host eq "localhost") {
|
||||
system("rsync", "/var/lib/dpkg/status",
|
||||
"$MD_DIR/$host.status");
|
||||
} else {
|
||||
system("rsync", "-e", "ssh -p $port", "-az",
|
||||
"$user\@$host:/var/lib/dpkg/status",
|
||||
"$MD_DIR/$host.status");
|
||||
}
|
||||
}
|
||||
|
||||
print "Done.\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
help();
|
||||
|
||||
sub status_of_package
|
||||
{
|
||||
my $p = shift;
|
||||
|
||||
my $status = $p->{'Version'};
|
||||
if ($p->{'Status'} ne "install ok installed") {
|
||||
$status .= "/" if $status;
|
||||
$status .= "$p->{'Status'}";
|
||||
}
|
||||
$status ||= "(unknown)";
|
||||
|
||||
return $status;
|
||||
}
|
||||
|
||||
sub parse_status
|
||||
{
|
||||
my $h = shift;
|
||||
my $fname = "$MD_DIR/$h->{'host'}.status";
|
||||
unless (-e $fname) {
|
||||
die "$fname doesn't exist. Run update.\n";
|
||||
}
|
||||
open (F, $fname);
|
||||
while (<F>) {
|
||||
unless (/^Package: (.+)/) {
|
||||
die "Corrupt $h->{'host'} status file?\n";
|
||||
}
|
||||
my $pkg = $1;
|
||||
my $p = $h->{'pkg'}->{$pkg} = {
|
||||
'Package' => $pkg,
|
||||
};
|
||||
my $lastkey = 'Package';
|
||||
while (<F>) {
|
||||
chomp;
|
||||
unless ($_) { last; }
|
||||
if (/^(\w+):\s*(.+)/i) {
|
||||
$p->{$1} = $2;
|
||||
}
|
||||
}
|
||||
}
|
||||
close F;
|
||||
}
|
||||
|
||||
sub help
|
||||
{
|
||||
die("Usage:\n".
|
||||
" multideb update\n".
|
||||
" multideb compare <classname>\n".
|
||||
" multideb check <packagename> ...\n");
|
||||
}
|
||||
|
||||
sub load_conf {
|
||||
open (C, "$ENV{'HOME'}/.multideb.conf");
|
||||
while (<C>)
|
||||
{
|
||||
s/^\s+//; s/\s+$//;
|
||||
next if (/^\#/);
|
||||
next unless $_;
|
||||
chomp;
|
||||
my ($p1, @opts) = split(/\s+/, $_);
|
||||
|
||||
if ($p1 =~ /^core:(\w+)/) {
|
||||
$core{$1} = [ @opts ];
|
||||
next;
|
||||
}
|
||||
|
||||
my $host = $p1;
|
||||
my $h = $host{$host} = {
|
||||
'host' => $host,
|
||||
'port' => 22,
|
||||
};
|
||||
foreach (@opts) {
|
||||
my ($k, $v) = split(/=/, $_);
|
||||
if ($k eq "classes") {
|
||||
foreach (split(/,/, $v)) {
|
||||
$h->{'classes'}->{$_} = 1;
|
||||
$classes{$_}->{$host} = 1;
|
||||
}
|
||||
} else {
|
||||
$h->{$k} = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
close C;
|
||||
}
|
||||
|
||||
sub ensure_dir {
|
||||
my $dir = shift;
|
||||
unless (-e $dir) {
|
||||
if (mkdir $dir) {
|
||||
return $dir;
|
||||
} else {
|
||||
die "Can't create $dir directory\n";
|
||||
}
|
||||
}
|
||||
unless (-w $dir) {
|
||||
die "Can't write to $dir directory\n";
|
||||
}
|
||||
return $dir;
|
||||
}
|
||||
1019
ljcom/bin/mytop.pl
Executable file
1019
ljcom/bin/mytop.pl
Executable file
File diff suppressed because it is too large
Load Diff
7
ljcom/bin/no-emacs.sh
Executable file
7
ljcom/bin/no-emacs.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# <LJDEP>
|
||||
# prog: find, rm
|
||||
# </LJDEP>
|
||||
|
||||
find . \( -name '.*~' -or -name '*~' -or -name '#*#' -or -name '.#*' \) -print -exec rm -f {} \;
|
||||
9
ljcom/bin/pay-batch
Executable file
9
ljcom/bin/pay-batch
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# <LJDEP>
|
||||
# prog: bin/ljmaint.pl
|
||||
# </LJDEP>
|
||||
|
||||
~lj/bin/ljmaint.pl pay_mail pay_updateaccounts
|
||||
|
||||
|
||||
20
ljcom/bin/pkill
Executable file
20
ljcom/bin/pkill
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# <LJDEP>
|
||||
# prog: ps, grep
|
||||
# </LJDEP>
|
||||
|
||||
use strict;
|
||||
|
||||
my $prog = shift @ARGV;
|
||||
exit unless ($prog =~ /^[\w\.\/]+$/);
|
||||
|
||||
my @procs = `ps awx | grep $prog | grep -v grep | grep -v pkill`;
|
||||
foreach (@procs)
|
||||
{
|
||||
next unless (/^\s*(\d+)\s/);
|
||||
my $pid = $1;
|
||||
print $pid, "\n";
|
||||
kill 15, $pid;
|
||||
}
|
||||
|
||||
18
ljcom/bin/qkill
Executable file
18
ljcom/bin/qkill
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
use strict;
|
||||
|
||||
my $prog = shift @ARGV;
|
||||
exit unless ($prog =~ /^[\w\.\/]+$/);
|
||||
|
||||
my @procs = `ps awx | grep $prog | grep -v grep | grep -v hkill`;
|
||||
foreach (@procs)
|
||||
{
|
||||
next unless (/^\s*(\d+)\s/);
|
||||
my $pid = $1;
|
||||
print $pid, "\n";
|
||||
kill 15, $pid;
|
||||
}
|
||||
|
||||
|
||||
76
ljcom/bin/release.pl
Executable file
76
ljcom/bin/release.pl
Executable file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
my $mode = shift @ARGV;
|
||||
|
||||
if ($< == 0 || $> ==0) { die "Don't run as root.\n"; }
|
||||
chdir("/home/lj") || die "Can't cd to /home/lj";
|
||||
|
||||
chdir("/home/ljcode") || die "Can't cd to /home/ljcode";
|
||||
unless (-d "LiveJournal") {
|
||||
die "directory 'LiveJournal' doesn't exist.\n";
|
||||
}
|
||||
|
||||
print "Dumping SQL...\n";
|
||||
system("dumpsql.pl init > LiveJournal/livejournal.sql");
|
||||
system("dumpsql.pl data > LiveJournal/livejournal-data.sql");
|
||||
system("dumpsql.pl datareplace > LiveJournal/livejournal-datareplace.sql");
|
||||
|
||||
mkdir "LiveJournal/bin/", 0755;
|
||||
mkdir "LiveJournal/cgi-bin/", 0755;
|
||||
mkdir "LiveJournal/htdocs/", 0755;
|
||||
foreach my $dir (qw(htdocs/files htdocs/temp htdocs/misc htdocs/img
|
||||
htdocs/stats htdocs/download htdocs/clients
|
||||
logs var))
|
||||
{
|
||||
mkdir "LiveJournal/htdocs/$dir", 0755;
|
||||
open (T, ">LiveJournal/htdocs/$dir/.touch");
|
||||
print T "placeholder\n";
|
||||
close T;
|
||||
}
|
||||
|
||||
print "Syncing cgi-bin...\n";
|
||||
system("rsync -rl --delete --exclude='archive' --exclude='clients' --exclude='ljconfig.pl' /home/lj/cgi-bin/ LiveJournal/cgi-bin/");
|
||||
|
||||
print "Syncing htdocs...\n";
|
||||
system("rsync -rl --delete --exclude='htdocs/dev/' --exclude='img' --exclude='files' --exclude='download' --exclude='temp' --exclude='misc' --exclude='stats' /home/lj/htdocs/ LiveJournal/htdocs/");
|
||||
|
||||
print "Syncing bin...\n";
|
||||
system("rsync -rl --delete --exclude='old' /home/lj/bin/ LiveJournal/bin/");
|
||||
|
||||
my @now = localtime();
|
||||
my $date = sprintf("%04d%02d%02d", $now[5]+1900, $now[4]+1, $now[3]);
|
||||
my $append = $date;
|
||||
print "Date is: $date\n";
|
||||
my $count = 1;
|
||||
while (-e "LiveJournal-$append" || -e "LiveJournal-$append.tar.gz") {
|
||||
$count++;
|
||||
$append = "$date-$count";
|
||||
}
|
||||
|
||||
chdir("LiveJournal");
|
||||
|
||||
print "Cleaning emacs files.\n";
|
||||
system("no-emacs.sh");
|
||||
print "Cleaning other files.\n";
|
||||
system("rm cgi-bin/pod2html-* cgi-bin/perl.core");
|
||||
|
||||
chdir("..");
|
||||
|
||||
unless ($mode eq "lite")
|
||||
{
|
||||
print "Renaming to LiveJournal-$append...\n";
|
||||
rename "LiveJournal", "LiveJournal-$append";
|
||||
|
||||
print "Tarring...\n";
|
||||
system("tar -zcvf LiveJournal-$append.tar.gz LiveJournal-$append");
|
||||
|
||||
print "Renaming back...\n";
|
||||
rename "LiveJournal-$append", "LiveJournal";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Skipping tarball.\n";
|
||||
}
|
||||
print "Done\n";
|
||||
|
||||
159
ljcom/bin/renameuser.pl
Executable file
159
ljcom/bin/renameuser.pl
Executable file
@@ -0,0 +1,159 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# <LJDEP>
|
||||
# lib: cgi-bin/ljlib.pl
|
||||
# </LJDEP>
|
||||
|
||||
use strict;
|
||||
use Getopt::Long;
|
||||
|
||||
require "$ENV{'LJHOME'}/cgi-bin/ljlib.pl";
|
||||
|
||||
sub usage {
|
||||
die "Usage: [--swap --force] <from_user> <to_user>\n";
|
||||
}
|
||||
|
||||
my %args = ( swap => 0, force => 0 );
|
||||
usage() unless
|
||||
GetOptions('swap' => \$args{swap},
|
||||
'force' => \$args{force},
|
||||
);
|
||||
|
||||
my $error;
|
||||
|
||||
my $from = shift @ARGV;
|
||||
my $to = shift @ARGV;
|
||||
usage() unless $from =~ /^\w{1,15}$/ && $to =~ /^\w{1,15}$/;
|
||||
|
||||
my $dbh = LJ::get_db_writer();
|
||||
|
||||
unless ($args{swap}) {
|
||||
if (rename_user($from, $to)) {
|
||||
print "Success. Renamed $from -> $to.\n";
|
||||
} else {
|
||||
print "Failed: $error\n";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
### check that emails/passwords match, and that at least one is verified
|
||||
my $qfrom = $dbh->quote(lc($from));
|
||||
my $qto = $dbh->quote(lc($to));
|
||||
|
||||
unless ($args{force}) {
|
||||
my $sth = $dbh->prepare("SELECT user, email, password, status FROM user WHERE user IN ($qfrom, $qto)");
|
||||
$sth->execute;
|
||||
{
|
||||
my @acct;
|
||||
while (my $l = $sth->fetchrow_hashref) {
|
||||
push @acct, $l;
|
||||
}
|
||||
unless (@acct == 2) {
|
||||
print "Both accounts aren't valid.\n";
|
||||
exit 1;
|
||||
}
|
||||
unless (lc($acct[0]->{'email'}) eq lc($acct[1]->{'email'})) {
|
||||
print "Email addresses don't match.\n";
|
||||
print " $acct[0]->{'email'}\n";
|
||||
print " $acct[1]->{'email'}\n";
|
||||
exit 1;
|
||||
}
|
||||
unless ($acct[0]->{'password'} eq $acct[1]->{'password'}) {
|
||||
print "Passwords don't match.\n";
|
||||
exit 1;
|
||||
}
|
||||
unless ($acct[0]->{'status'} eq "A" || $acct[1]->{'status'} eq "A") {
|
||||
print "At least one account isn't verified.\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my $swapnum = 0;
|
||||
print "Swapping 1/3...\n";
|
||||
until ($swapnum == 10 || rename_user($from, "lj_swap_$swapnum")) {
|
||||
$swapnum++;
|
||||
}
|
||||
if ($swapnum == 10) {
|
||||
print "Couldn't find a swap position?\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
print "Swapping 2/3...\n";
|
||||
unless (rename_user($to, $from)) {
|
||||
print "Swap failed in the middle, from $to -> $from failed.\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
print "Swapping 3/3...\n";
|
||||
unless (rename_user("lj_swap_$swapnum", $to)) {
|
||||
print "Swap failed in the middle, from lj_swap_$swapnum -> $to failed.\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# check for circular 'renamedto' references
|
||||
{
|
||||
|
||||
# if the fromuser had redirection on, make sure it points to the new $to user
|
||||
my $fromu = LJ::load_user($from, 'force');
|
||||
LJ::load_user_props($fromu, 'renamedto');
|
||||
if ($fromu->{renamedto} && $fromu->{renamedto} ne $to) {
|
||||
print "Setting redirection: $from => $to\n";
|
||||
unless (LJ::set_userprop($fromu, 'renamedto' => $to)) {
|
||||
print "Error setting 'renamedto' userprop for $from\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
|
||||
# if the $to user had redirection, they shouldn't anymore
|
||||
my $tou = LJ::load_user($to, 'force');
|
||||
LJ::load_user_props($tou, 'renamedto');
|
||||
if ($tou->{renamedto}) {
|
||||
print "Removing redirection for user: $to\n";
|
||||
unless (LJ::set_userprop($tou, 'renamedto' => undef)) {
|
||||
print "Error setting 'renamedto' userprop for $to\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print "Swapped.\n";
|
||||
exit 0;
|
||||
|
||||
sub rename_user
|
||||
{
|
||||
my $from = shift;
|
||||
my $to = shift;
|
||||
|
||||
my $qfrom = $dbh->quote(LJ::canonical_username($from));
|
||||
my $qto = $dbh->quote(LJ::canonical_username($to));
|
||||
|
||||
print "Renaming $from -> $to\n";
|
||||
|
||||
my $u = LJ::load_user($from, 'force');
|
||||
unless ($u) {
|
||||
$error = "Invalid source user: $from";
|
||||
return 0;
|
||||
}
|
||||
|
||||
foreach my $table (qw(user useridmap overrides style))
|
||||
{
|
||||
$dbh->do("UPDATE $table SET user=$qto WHERE user=$qfrom");
|
||||
if ($dbh->err) {
|
||||
$error = $dbh->errstr;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
# from user is now invalidated
|
||||
LJ::memcache_kill($u->{userid}, "userid");
|
||||
LJ::MemCache::delete("uidof:$from");
|
||||
LJ::MemCache::delete("uidof:$to");
|
||||
|
||||
LJ::procnotify_add("rename_user", { 'user' => $u->{'user'},
|
||||
'userid' => $u->{'userid'} });
|
||||
|
||||
$dbh->do("INSERT INTO renames (renid, token, payid, userid, fromuser, touser, rendate) ".
|
||||
"VALUES (NULL,'[manual]',0,$u->{userid},$qfrom,$qto,NOW())");
|
||||
return 1;
|
||||
}
|
||||
131
ljcom/bin/rewrite-balancer.pl
Executable file
131
ljcom/bin/rewrite-balancer.pl
Executable file
@@ -0,0 +1,131 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# This tool is to be run from apache's mod_rewrite,
|
||||
# not from command line.
|
||||
# If there's an argument, it's taken to be a key
|
||||
# in the $LJ::WEB_POOLS hash specifying the hosts which
|
||||
# this balancer is to work with.
|
||||
|
||||
use strict;
|
||||
use IO::Socket::INET;
|
||||
use IO::Select;
|
||||
|
||||
my $port = 4446;
|
||||
my $MAXLEN = 512;
|
||||
my $BCAST_VER = 1;
|
||||
my %allowed; # ip_text -> 1 (if broadcasting server is in our watched pool)
|
||||
|
||||
eval { require "$ENV{'LJHOME'}/cgi-bin/ljlib.pl"; };
|
||||
|
||||
if ($LJ::FREECHILDREN_BCAST &&
|
||||
$LJ::FREECHILDREN_BCAST =~ /^(\S+):(\d+)$/) {
|
||||
$port = $2;
|
||||
}
|
||||
|
||||
if ($ARGV[0] && $LJ::WEB_POOLS{$ARGV[0]}) {
|
||||
foreach (@{$LJ::WEB_POOLS{$ARGV[0]}}) {
|
||||
$allowed{$_} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
my $sock = IO::Socket::INET->new(Proto=>'udp',
|
||||
LocalPort=>$port)
|
||||
or die "couldn't create socket\n";
|
||||
$sock->sockopt(SO_BROADCAST, 1);
|
||||
$sock->blocking(0);
|
||||
$|=1;
|
||||
|
||||
my $sel = IO::Select->new();
|
||||
$sel->add(\*STDIN);
|
||||
$sel->add($sock);
|
||||
|
||||
my %servers; # ip_text -> { bcast_ver => 1 , free => \d+, active => \d+, _time => unix }
|
||||
my %free; # ip_text -> num_free
|
||||
my $total_free = 0;
|
||||
|
||||
sub get_server {
|
||||
return "" unless $total_free;
|
||||
|
||||
# delete servers that haven't reported back in a while
|
||||
my $now = time();
|
||||
my @del;
|
||||
while (my ($k, $v) = each %servers) {
|
||||
push @del, $k if $v->{_time} < $now - 20;
|
||||
}
|
||||
foreach (@del) { delete_server($_); }
|
||||
|
||||
return "" unless $total_free;
|
||||
|
||||
my $choice = rand($total_free);
|
||||
my $count = 0;
|
||||
while ($_ = each %free) {
|
||||
$count += $free{$_};
|
||||
if ($count >= $choice) { # can only happen if $free{$_}>0
|
||||
$total_free--;
|
||||
$free{$_}--;
|
||||
return $_;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
sub delete_server {
|
||||
my $key = shift; # key = ip_text
|
||||
$total_free -= $free{$key} if $free{$key};
|
||||
delete $servers{$key};
|
||||
delete $free{$key};
|
||||
}
|
||||
|
||||
sub parse_message {
|
||||
my ($sock, $message) = @_;
|
||||
my ($port, $ipaddr) = sockaddr_in($sock->peername);
|
||||
my $ip_text = inet_ntoa($ipaddr);
|
||||
return if %allowed and not $allowed{$ip_text};
|
||||
|
||||
delete_server($ip_text);
|
||||
|
||||
my $host;
|
||||
foreach my $pair (split /\n/, $message) {
|
||||
$host->{$1} = $2 if $pair =~ /^(\S+)=(\S*)$/;
|
||||
}
|
||||
$host->{_time} = time();
|
||||
|
||||
return unless $host->{bcast_ver} eq $BCAST_VER;
|
||||
|
||||
if ($host->{free}) {
|
||||
$servers{$ip_text} = $host;
|
||||
$free{$ip_text} = $host->{free};
|
||||
$total_free += $host->{free};
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
my @backlog; # unserviced uris, with trailing newlines
|
||||
|
||||
sub process_requests
|
||||
{
|
||||
my $server;
|
||||
while (@backlog && ($server = get_server())) {
|
||||
my $uri = shift @backlog;
|
||||
print "http://$server/$uri";
|
||||
}
|
||||
}
|
||||
|
||||
while(1) {
|
||||
my @ready = $sel->can_read();
|
||||
foreach my $fh (@ready) {
|
||||
if ($fh == $sock) {
|
||||
my $message;
|
||||
while($sock->recv($message, $MAXLEN)) {
|
||||
parse_message($sock, $message);
|
||||
}
|
||||
process_requests();
|
||||
}
|
||||
if ($fh == \*STDIN) {
|
||||
$_ = <STDIN>;
|
||||
push @backlog, $_;
|
||||
exit 1 if @backlog > 2000; # something's horribly wrong
|
||||
process_requests();
|
||||
}
|
||||
}
|
||||
}
|
||||
38
ljcom/bin/rotate
Executable file
38
ljcom/bin/rotate
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
@files = @ARGV;
|
||||
$base = $0;
|
||||
$base =~ s/^.+\///;
|
||||
if (@files==0 || $files[0] =~ /^-/)
|
||||
{
|
||||
die "Usage: $base logfiles\n";
|
||||
}
|
||||
@files = grep { -e } @files;
|
||||
|
||||
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
|
||||
$mon++; $year+=1900;
|
||||
|
||||
$num = 0;
|
||||
$ext = sprintf("%04d.%02d.%02d.%02d.rotlog", $year, $mon, $mday, $num);
|
||||
|
||||
$dirty=1;
|
||||
while ($dirty)
|
||||
{
|
||||
$dirty=0;
|
||||
foreach $file (@files)
|
||||
{
|
||||
$dirty =1 if (-e "$file.$ext.gz" || -e "$file.$ext");
|
||||
}
|
||||
|
||||
if ($dirty)
|
||||
{
|
||||
$num++;
|
||||
$ext = sprintf("%04d.%02d.%02d.%02d.rotlog", $year, $mon, $mday, $num);
|
||||
}
|
||||
}
|
||||
|
||||
foreach $file (@files)
|
||||
{
|
||||
rename $file, "$file.$ext";
|
||||
}
|
||||
34
ljcom/bin/screenshots.pl
Executable file
34
ljcom/bin/screenshots.pl
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
use Image::Size;
|
||||
|
||||
my $dir = shift @ARGV;
|
||||
unless ($dir) {
|
||||
die "Usage:\n $0 <directory>\n";
|
||||
}
|
||||
unless (-d $dir) {
|
||||
die "$dir isn't a directory!\n";
|
||||
}
|
||||
|
||||
unless (open (PICS, "pics.dat")) {
|
||||
die "No pics.dat found in that directory, or unreadable.\n";
|
||||
}
|
||||
|
||||
print "<?page\ntitle=>Screenshots\nbody<=\n";
|
||||
|
||||
while ($line = <PICS>) {
|
||||
chomp $line;
|
||||
my ($file, $des) = split(/\t/, $line);
|
||||
if (-e $file) {
|
||||
my ($w, $h) = imgsize($file);
|
||||
|
||||
print "<p>$des<p><CENTER><IMG SRC=\"$file\" WIDTH=$w HEIGHT=$h></CENTER>\n";
|
||||
|
||||
} else {
|
||||
print STDERR "$file not found!\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
print "<=body\npage?>\n";
|
||||
37
ljcom/bin/sourceclean.pl
Executable file
37
ljcom/bin/sourceclean.pl
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
use strict;
|
||||
use File::Find ();
|
||||
use Getopt::Long;
|
||||
die "\$LJHOME not set or invalid\n" unless -d $ENV{'LJHOME'};
|
||||
|
||||
my $opt_check = 0;
|
||||
exit 1 unless GetOptions('check' => \$opt_check);
|
||||
|
||||
File::Find::find({
|
||||
wanted => \&wanted,
|
||||
no_chdir => 1,
|
||||
}, map { "$ENV{'LJHOME'}/$_"} qw(bin cgi-bin htdocs));
|
||||
|
||||
sub wanted {
|
||||
return 0 unless m/\.(pl|bml|html)$/;
|
||||
|
||||
open (F, $_);
|
||||
my $lnum = 0;
|
||||
my $contents;
|
||||
my $dirty = 0;
|
||||
while (my $line = <F>) {
|
||||
$lnum++;
|
||||
if ($line =~ s/\t/ /g) {
|
||||
print "$_:$lnum: tab\n";
|
||||
$dirty = 1;
|
||||
}
|
||||
if ($line =~ s/\s+\n$/\n/) {
|
||||
print "$_:$lnum: trailing space\n";
|
||||
$dirty = 1;
|
||||
}
|
||||
$contents .= $line;
|
||||
}
|
||||
close F;
|
||||
}
|
||||
88
ljcom/bin/splitlog.pl
Executable file
88
ljcom/bin/splitlog.pl
Executable file
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
my $file = shift @ARGV;
|
||||
my $newfile = shift @ARGV;
|
||||
|
||||
my $locfile = "$file.loc";
|
||||
my $loc = 0;
|
||||
my $lines = 0;
|
||||
|
||||
my %monthtonum = qw(Jan 01 Feb 02 Mar 03 Apr 04 May 05 Jun 06
|
||||
Jul 07 Aug 08 Sep 09 Oct 10 Nov 10 Dec 12);
|
||||
|
||||
$SIG{'INT'} = \&write_loc;
|
||||
|
||||
sub write_loc {
|
||||
close OUT;
|
||||
print "Writing location $loc\n";
|
||||
open (LOC, ">$locfile") || die "Can't write location file!\n";
|
||||
print LOC "$loc\n$lines\n";
|
||||
close LOC;
|
||||
print "Ending.";
|
||||
exit;
|
||||
};
|
||||
|
||||
unless ($file && $newfile) {
|
||||
die "Usage:\n $0 <logfile> <basename>\n";
|
||||
}
|
||||
unless (-r $file) {
|
||||
die "File \"$file\" does not exist.\n";
|
||||
}
|
||||
|
||||
unless (-d "split") {
|
||||
die "No split directory underneith the current directory.\n";
|
||||
}
|
||||
|
||||
if (-e $locfile) {
|
||||
open (LOC, $locfile) || die "Can't read location file!\n";;
|
||||
chomp ($loc = <LOC>);
|
||||
$loc += 0;
|
||||
chomp ($lines = <LOC>);
|
||||
$lines += 0;
|
||||
close LOC;
|
||||
print "Location: $loc (did $lines lines)\n";
|
||||
}
|
||||
|
||||
open (LOG, $file) || die "Can't read log file\n";;
|
||||
seek(LOG, $loc, 0);
|
||||
|
||||
#my $line = <LOG>;
|
||||
#$line = <LOG>;
|
||||
#print $line;
|
||||
#exit;
|
||||
|
||||
my $count = 0;
|
||||
my $lastdate = "";
|
||||
while (my $line = <LOG>) {
|
||||
$loc += length($line);
|
||||
$lines++;
|
||||
|
||||
if ($line =~ /\[(\d\d)\/(...)\/(\d\d\d\d)/) {
|
||||
my ($year, $month, $day) = ($3, $monthtonum{$2}, $1);
|
||||
|
||||
my $date = "$year-$month-$day";
|
||||
|
||||
if ($date ne $lastdate) {
|
||||
# if ($year==2001 && $month==3 && $day > 2) {
|
||||
close OUT;
|
||||
open (OUT, ">>split/$date-$newfile.log") || die "Can't open file we're supposed to append to.\n";
|
||||
# }
|
||||
$lastdate = $date;
|
||||
}
|
||||
|
||||
# if ($year==2001 && $month==3 && $day > 2) {
|
||||
print OUT $line;
|
||||
# }
|
||||
}
|
||||
|
||||
if ($lines % 10000 == 0) { print "line: $lines ($lastdate).\n"; }
|
||||
}
|
||||
|
||||
close LOG;
|
||||
close OUT;
|
||||
|
||||
print "End of file!\n";
|
||||
unlink $locfile, $file;
|
||||
|
||||
|
||||
31
ljcom/bin/upgrading/base-data-local.sql
Normal file
31
ljcom/bin/upgrading/base-data-local.sql
Normal file
@@ -0,0 +1,31 @@
|
||||
# This file is automatically generated from MySQL by $LJHOME/bin/dumpsql.pl
|
||||
# Don't submit a diff against a hand-modified file - dump and diff instead.
|
||||
|
||||
INSERT IGNORE INTO priv_list (des, is_public, privcode, privname, scope) VALUES ('Allows a user to delete contributions from idiots.', '1', 'contrib_delete', 'Delete Contributions', 'local');
|
||||
UPDATE priv_list SET des='Allows a user to delete contributions from idiots.',is_public='1',privname='Delete Contributions',scope='local' WHERE privcode='contrib_delete';
|
||||
INSERT IGNORE INTO priv_list (des, is_public, privcode, privname, scope) VALUES ('Allows a user to edit contributions.', '1', 'contrib_edit', 'Edit Contributions', 'local');
|
||||
UPDATE priv_list SET des='Allows a user to edit contributions.',is_public='1',privname='Edit Contributions',scope='local' WHERE privcode='contrib_edit';
|
||||
INSERT IGNORE INTO priv_list (des, is_public, privcode, privname, scope) VALUES ('Allows a user to access shipping tools.', '1', 'shipping', 'Shipping Access', 'local');
|
||||
UPDATE priv_list SET des='Allows a user to access shipping tools.',is_public='1',privname='Shipping Access',scope='local' WHERE privcode='shipping';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('0', 'char', 'Override some payment checks to allow a user to pay. Values are Y to allow payment, N to deny payment.', '0', '0', 'allow_pay', 'Allow/deny a user to pay', 'local');
|
||||
UPDATE userproplist SET cldversion='0',datatype='char',des='Override some payment checks to allow a user to pay. Values are Y to allow payment, N to deny payment.',indexed='0',multihomed='0',prettyname='Allow/deny a user to pay',scope='local' WHERE name='allow_pay';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('4', 'char', 'Initial create.bml account type selection', '', '0', 'create_accttype', 'Created account type', 'local');
|
||||
UPDATE userproplist SET cldversion='4',datatype='char',des='Initial create.bml account type selection',indexed='',multihomed='0',prettyname='Created account type',scope='local' WHERE name='create_accttype';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('4', 'bool', 'Boolean: 1 means mail Accounts about any payment activity for monitoring', '', '', 'fraud_watch', 'Fraud Watch', 'local');
|
||||
UPDATE userproplist SET cldversion='4',datatype='bool',des='Boolean: 1 means mail Accounts about any payment activity for monitoring',indexed='',multihomed='',prettyname='Fraud Watch',scope='local' WHERE name='fraud_watch';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('4', 'bool', 'Opt out of latest.bml, latest-rss.bml, and latest-img.bml if on.', '0', '0', 'latest_optout', 'Latest Updates Opt Out', 'local');
|
||||
UPDATE userproplist SET cldversion='4',datatype='bool',des='Opt out of latest.bml, latest-rss.bml, and latest-img.bml if on.',indexed='0',multihomed='0',prettyname='Latest Updates Opt Out',scope='local' WHERE name='latest_optout';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('4', 'bool', 'Assignment agreement necessary for bazaar payouts', '0', '0', 'legal_assignagree', 'Assignment Agreement Received', 'local');
|
||||
UPDATE userproplist SET cldversion='4',datatype='bool',des='Assignment agreement necessary for bazaar payouts',indexed='0',multihomed='0',prettyname='Assignment Agreement Received',scope='local' WHERE name='legal_assignagree';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('4', 'char', 'Email address of parent provided during age verification.', '0', '0', 'parent_email', 'Parent\'s Email Address', 'local');
|
||||
UPDATE userproplist SET cldversion='4',datatype='char',des='Email address of parent provided during age verification.',indexed='0',multihomed='0',prettyname='Parent\'s Email Address',scope='local' WHERE name='parent_email';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('4', 'blobchar', 'Packed POP3 deleted message id list', '0', '0', 'pop3_deletelist', 'POP3 Deletion List', 'local');
|
||||
UPDATE userproplist SET cldversion='4',datatype='blobchar',des='Packed POP3 deleted message id list',indexed='0',multihomed='0',prettyname='POP3 Deletion List',scope='local' WHERE name='pop3_deletelist';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('4', 'char', 'Post by phone stored blob format', '0', '0', 'pp_format', 'PhonePost File Format', 'local');
|
||||
UPDATE userproplist SET cldversion='4',datatype='char',des='Post by phone stored blob format',indexed='0',multihomed='0',prettyname='PhonePost File Format',scope='local' WHERE name='pp_format';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('4', 'num', 'The friendgroup id for friends that may transcribe audio postings.', '0', '0', 'pp_transallow', 'Allowed phonepost transcribers', 'local');
|
||||
UPDATE userproplist SET cldversion='4',datatype='num',des='The friendgroup id for friends that may transcribe audio postings.',indexed='0',multihomed='0',prettyname='Allowed phonepost transcribers',scope='local' WHERE name='pp_transallow';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('0', 'char', 'Keyword to show in singles search', '0', '0', 'single_pickw', 'Single Picture Keyword', 'local');
|
||||
UPDATE userproplist SET cldversion='0',datatype='char',des='Keyword to show in singles search',indexed='0',multihomed='0',prettyname='Single Picture Keyword',scope='local' WHERE name='single_pickw';
|
||||
INSERT IGNORE INTO userproplist (cldversion, datatype, des, indexed, multihomed, name, prettyname, scope) VALUES ('0', 'char', 'Delimited by pipes: MF/MM/FF/FM, country, state, city, age', '1', '0', 'single_status', 'Single Status', 'local');
|
||||
UPDATE userproplist SET cldversion='0',datatype='char',des='Delimited by pipes: MF/MM/FF/FM, country, state, city, age',indexed='1',multihomed='0',prettyname='Single Status',scope='local' WHERE name='single_status';
|
||||
5132
ljcom/bin/upgrading/be.dat
Normal file
5132
ljcom/bin/upgrading/be.dat
Normal file
File diff suppressed because it is too large
Load Diff
2906
ljcom/bin/upgrading/da.dat
Normal file
2906
ljcom/bin/upgrading/da.dat
Normal file
File diff suppressed because it is too large
Load Diff
5145
ljcom/bin/upgrading/de.dat
Normal file
5145
ljcom/bin/upgrading/de.dat
Normal file
File diff suppressed because it is too large
Load Diff
137
ljcom/bin/upgrading/deadphrases-local.dat
Normal file
137
ljcom/bin/upgrading/deadphrases-local.dat
Normal file
@@ -0,0 +1,137 @@
|
||||
# ljcom version of deadphrases.dat
|
||||
#
|
||||
|
||||
general dystopia.nav.setscheme
|
||||
|
||||
general /index.bml.getstarted.create.caption
|
||||
general /index.bml.getstarted.create.title
|
||||
general /index.bml.getstarted.download.caption
|
||||
general /index.bml.getstarted.download.title
|
||||
general /index.bml.getstarted.header
|
||||
general /index.bml.getstarted.modify.caption
|
||||
general /index.bml.getstarted.modify.title
|
||||
general /index.bml.getstarted.update.caption
|
||||
general /index.bml.getstarted.update.title
|
||||
general /index.bml.howuse.create
|
||||
general /index.bml.howuse.exp
|
||||
general /index.bml.howuse.header
|
||||
general /index.bml.otheropts.editfriends.caption
|
||||
general /index.bml.otheropts.editfriends.title
|
||||
general /index.bml.otheropts.editinfo.caption
|
||||
general /index.bml.otheropts.editinfo.title
|
||||
general /index.bml.otheropts.editjournal.caption
|
||||
general /index.bml.otheropts.editjournal.title
|
||||
general /index.bml.otheropts.header
|
||||
general /index.bml.support.contrib.caption
|
||||
general /index.bml.support.contrib.title
|
||||
general /index.bml.support.dev.caption
|
||||
general /index.bml.support.dev.title
|
||||
general /index.bml.support.faq.caption
|
||||
general /index.bml.support.faq.title
|
||||
general /index.bml.support.header
|
||||
general /index.bml.support.web.caption
|
||||
general /index.bml.support.web.title
|
||||
general /index.bml.text.1
|
||||
general /index.bml.text.2
|
||||
general /index.bml.text.3
|
||||
general /index.bml.text.4
|
||||
general /index.bml.text.5
|
||||
general /index.bml.whatis.def
|
||||
general /index.bml.whatis.dev
|
||||
general /index.bml.whatis.header
|
||||
general /index.bml.whatis.uses
|
||||
|
||||
general ljcom.login.fastservers
|
||||
|
||||
general /code/index.bml.title
|
||||
general /code/index.bml.opensource.header
|
||||
general /code/index.bml.opensource
|
||||
general /code/index.bml.servercode.header
|
||||
general /code/index.bml.servercode
|
||||
general /code/index.bml.libraries.header
|
||||
general /code/index.bml.libraries
|
||||
general /code/index.bml.name
|
||||
general /code/index.bml.description
|
||||
general /code/index.bml.LJCache.name
|
||||
general /code/index.bml.LJCache.description
|
||||
general /code/index.bml.LJTextMessage.name
|
||||
general /code/index.bml.LJTextMessage.description
|
||||
general /code/index.bml.LJSpellCheck.name
|
||||
general /code/index.bml.LJSpellCheck.description
|
||||
general /code/index.bml.HTMLCleaner.name
|
||||
general /code/index.bml.HTMLCleaner.description
|
||||
general /code/index.bml.BML.name
|
||||
general /code/index.bml.BML.description
|
||||
|
||||
general /manage/phonepost.bml.introduction
|
||||
general /manage/phonepost.bml.phone.explanation
|
||||
|
||||
general /paidaccounts/index.bml.deliverydate.details
|
||||
general /paidaccounts/index.bml.deliverydate.label
|
||||
general /paidaccounts/index.bml.existingpaidaccount.choose_one
|
||||
general /paidaccounts/index.bml.existingpaidaccount.header
|
||||
general /paidaccounts/index.bml.existingpaidaccount.months
|
||||
general /paidaccounts/index.bml.existingpaidaccount.use_this_form
|
||||
general /paidaccounts/index.bml.existingpaidaccount.your_password
|
||||
general /paidaccounts/index.bml.existingpaidaccount.your_username
|
||||
general /paidaccounts/index.bml.features.available
|
||||
general /paidaccounts/index.bml.features.available.domain_email.about
|
||||
general /paidaccounts/index.bml.features.available.domain_email.header
|
||||
general /paidaccounts/index.bml.features.available.domain_name.about
|
||||
general /paidaccounts/index.bml.features.available.domain_name.header
|
||||
general /paidaccounts/index.bml.features.available.fast_servers.about
|
||||
general /paidaccounts/index.bml.features.available.fast_servers.header
|
||||
general /paidaccounts/index.bml.features.available.polls.about
|
||||
general /paidaccounts/index.bml.features.available.polls.header
|
||||
general /paidaccounts/index.bml.features.available.styles.about
|
||||
general /paidaccounts/index.bml.features.available.styles.header
|
||||
general /paidaccounts/index.bml.features.available.text_messaging.about
|
||||
general /paidaccounts/index.bml.features.available.text_messaging.header
|
||||
general /paidaccounts/index.bml.features.available.userpics.about
|
||||
general /paidaccounts/index.bml.features.available.userpics.header
|
||||
general /paidaccounts/index.bml.features.planned.about
|
||||
general /paidaccounts/index.bml.features.planned.counters.about
|
||||
general /paidaccounts/index.bml.features.planned.counters.header
|
||||
general /paidaccounts/index.bml.features.planned.custom_comment_style.about
|
||||
general /paidaccounts/index.bml.features.planned.custom_comment_style.header
|
||||
general /paidaccounts/index.bml.gift.anonymous
|
||||
general /paidaccounts/index.bml.gift.proceed
|
||||
general /paidaccounts/index.bml.gift.question
|
||||
general /paidaccounts/index.bml.gift.recipient
|
||||
general /paidaccounts/index.bml.newpaidaccount.about
|
||||
general /paidaccounts/index.bml.newpaidaccount.header
|
||||
general /paidaccounts/index.bml.otherpay.alsopayby
|
||||
general /paidaccounts/index.bml.otherpay.check_or_mo
|
||||
general /paidaccounts/index.bml.otherpay.header
|
||||
general /paidaccounts/index.bml.otherpay.phone_num
|
||||
general /paidaccounts/index.bml.otherthings.header
|
||||
general /paidaccounts/index.bml.otherthings.howtogive
|
||||
general /paidaccounts/index.bml.paypal.about
|
||||
general /paidaccounts/index.bml.paypal.header
|
||||
|
||||
general /press/staff.bml.back
|
||||
general /press/staff.bml.deviant
|
||||
general /press/staff.bml.evan.title
|
||||
general /press/staff.bml.evan.quip
|
||||
general /press/staff.bml.kevin.title
|
||||
general /press/staff.bml.nick.title
|
||||
general /press/staff.bml.brett.title
|
||||
|
||||
general /rename/index.bml.cost
|
||||
|
||||
general /rename/use.bml.confirm
|
||||
general /rename/use.bml.error.usedtoke
|
||||
general /rename/use.bml.error.color
|
||||
|
||||
general xcolibur.nav.setscheme
|
||||
|
||||
general ljcom.account.feature.full
|
||||
|
||||
general xcolibur.nav.about.invite
|
||||
general dystopia.nav.invite
|
||||
|
||||
general /legal/coppa.bml.title
|
||||
general /legal/index.bml.docs.coppa.about
|
||||
general /legal/index.bml.docs.privacy.about
|
||||
|
||||
general dystopia.nav.legalcoppa
|
||||
691
ljcom/bin/upgrading/en_GB.dat
Normal file
691
ljcom/bin/upgrading/en_GB.dat
Normal file
@@ -0,0 +1,691 @@
|
||||
;; -*- coding: utf-8 -*-
|
||||
/changepassword.bml.changepassword.instructions=Fill out the form below to change your password. For help with choosing a good password and keeping your account secure, see <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=71">this FAQ</a>.
|
||||
|
||||
/changepassword.bml.error.badnewpassword=Your new password confirmation does not match your new password. You may have made a mistake in typing. Please type and confirm your new password again.
|
||||
|
||||
/changepassword.bml.error.notvalidated=You cannot change your password if your current email address has not been validated. Please see <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=11">the FAQ</a> for instructions on doing this.
|
||||
|
||||
/community/index.bml.main<<
|
||||
<?h1 Welcome! h1?>
|
||||
<?p
|
||||
Welcome to the LiveJournal Community Centre. This is the place to find out how and where to interact with your fellow LiveJournal addicts! LiveJournal isn't only a a great place for keeping a journal, it's a place where people meet, interact, share common interests, and have a good time. Here are some of our community features to keep you informed and in touch.
|
||||
p?>
|
||||
|
||||
<?h1 New? h1?>
|
||||
<?p
|
||||
Are you new to LiveJournal and don't know quite what to do yet? Then you'll want to head over to <a href="/community/newbies"><strong>The 'Newbies' Lounge</strong></a>, where you'll find answers to many of the questions you may have. Visit <?ljcomm newbies ljcomm?>, explore a bit, and you'll be a pro in no time at all!
|
||||
p?>
|
||||
|
||||
<?h1 Stay informed! h1?>
|
||||
<?p
|
||||
Stay informed of what's going on in LiveJournal. There are a number of official LiveJournal communities you may wish to browse. The following two are particularly useful.
|
||||
<br /><br />
|
||||
Add <?ljuser news ljuser?> to your friends page to keep up with events and issues that are relevant to the entire LiveJournal community.<br />
|
||||
Add <?ljcomm lj_maintenance ljcomm?> to your friends page to be informed when downtime is planned, and reports on unplanned interruptions of service.
|
||||
p?>
|
||||
|
||||
<?h1 Chat! h1?>
|
||||
<?p
|
||||
LiveJournal users chat up a storm. Many of them use popular instant messengers, including <a href="http://www.aim.com/index.adp"><strong>AIM</strong></a>, <a href="http://web.icq.com/"><strong>ICQ</strong></a>, <a href="http://messenger.yahoo.com/"><strong>Yahoo!</strong></a>, <a href="http://messenger.msn.com/"><strong>MSN</strong></a>, or <a href="http://www.jabber.org/"><strong>Jabber</strong></a> instant messengers. If you do, be sure to list it in your <a href="/editinfo.bml"><strong>personal info settings</strong></a>. If you have a <a href="/paidaccounts/"><strong>Paid Account</strong></a>, you can also enable your mobile phone or pager to <a href="/support/faqbrowse.bml?faqid=30"><strong>receive text messages</strong></a>.
|
||||
p?>
|
||||
|
||||
<?h1 Volunteer! h1?>
|
||||
<?p
|
||||
Don't be shy! Help out! The best way to help out is by purchasing a <a href="/paidaccounts/"><strong>Paid Account</strong></a>. There are, of course, loads of other ways you help out.
|
||||
<br /><br />
|
||||
LiveJournal is an Open Source project; if you have experience with programming languages or server side applications you can check out the <strong>LiveJournal Development Community</strong>, <?ljcomm lj_dev ljcomm?>. If you have ideas about how LiveJournal could be better, check out the <strong>LiveJournal Suggestions Area</strong>, <?ljcomm suggestions ljcomm?>. If you would like to help with just about anything, visit the <strong>LiveJournal Business Community</strong>, <?ljcomm lj_biz ljcomm?>. If you like helping people, visit our technical support centre and help someone out. If you are savy with graphic design, check out the <strong>LiveJournal Art Community</strong>, <?ljcomm lj_art ljcomm?>.
|
||||
p?>
|
||||
|
||||
<?h1 What is a Community? h1?>
|
||||
<?p
|
||||
A community is basically a journal run by a member of LiveJournal for people with common interests. Communities are free to use and create... anyone can have them, and they're easy to set up, too! LiveJournal Communities cover topics from <a href="/community/anime/"><strong>Anime</strong></a> to <a href="/community/zen_within/"><strong>Zen Buddhism</strong></a>, from <a href="/community/astronomy/"><strong>Astronomy</strong></a> to <a href="/community/invader_zim/"><strong>Zim</strong></a>. You'll also find regional communities for places all around the world. There's probably a LiveJournal community for where you live too!
|
||||
p?>
|
||||
|
||||
<?h1 How do I create my own Community? h1?>
|
||||
<?p
|
||||
There is a <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=78"><strong>FAQ</strong></a> that will explain how to create your very own community. There are also two FAQ Categories (<a href="http://www.livejournal.com/support/faqbrowse.bml?faqcat=community"><strong>General Community FAQs</strong></a> and <a href="http://www.livejournal.com/support/faqbrowse.bml?faqcat=comm-manage"><strong>Community Management FAQs</strong></a>) covering just about everything you'll ever need to know about communities. If you still need more information, feel free to <a href="http://www.livejournal.com/support/submit.bml"><strong>submit a support request</strong></a>.
|
||||
p?>
|
||||
|
||||
<?h1 How do I find other Communities? h1?>
|
||||
<?p
|
||||
At this time there are two official LiveJournal Communities specifically created to help you find the community you're looking for.
|
||||
p?>
|
||||
|
||||
<ul>
|
||||
<li><strong><a href="./search.bml">Community Search</a></strong></li>
|
||||
<li><strong>Check out the Promotions Community (<?ljcomm community_promo ljcomm?>)</strong></li>
|
||||
<li><strong>Check out the Search Community (<?ljcomm community_quest ljcomm?>)</strong></li>
|
||||
</ul>
|
||||
|
||||
<?p
|
||||
Notice something you think is missing?<br />
|
||||
Email <a href="mailto:jproulx-(a)-livejournal-dot-com">Jesse Proulx</a>, (<?ljuser jproulx ljuser?>) the Community Director.
|
||||
p?>
|
||||
.
|
||||
|
||||
/community/index.bml.title=Community Centre
|
||||
|
||||
/community/join.bml.label.banned=The maintainer(s) of this community has/have banned you from joining.
|
||||
|
||||
/community/join.bml.label.sure=Are you sure?
|
||||
|
||||
/community/leave.bml.sure=Are you sure?
|
||||
|
||||
/community/members.bml.key.admin=<b>Maintainer</b>
|
||||
|
||||
/community/members.bml.key.moderate=<b>Moderator</b>
|
||||
|
||||
/community/members.bml.key.post=<b>Posting Access</b>
|
||||
|
||||
/community/moderate.bml.reject.reason=You can also explain to the poster your reasons for rejecting their entry. The reasons will be sent to the poster by email.
|
||||
|
||||
/community/settings.bml.label.maintainer.login=If this is not the maintainer account, <a href='/login.bml?ret=1'>log in</a> as somebody else.
|
||||
|
||||
/community/settings.bml.label.nmheader=Non-Member Posting
|
||||
|
||||
/create.bml.create.text=Creating a new LiveJournal is easy — just follow the instructions below!
|
||||
|
||||
/create.bml.error.coppa.under13=Sorry, but due to COPPA restrictions, you cannot use the LiveJournal service until you
|
||||
|
||||
/create.bml.error.email.nospaces=No spaces are allowed in an email address. If you're on AOL, remember that your Internet Email address is your screen name with all spaces removed, followed by <b>@aol.com</b>
|
||||
|
||||
/create.bml.password.input.head2=Confirm password:
|
||||
|
||||
/create.bml.success.text1=Your journal has been created. Important registration information has been emailed to <font size="+1"><b>[[email]]</b></font> containing further instructions. Be sure to confirm your journal creation by clicking on the link sent to you in email.
|
||||
|
||||
/create.bml.useacctcodes.entercode=To create a new account, enter an account creation code. For more information, see <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=104">How do I create an account?</a>
|
||||
|
||||
/create.bml.username.charsallowed=Your username may contain only lower-case letters (a-z), digits (0-9) and the underscore character (_). Additionally, it must not be longer than 15 characters.
|
||||
|
||||
/customize/index.bml.s2.advanced.denied=Only paid, permanent, and early adopter account holders may use the advanced customisation area. <a href="/paidaccounts/">Find out the benefits of getting a paid account</a>.
|
||||
|
||||
/customize/index.bml.s2.advanced.header=Advanced Customisations
|
||||
|
||||
/customize/index.bml.s2.advanced.permitted=To create new layers and styles from scratch, visit <a href='./advanced/'>the advanced customisation area</a>.
|
||||
|
||||
/customize/index.bml.s2.customize.header=Step 2: Customise Layout
|
||||
|
||||
/customize/index.bml.s2.customize.settings=If you want to customise your journal further, here you can tweak individual settings to get it looking exactly how you want.
|
||||
|
||||
/customize/index.bml.s2.customize.settings.delete=Remove Customisations
|
||||
|
||||
/customize/index.bml.s2.customize.settings.edit=Edit Customisations
|
||||
|
||||
/customize/index.bml.s2.customize.settings.new=Customise
|
||||
|
||||
/customize/index.bml.title=Customise Journal
|
||||
|
||||
/doc/tour/index.bml.modify.caption<<
|
||||
It is also possible to format your journal in a number of different ways, by making use
|
||||
of predefined styles and colour schemes. Make your journal as unique as you want!
|
||||
.
|
||||
|
||||
/editinfo.bml.allowshowcontact.about=You should keep this option enabled. This allows people to contact you by showing your email address, ICQ number, and AOL Instant Messenger screenname on your profile page.
|
||||
|
||||
/editinfo.bml.autotranslate.header=Auto-convert older entries from:
|
||||
|
||||
/editinfo.bml.bdayreminders.header=Send me birthday reminders (currently disabled)
|
||||
|
||||
/editinfo.bml.bio.about=Here you can enter a little mini-biography about yourself. This will show up on your User Info page.
|
||||
|
||||
/editinfo.bml.blockrobots.about<<
|
||||
If you check this option, robots will be told to go away.
|
||||
Not all robots respect the rules.
|
||||
|
||||
.
|
||||
|
||||
/editinfo.bml.enableboards.about=Check this if you want people to be able to reply to journal entries you post.
|
||||
|
||||
/editinfo.bml.error.email.lj_domain<<
|
||||
You cannot enter an @[[domain]] email address.
|
||||
Enter your real address in that field.
|
||||
If you're a paid user, your [[user]]@[[domain]] address will forward to your real address.
|
||||
To choose which email address(es) are displayed publicly, see the option below the "Show your contact information" option.
|
||||
|
||||
.
|
||||
|
||||
/editinfo.bml.error.excessive_int<<
|
||||
Sorry, you've listed too many interests. The limit is 150, but you've listed [[intcount]].
|
||||
Any changes you made to your interests were not saved. Go back and cut down your list, then save again.
|
||||
.
|
||||
|
||||
/editinfo.bml.error.locale.zip_requires_us<<
|
||||
You entered a zip code but you did not select United States as your country.
|
||||
We only collect zip code information about people in the US.
|
||||
Please go back and remove the zip code or select United States as your country.
|
||||
|
||||
.
|
||||
|
||||
/editinfo.bml.error.tm.require_provider<<
|
||||
If you're going to use text messaging, you must select your service provider.
|
||||
If yours is not listed, please contact us with information about how your service's text messaging feature so we can add support for it.
|
||||
.
|
||||
|
||||
/editinfo.bml.getreplies.about=Check this if you want to get email updates when people reply to your journal entries using the message boards (comments).
|
||||
|
||||
/editinfo.bml.howhear.about<<
|
||||
Just for curiosity's sake, where did you hear about [[sitename]] from?
|
||||
If it was a specific person, enter their username; if it
|
||||
was from another source/article/link/website, enter the appropriate information.
|
||||
|
||||
.
|
||||
|
||||
/editinfo.bml.htmlemail.about<<
|
||||
Check this if your email program fully supports HTML in your email. Some clients try to support it, but fail to display it properly. If you uncheck it, LiveJournal will only send text emails.
|
||||
|
||||
.
|
||||
|
||||
/editinfo.bml.mangleaddress.about<<
|
||||
If you are afraid spam-robots will find your email
|
||||
address on LiveJournal, select this option. Your email address will be modified so it won't be found by address-collecting robots.
|
||||
|
||||
.
|
||||
|
||||
/editinfo.bml.numcomments.about=Check this if you want to append the comment count to URLs, which may make your browser display the visited links in a different colour.
|
||||
|
||||
/editinfo.bml.security.header=Who can view your contact info?
|
||||
|
||||
/editinfo.bml.userpic.about=Below is the miniature picture you have uploaded to represent you throughout the LiveJournal site, in your journal, and in your friends' journals:
|
||||
|
||||
/editinfo.bml.userpic.edit=To delete this picture, or upload a new one, <a href="/editpics.bml#upload" target="_blank">go here</a>.
|
||||
|
||||
/editjournal.bml.btn.proceed=Proceed
|
||||
|
||||
/editjournal.bml.viewwhat=View Which Entries?:
|
||||
|
||||
/editjournal_do.bml.btn.delete=Delete Journal Entry
|
||||
|
||||
/editjournal_do.bml.continue.head=Press to continue…
|
||||
|
||||
/editjournal_do.bml.edit.text<<
|
||||
This is the journal entry you selected to be edited. Change all the information you would like to modify, then click the "Save Journal Entry" button at the bottom.<br /><br />To delete the entry, delete all the text in the text box and click the "Save Journal Entry" button at the bottom.
|
||||
|
||||
.
|
||||
|
||||
/editjournal_do.bml.subject=<b>Subject:</b> <i>(optional)</i>
|
||||
|
||||
/editjournal_do.bml.success.edit=Journal entry was modified. You can view it <a href="[[url]]">here</a>.
|
||||
|
||||
/export.bml.description=This feature lets you download your entire journal to a custom format for backup purposes. For more information about backing up your journal, see <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=8">this FAQ</a>.
|
||||
|
||||
/friends/add.bml.add.text=User [[ljuser]] was added to your friend list. <a href="[[url]]">View your friends page</a>.
|
||||
|
||||
/friends/add.bml.colors.header=Colours
|
||||
|
||||
/friends/add.bml.colors.hover=(Hover your mouse over a colour to see its name)
|
||||
|
||||
/friends/add.bml.colors.text=You may also optionally select the colours that will represent [[user]] in your friends list.
|
||||
|
||||
/friends/add.bml.error1.header=Log In First
|
||||
|
||||
/friends/add.bml.error1.text<<
|
||||
To add a user to your friends list you must first go and <A HREF=\"/login.bml?ret=1\">log in</A>. If you don't
|
||||
already have an account you can <a href=\"/create.bml\">create one</a> to track your friends' journals.
|
||||
.
|
||||
|
||||
/friends/add.bml.error2.text=Invalid or missing username given. To add a friend, go to the <A HREF="/friends/edit.bml">edit friends</A> page.
|
||||
|
||||
/friends/add.bml.error3.text=You already have <b>[[user]]</b> listed as a friend. However, you can modify the colours you've chosen to represent him/her.
|
||||
|
||||
/friends/add.bml.groups.nogroup=No friend groups set up.
|
||||
|
||||
/friends/add.bml.remove.text=User <?ljuser [[user]] ljuser?> was removed from your friend list. You can view your friends page <a href="[[url]]">here</a>.
|
||||
|
||||
/friends/editgroups.bml.text=This page allows you to edit your custom friends groups. Custom friends groups are used for setting security on items and for filtering your friends page. For help, see <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=102">What are custom friends groups? How do I use them?</a>
|
||||
|
||||
/friends/edit_do.bml.addfriends.text=Enter your friends' LiveJournal user names in the boxes below, and pick what background and foreground colours you want to associate with them....
|
||||
|
||||
/friends/edit_do.bml.bgcolor=Background Colour:
|
||||
|
||||
/friends/edit_do.bml.hover=Hover your mouse over a colour to see its name
|
||||
|
||||
/friends/edit_do.bml.mrcolor=Mr. Colour Viewer
|
||||
|
||||
/friends/edit_do.bml.success.text=Your friends have been updated. You can view your newly updated friends page <a href="[[url]]">here</a>.
|
||||
|
||||
/friends/edit_do.bml.textcolor=Text Colour:
|
||||
|
||||
/friends/edit_do.bml.viewer=Colour Viewer
|
||||
|
||||
/friends/filter.bml.error.nogroups=You cannot filter your friends list because you must first <a href="/friends/editgroups.bml">set up your friend groups</a>.
|
||||
|
||||
/friends/index.bml.about<<
|
||||
This page allows you to manage your friends list.
|
||||
By adding other users to your friends list, you can easily see their entries from your friends page. You can also add communities and syndicated feeds to your friends list so that you see their entries on your friends page.
|
||||
.
|
||||
|
||||
/friends/index.bml.edit.about=Add or remove users from your friends list, or edit the colours used to represent them.
|
||||
|
||||
/friends/index.bml.filter=These friend groups can be used to filter your friends view: you can view only the entries of a certain group. They can also be used for group-based security (see below).
|
||||
|
||||
/friends/index.bml.filter.about=Filter your friends list according to specific subgroups.
|
||||
|
||||
/friends/index.bml.security.only=With "Friends-Only" posts, any user on your friends list can view your post.
|
||||
|
||||
/index.bml.frank.logo=<b><i>"Baaaaa",</i> says <a href="/site/goat.bml">Frank</a>.</b>
|
||||
|
||||
/interests.bml.add.btn.text=Add [[interest]]
|
||||
|
||||
/interests.bml.add.toomany.head=Sorry…
|
||||
|
||||
/interests.bml.interested.in=Find people and communities interested in:
|
||||
|
||||
/interests.bml.interests.text=Here are some fun things you can do with interests.
|
||||
|
||||
/interests.bml.users.text=The following users are interested in <b>[[interest]]</b>.
|
||||
|
||||
/legal/index.bml.about<<
|
||||
LiveJournal is dedicated to offering a stable and meaningful experience for members from all
|
||||
backgrounds and nations, so we have a few rules we've laid out to provide this.
|
||||
Our documents here contain reasonable terms and information regarding how we will do our best to serve you,
|
||||
and how we expect members to behave to us and others. LiveJournal works best when people
|
||||
follow these rules. Here are some important ones to remember:
|
||||
<ul>
|
||||
<li>Do not harass, abuse, or threaten others.</li>
|
||||
<li>Do not harm minors in any way.</li>
|
||||
<li>Do not spam the site or any account on the site.</li>
|
||||
<li>Do not post copyrighted content without permission.</li>
|
||||
<li>Do not invade the privacy of others.</li>
|
||||
<li>Do not violate U.S. law or your local laws in any way.</li>
|
||||
</ul>
|
||||
The complete list of rules and policies can be found below:
|
||||
.
|
||||
|
||||
/login.bml.expire.sessiononly.text=Your login will expire after you close your browser. If this is your own computer and you're the only user, you may want to set your login expiration such that it never expires:
|
||||
|
||||
/login.bml.login.btn.login=Log in...
|
||||
|
||||
/login.bml.login.head=Log in
|
||||
|
||||
/login.bml.login.text1=To log in to [[sitename]], enter your username and password below. <b>New Users:</b> To create an account, <a href='/create.bml'>go here</a>.
|
||||
|
||||
/login.bml.login.text2=You may also specify when your login expires. By default your login will expire when you close your browser, which is best on public computers. However, if you're the only user of your computer and nobody else has access to it, you may choose to remain logged in forever. For more information on this and other options, see <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=135">What are the options when I log in?</a>
|
||||
|
||||
/login.bml.title=Log in
|
||||
|
||||
/login.bml.whylogin.head=Why Log in?
|
||||
|
||||
/logout.bml.killall.text=You have other active sessions. Do you want to expire all your sessions, and not just this one? (See <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=159">this FAQ</a> for more information.)
|
||||
|
||||
/logout.bml.logout.btn=Log out
|
||||
|
||||
/lostinfo.bml.lostpassword.text=If you've lost your password, enter your username and optionally, the email address you'd like the password sent to. In order to have your password sent to a previously listed email address, that address must have been validated. If you leave the email field blank, it will be mailed to your current address.
|
||||
|
||||
/lostinfo.bml.lostpassword.title=Lost your password?
|
||||
|
||||
/lostinfo.bml.lostusername.title=Lost your username?
|
||||
|
||||
/lostinfo_do.bml.lostpasswordmail.part1<<
|
||||
*** This is an automated email. You do not need to respond to it. ***
|
||||
|
||||
This is your requested password reminder from [[sitename]].
|
||||
Below are the username, password, and email address your journal is registered under.
|
||||
|
||||
Username: [[username]]
|
||||
Password: [[password]]
|
||||
Email Address: [[emailadr]]
|
||||
.
|
||||
|
||||
/manage/index.bml.customization.customize.about=Change the appearance of your journal
|
||||
|
||||
/manage/index.bml.friends.edit.about=Add or remove users from your friends list, or change the colours used to represent them.
|
||||
|
||||
/manage/index.bml.information.status.about=Set your account's activation status (delete or undelete your account)
|
||||
|
||||
/manage/phonepost.bml.phone=Authorised Phone Number:
|
||||
|
||||
/manage/phonepost.bml.pin=Personal Identification Number:
|
||||
|
||||
/manage/phonepost.bml.save=Save Settings
|
||||
|
||||
/manage/phonepost.bml.title=Post by Phone Settings
|
||||
|
||||
/modify_do.bml.colortheme.about=Here you can select what colour theme will be applied to the layout options you pick above. Or, if you don't like the provided colours, specify your own!
|
||||
|
||||
/modify_do.bml.colortheme.color.head1=Colour
|
||||
|
||||
/modify_do.bml.colortheme.customcolors=Custom Colours
|
||||
|
||||
/modify_do.bml.colortheme.head=Colour Theme
|
||||
|
||||
/modify_do.bml.domainalias.helptext=For this to work, you'll need to arrange to have your domain name's DNS point to the same IP address as [[sitename]]. For more information, see <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=129">this FAQ</a>.
|
||||
|
||||
/modify_do.bml.journaloptions.about<<
|
||||
From here you can customise the look of your LiveJournal pages. If you're really curious how everything works, read the <a href="/developer/" target="_blank">developer information</a>. Otherwise, we'll assume you're satisifed with the basic options below:
|
||||
|
||||
.
|
||||
|
||||
/modify_do.bml.moodicons.about=When posting journal entries you can also specify your current mood. Users have submitted different sets of mood icons that you can use, or you can select "None" if you don't want any pictures beside your moods. (of course, you don't even have to use the Current Mood feature at all.)
|
||||
|
||||
/modify_do.bml.overrides.about=If you are happy with the journal layout options above, you can ignore this section. This is for tweaking very specific things about your page layout. See <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=124">What are overrides? How do they work?</a> for an overview, and visit the <A HREF="/developer/" TARGET=_blank>developer section</A> for details. Also note that overrides are for overriding only one or two things about a style. If you'd like to override everything, you need to <A HREF="/styles/create.bml" TARGET=_blank>create your own style</A>. For an overview of how to create a style, see <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=128">How do I make a custom style?</a>
|
||||
|
||||
/modify_do.bml.overrides.note=Please note that not all style variables can be overridden. See the <a href="/developer/varlist.bml">documentation</a> for more details.<br />Also, be aware that if you attempt to edit your overrides and you have used a tag that is not allowed in the head of the document -- such as <DIV>, <SPAN>, <IMG>, and many other tags -- that tag will be stripped. The only HTML elements that can be used in the *_HEAD overrides are those elements that are valid in the head of a HTML document. This is limited to <title>, <base>, <style>, <link>, and <meta>.
|
||||
|
||||
/modify_do.bml.overrides.warning=THIS IS <U>NOT</U> WHERE YOU TYPE YOUR JOURNAL‼
|
||||
|
||||
/paidaccounts/index.bml.costs.rates.inexpensive<<
|
||||
That works out to a little over <b>$2/month</b> (roughly £1.30) for the year plan.
|
||||
That'll hardly break the bank.
|
||||
The most annoying part will likely be pulling out your wallet, finding your credit card, and typing in your information.
|
||||
.
|
||||
|
||||
/paidaccounts/index.bml.features<<
|
||||
<dd>To show appreciation for users who have made contributions, there are a number of features that are only available to paid accounts. These features include, but aren't limited to:</dd>
|
||||
|
||||
<dt>New! Post by Email</dt>
|
||||
<dd>Paid accounts can post to their journals and communities quickly and securely through our email gateway.</dd>
|
||||
|
||||
<dt>Customising your Journal</dt>
|
||||
<dd>In addition to just being able to pick the style of your journal and the colours, you'll also be able to create your own style using whatever HTML you like. This will also let you be able to make new styles that match your website that you can then easily embed, never revealing that you're using LiveJournal.com as your journal mechanism.</dd>
|
||||
|
||||
<dt>Polls</dt>
|
||||
<dd>Paid accounts have the ability to create polls in their own journals and in any communities they are a part of and can post to.</dd>
|
||||
|
||||
<dt>More User Picture Icons</dt>
|
||||
<dd>Paid accounts are allowed 15 user picture icons, rather than the 3 allotted to free users.</dd>
|
||||
|
||||
<dt>LiveJournal.com Email Alias</dt>
|
||||
<dd>Paid accounts are given a LiveJournal.com email address ([[username]]@livejournal.com) that can be turned on or off.</dd>
|
||||
|
||||
<dt>Directory Searches</dt>
|
||||
<dd>Paid accounts are given access to use the directory to search for other users.</dd>
|
||||
|
||||
<dt>LiveJournal.com Subdomain</dt>
|
||||
<dd>Instead of having your journal at
|
||||
http://www.livejournal.com/users/[[username]]/, it'll also be available at http://[[username]].livejournal.com/, much shorter and more personal.</dd>
|
||||
|
||||
<dt>Syndication</dt>
|
||||
<dd>Paid accounts have the ability to create new syndicated accounts, which are RSS feeds that are incarnated on LiveJournal.</dd>
|
||||
|
||||
<dt>Text Messaging Interface</dt>
|
||||
<dd>Paid accounts are given access to the text messaging feature, which will allow them to receive text messages on their mobile phone or pager through LiveJournal's custom interface.</dd>
|
||||
|
||||
<dt>More To-Do Items</dt>
|
||||
<dd>Paid accounts can set up to 150 to-do list items in their to-do lists, and can set differing security levels on each item.</dd>
|
||||
|
||||
<dt>Embedding</dt>
|
||||
<dd>Paid accounts have access to the complete range of options for embedding your journal into your home page, as explained on the "Embedding" page.</dd>
|
||||
|
||||
<dt>Domain Forwarding</dt>
|
||||
<dd>Paid users can set up domain forwarding, so that their internet domain points to their LiveJournal.</dd>
|
||||
|
||||
<dt>More...</dt>
|
||||
<dd>For a complete list of Paid Account benefits, please read <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=131">What are the Paid Account benefits</a>?</dd>
|
||||
.
|
||||
|
||||
/paidaccounts/index.bml.whypay.header=I have to pay to use LiveJournal?
|
||||
|
||||
/press/staff.bml.jproulx.quip=Geek to User Liaison
|
||||
|
||||
/press/staff.bml.whitaker.title=Remote Developer
|
||||
|
||||
/register.bml.email.body<<
|
||||
This is the validation email you have requested.
|
||||
To complete validation of your account, please visit this URL:
|
||||
|
||||
[[conflink]]
|
||||
|
||||
You may have to copy and paste this link into your browser's window.
|
||||
|
||||
Regards,
|
||||
[[sitename]]
|
||||
[[sitelink]]
|
||||
.
|
||||
|
||||
/site/contract.bml.promise.account.about<<
|
||||
Permanent accounts will be honored for the life of the site. Paid accounts will remain as
|
||||
such until they expire or are renewed. Early adopters will be granted access to the paid
|
||||
features that were freely available in the early history of the site. (This is with the exception of account termination due to <a href="/legal/tos.bml">Terms of Service</a>
|
||||
violation)
|
||||
.
|
||||
|
||||
/site/contract.bml.promise.spam.about<<
|
||||
We strongly believe that spam has no place on the internet, and we promise to never send you any email without implied or implicit consent. We promise to never sell lists of users' email addresses or personal information, and we promise to never spam on the behalf of an interested
|
||||
third party.
|
||||
.
|
||||
|
||||
/suggestions/index.bml.howto.text<<
|
||||
<dl>
|
||||
<dt><span style='font-size: 1.2em'><strong><a href="/tools/memories.bml?user=suggestions">Check prior suggestions</a></strong></span></dt><dd>
|
||||
First, read over past suggestions to make sure that something similar hasn't already been brought up. If it has, you can read the comments on the entry. Sometimes, things might look as though they've been ignored, but they might be in development. Sometimes, ideas are rejected or delayed due to other concerns.
|
||||
</dd>
|
||||
<dt><span style='font-size: 1.2em'><strong>Couldn't find your idea? <a href="/suggestions/generator.bml">Share it with us!</a></strong></span></dt><dd>
|
||||
The template must be used for all suggestions. Be sure to fill out all areas of the template, and make sure your suggestion is correct and complete before you post it. Also, the suggestion generator does not add in line breaks, so you can use the <br> tag to produce whitespace. This makes your suggestion easier to read.
|
||||
</dd>
|
||||
<dt><span style='font-size: 1.2em'><strong>Submit It!</strong></span></dt><dd>
|
||||
You can add the <lj comm=suggestions> community to your Friends list <a href="http://www.livejournal.com/friends/add.bml?user=suggestions">here</a>. Once a suggestion is posted, people will discuss it. If we think it's a good idea, it will be added to the list of developer projects, and will be worked on as time permits. Not all suggestions can be implemented immediately, so please be patient with the process.
|
||||
</dd></dl>
|
||||
.
|
||||
|
||||
/suggestions/index.bml.info.text<<
|
||||
Feel that you can contribute to the implementation of your suggestions? Feel free to 'watch' or join the communities below:
|
||||
<dl>
|
||||
<dt><strong><a href="/community/lj_dev/">LiveJournal Developer's Forum</a></strong> -- talking about technical things.</dt>
|
||||
<dd><ul>
|
||||
<li><a href="/community/lj_dev/info">Community Info</a></li>
|
||||
<li><a href="/todo/?user=lj_dev">To-Do List</a></li>
|
||||
</ul></dd>
|
||||
<dt><strong><a href="/community/lj_biz/">LiveJournal Business Forum</a></strong> -- talking about general LiveJournal business opportunities and related areas.</dt>
|
||||
<dd><ul>
|
||||
<li><a href="/community/lj_biz/info">Community Info</a></li>
|
||||
<li><a href="/todo/?user=lj_biz">To-Do List</a></li>
|
||||
</ul></dd>
|
||||
<dt><strong><a href="/community/lj_userdoc/">LiveJournal User Documentation Forum</a></strong> -- discussing and editing most forms of end user documentation.</dt>
|
||||
<dd><ul>
|
||||
<li><a href="/community/lj_userdoc/info">Community Info</a></li>
|
||||
<li><a href="/todo/?user=lj_userdoc">To-Do List</a></li>
|
||||
</ul></dd>
|
||||
<dt><strong><a href="/community/lj_art/">LiveJournal Art Forum</a></strong> -- discussing and sharing icons, mood themes, colour themes and userpics.</dt>
|
||||
<dd><ul>
|
||||
<li><a href="/community/lj_art/info">Community Info</a></li>
|
||||
<li><a href="/todo/?user=lj_art">To-Do List</a></li>
|
||||
</ul></dd>
|
||||
</dl>
|
||||
<i>Please remember that the people who implement LiveJournal changes and additions are fellow users like yourself. These things can take time and the more you can help with implementing, the more that can be achieved.</i>
|
||||
.
|
||||
|
||||
/suggestions/index.bml.rules<<
|
||||
There are a few things to keep in mind:
|
||||
<ul>
|
||||
<li>Many suggestions have already been proposed and discussed, but simply not implemented yet. Be sure that you're not submitting a duplicate.</li>
|
||||
<li>Flaming will not be tolerated. Everyone has different ideas about how LiveJournal should work; remember that promoting your opinion is all right, but flaming someone else's opinion is not.</li>
|
||||
<li>Be as thorough as possible with your suggestion. A suggestion that contains detailed implementation notes is more likely to be accepted than one that doesn't. You don't need to know how to program; just try to think about what else your idea would affect, and bring up any problems you can see with it.</li>
|
||||
<li>Be sure to read the <a href="/support/faq.bml">FAQs</a> first, to see if your idea already exists, or if an existing aspect of the site can be used to do what you want.</li>
|
||||
<li>If you want to ask a question about how LiveJournal works, aren't certain if something exists or not, or are having a problem, don't submit a suggestion. Ask <a href="/support/">Support</a> instead.</li>
|
||||
</ul>
|
||||
.
|
||||
|
||||
/support/append_request.bml.bounce.toomany=You can only send to up to five email addresses. You have specified more than five.
|
||||
|
||||
/support/append_request.bml.internal.touch=To change a request's status, you must select "Internal Comment / Action" and explain why you're changing it.
|
||||
|
||||
/support/append_request.bml.successlinks<<
|
||||
<ul>
|
||||
<li>Go back to <a href='[[back]]'>Request #[[number]]</a></li>
|
||||
<li>Go back to the <a href='[[open]]'>open support requests</a></li>
|
||||
<li>Go back to the <a href='[[opencat]]'>open support requests in the same category</a></li>
|
||||
<li>Go to <a href='[[prevopen]]'>previous</a> /
|
||||
<a href='[[nextopen]]'>next</a> open request</li>
|
||||
<li>Go to <a href='[[cprevopen]]'>previous</a> /
|
||||
<a href='[[cnextopen]]'>next</a> open request in the same category</li>
|
||||
</ul>
|
||||
.
|
||||
|
||||
/support/help.bml.interim<<
|
||||
<?p Every LiveJournal user is welcome to volunteer in
|
||||
Support. There are many resources that you may find helpful.
|
||||
The most important for new volunteers are listed here. p?>
|
||||
|
||||
<ul><li><a href="/doc/guide/support.bml">The Support Guide</a></li>
|
||||
<li><?ljcomm lj_support ljcomm?></li>
|
||||
<li><?ljcomm helpscreening ljcomm?></li></ul>
|
||||
|
||||
<?p Both of the above communities have particularly helpful posts
|
||||
listed as memories. The <cite><a href="/tools/memories.bml?user=helpscreening&keyword=Getting+Started&filter=all">Getting
|
||||
Started</a></cite> category in <a href="/tools/memories.bml?user=helpscreening">HelpScreening's memories</a>
|
||||
is an especially good place for new
|
||||
volunteers to get information. p?>
|
||||
|
||||
<?p New volunteers should keep the following basic rules of
|
||||
Support in mind: p?>
|
||||
|
||||
<ul><li>Be professional and courteous.</li>
|
||||
<li>Don't contact people submitting requests outside the Support
|
||||
board to discuss their request or give them information.</li>
|
||||
<li>Keep information in Support requests private.</li>
|
||||
<li>Don't copy other people's answers.</li></ul>
|
||||
|
||||
<?hr?>
|
||||
|
||||
<?p When you first start answering requests in Support, your
|
||||
answers will be screened. You won't be able to see other
|
||||
screened answers. Experienced Support volunteers will approve
|
||||
the first answer that fully answers the request and follows
|
||||
Support's guidelines. If your answer isn't approved, it either
|
||||
wasn't first or had some problem with it. You can learn why
|
||||
answers are or aren't approved by asking in <?ljcomm helpscreening ljcomm?>, but
|
||||
please wait until there is an approved answer in the request. p?>
|
||||
|
||||
<?p Points are awarded when a request is closed. They are given
|
||||
only to an approved answer. People who submit requests also
|
||||
have the option of closing without credit. Because of this,
|
||||
many requests will close with no points awarded. It generally
|
||||
takes about a week for a request to close, but this time can vary
|
||||
based on the type of request. p?>
|
||||
|
||||
<?p Support points can be difficult to earn, but if you have patience
|
||||
and persistence, you can learn how to write approvable answers
|
||||
and both earn Support points and help people. p?>
|
||||
|
||||
<?p Support requests can be found on the <a
|
||||
href="/support/help.bml">Support
|
||||
board</a>. p?>
|
||||
.
|
||||
|
||||
/support/see_overrides.bml.error.noprivs=Only users with the supportviewscreened or supporthelp privilege can view another user's overrides.
|
||||
|
||||
/syn/index.bml.loginrequired.text=To manage your syndicated accounts, first <a href="/login.bml?ret=1/">log in</a>.
|
||||
|
||||
/talkmulti.bml.error.comms_deleted=One of the comments has been deleted since you selected it. For security reasons, please go back and try again.
|
||||
|
||||
/talkpost.bml.loginq=Log in?
|
||||
|
||||
/talkpost.bml.opt.friendsonly=- this user has disabled anonymous and non-friend posting. You may post here if [[username]] lists you as a friend.
|
||||
|
||||
/talkpost.bml.title=Post a Comment
|
||||
|
||||
/talkpost_do.bml.error.badpassword=Incorrect password given for the username specified. If you've forgotten your password, you can <a href='/lostinfo.bml'>recover it</a>.
|
||||
|
||||
/talkpost_do.bml.error.badusername=The LiveJournal username you specified does not exist. If you've forgotten your username, you can <a href='/lostinfo.bml'>recover it</a>, or you may post as "Anonymous" instead.
|
||||
|
||||
/talkpost_do.bml.error.blankmessage=Your message was blank. Please type something in the message field.
|
||||
|
||||
/talkpost_do.bml.error.noauth=You are not allowed to reply to this protected entry.
|
||||
|
||||
/talkpost_do.bml.error.noverify=Sorry, you aren't allowed to post comments in other people's journals until your email address has been verified. If you've lost the confirmation email to do this, you can <a href='/register.bml'>have it re-sent</a>.
|
||||
|
||||
/talkpost_do.bml.preview=This is how your comment will look when posted. Using the form below, you can edit your comment further, or you can submit it as-is.
|
||||
|
||||
/talkpost_do.bml.success.message=Your comment has been added. You can view it <a href="[[link]]">here</a>.
|
||||
|
||||
/talkpost_do.bml.title=Comment Posted
|
||||
|
||||
/talkscreen.bml.screened.body=The comment has been screened. You can view it <a href="[[link]]">here</a>.
|
||||
|
||||
/talkscreen.bml.unscreened.body=The comment has been unscreened. You can view it <a href="[[link]]">here</a>.
|
||||
|
||||
/tools/emailmanage.bml.desc.text=This page lets you remove past email addresses that were used with your account. If you remove an address, it will no longer be possible to have your password mailed to that address. This is useful if somebody discovered your password and hijacked your journal. Simply have the new password mailed to your old address, change the password, and remove the attacker's email address.
|
||||
|
||||
/tools/emailmanage.bml.notvalidated.text=To use this tool, your current email address, [[email]] , must be validated. If you've lost the confirmation email to do this, you can <a href='/register.bml'>have it re-sent</a>. After you validate your email, come back here.
|
||||
|
||||
/tools/memadd.bml.add_previous<<
|
||||
<?h1 Add to memories... h1?>
|
||||
<?p To add the journal entry you were just viewing to your "memories", fill out the form below. p?>
|
||||
|
||||
.
|
||||
|
||||
/tools/memadd.bml.error.login=You must be <a href="/login.bml?ret=1">logged in</a> to use this feature. Go and log in and you'll be brought back here.
|
||||
|
||||
/tools/memadd.bml.error.maxsize=The keyword "[[keyword]]" exceeds the maximum allowed size.
|
||||
|
||||
/tools/memadd.bml.keywords.text=Why is this post memorable? Enter up to five comma separated keywords or categories so you can find it later.
|
||||
|
||||
/tools/memories.bml.body.keyword<<
|
||||
<?h1 [[keyword]] h1?>
|
||||
<?p The following is a list of "[[keyword]]" journal entries that user <B>[[user]]</B> found memorable. p?>
|
||||
|
||||
.
|
||||
|
||||
/tools/memories.bml.body.list_categories<<
|
||||
<?h1 Memorable Posts h1?>
|
||||
<?p The following is a list of categories that user <b>[[user]]</b> has placed memorable journal entries in. p?>
|
||||
|
||||
.
|
||||
|
||||
/tools/memories.bml.body.memorable=The following is a list of uncategorised journal entries that user <b>[[user]]</b> found memorable.
|
||||
|
||||
/tools/memories.bml.error.noentries.body<<
|
||||
This could be because: <ol>
|
||||
<li>the user hasn't defined any memorable events,</li>
|
||||
<li>the user's memorable events are protected and you don't have access to view them, or</li>
|
||||
<li>the user doesn't have any memories that match your filter criteria.</li></ol>
|
||||
|
||||
.
|
||||
|
||||
/tools/memories.bml.uncategorized=Uncategorised
|
||||
|
||||
/update.bml.note=<b>Note:</b> The time and date above are from our server. Correct them for your timezone before posting.
|
||||
|
||||
/update.bml.opt.spellcheck=Spell-check entry before posting (checker only supports US English)
|
||||
|
||||
/update.bml.subject=<b>Subject:</b> <i>(optional)</i>
|
||||
|
||||
/update.bml.update.success=Update successful. You can view your updated journal <a href="[[uri]]">here</a>.
|
||||
|
||||
/userinfo.bml.about.comm=About:
|
||||
|
||||
/userinfo.bml.about.user=Bio:
|
||||
|
||||
/userinfo.bml.error.malfname=Malformed username: too long, or contains invalid characters.
|
||||
|
||||
/userinfo.bml.error.notloggedin=If you wish to view your own user profile, you need to <a href='/login.bml?ret=1'>log in</a>.
|
||||
|
||||
/userinfo.bml.friendof.comm=Watched by:
|
||||
|
||||
/userinfo.bml.friendof.user=Friend of:
|
||||
|
||||
/userinfo.bml.friends.user=Friends
|
||||
|
||||
/userinfo.bml.label.interests.modifyyours=Modify yours
|
||||
|
||||
/userinfo.bml.label.interests.removesome=Remove some
|
||||
|
||||
/userinfo.bml.label.shared=Posting Access:
|
||||
|
||||
/userinfo.bml.nonexist.body=The username <b>[[user]]</b> is not currently registered.
|
||||
|
||||
/userinfo.bml.syn.parseerror=Error Message:
|
||||
|
||||
error.noremote=You have to <a href="/login.bml?ret=1">log in</a> in order to use this page.
|
||||
|
||||
error.purged.text=This journal has been deleted and purged.
|
||||
|
||||
error.suspended.text=This account has been either temporarily or permanently suspended. If you are [[user]], please refer to the FAQ entitled <cite><a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=106">My account has been suspended! How can I get it back?</a></cite> for more information. Please note that in order to maintain our users' privacy, [[sitename]] cannot discuss the reasons for any suspension with anyone except the account's owner.
|
||||
|
||||
error.usernamelong=Username is too long — usernames may not be longer than 15 characters.
|
||||
|
||||
portal.recent.items.description=By default, only the most recent entry is shown.
|
||||
|
||||
talk.error.bogusargs=Invalid parameters
|
||||
|
||||
talk.error.notauthorised=You are not allowed to view this protected entry.
|
||||
|
||||
talk.spellcheck=Check spelling during preview
|
||||
|
||||
thislang.community|notes=Name of community you use to discuss the translation for this language.
|
||||
thislang.community=lj_english
|
||||
|
||||
xcolibur.nav.manage=Manage
|
||||
|
||||
xcolibur.nav.manage.customize=Customise
|
||||
|
||||
2103
ljcom/bin/upgrading/en_LJ.dat
Normal file
2103
ljcom/bin/upgrading/en_LJ.dat
Normal file
File diff suppressed because it is too large
Load Diff
3580
ljcom/bin/upgrading/eo.dat
Normal file
3580
ljcom/bin/upgrading/eo.dat
Normal file
File diff suppressed because it is too large
Load Diff
3313
ljcom/bin/upgrading/es.dat
Normal file
3313
ljcom/bin/upgrading/es.dat
Normal file
File diff suppressed because it is too large
Load Diff
13
ljcom/bin/upgrading/et.dat
Normal file
13
ljcom/bin/upgrading/et.dat
Normal file
@@ -0,0 +1,13 @@
|
||||
;; -*- coding: utf-8 -*-
|
||||
/allpics.bml.current=Käesolevad Pildid
|
||||
|
||||
/allpics.bml.keywords=Võtmesõnad:
|
||||
|
||||
/allpics.bml.nopics.text.other=See kasitaja ei ole üles laadinud ühtegi kasutaja pilti.
|
||||
|
||||
/allpics.bml.nopics.title=Pildid Puuduvad
|
||||
|
||||
/allpics.bml.pics=Siin on kasutaja pildid [[user]]le.
|
||||
|
||||
/allpics.bml.title=Kasutaja Pildid
|
||||
|
||||
5137
ljcom/bin/upgrading/fi.dat
Normal file
5137
ljcom/bin/upgrading/fi.dat
Normal file
File diff suppressed because it is too large
Load Diff
3983
ljcom/bin/upgrading/fr.dat
Normal file
3983
ljcom/bin/upgrading/fr.dat
Normal file
File diff suppressed because it is too large
Load Diff
2170
ljcom/bin/upgrading/ga.dat
Normal file
2170
ljcom/bin/upgrading/ga.dat
Normal file
File diff suppressed because it is too large
Load Diff
1
ljcom/bin/upgrading/gd.dat
Normal file
1
ljcom/bin/upgrading/gd.dat
Normal file
@@ -0,0 +1 @@
|
||||
;; -*- coding: utf-8 -*-
|
||||
2850
ljcom/bin/upgrading/gr.dat
Normal file
2850
ljcom/bin/upgrading/gr.dat
Normal file
File diff suppressed because it is too large
Load Diff
1853
ljcom/bin/upgrading/he.dat
Normal file
1853
ljcom/bin/upgrading/he.dat
Normal file
File diff suppressed because it is too large
Load Diff
1107
ljcom/bin/upgrading/hi.dat
Normal file
1107
ljcom/bin/upgrading/hi.dat
Normal file
File diff suppressed because it is too large
Load Diff
3473
ljcom/bin/upgrading/hu.dat
Normal file
3473
ljcom/bin/upgrading/hu.dat
Normal file
File diff suppressed because it is too large
Load Diff
2382
ljcom/bin/upgrading/is.dat
Normal file
2382
ljcom/bin/upgrading/is.dat
Normal file
File diff suppressed because it is too large
Load Diff
1047
ljcom/bin/upgrading/it.dat
Normal file
1047
ljcom/bin/upgrading/it.dat
Normal file
File diff suppressed because it is too large
Load Diff
1181
ljcom/bin/upgrading/ja.dat
Normal file
1181
ljcom/bin/upgrading/ja.dat
Normal file
File diff suppressed because it is too large
Load Diff
31
ljcom/bin/upgrading/la.dat
Normal file
31
ljcom/bin/upgrading/la.dat
Normal file
@@ -0,0 +1,31 @@
|
||||
;; -*- coding: utf-8 -*-
|
||||
/allpics.bml.current=Imagines Recentes
|
||||
|
||||
/allpics.bml.default=<u>Normalis<u>
|
||||
|
||||
/allpics.bml.error.noparam=Necesse est usuarii parametrum indicare.
|
||||
|
||||
/allpics.bml.keywords=Verba Clavis
|
||||
|
||||
/allpics.bml.nopics.title=Nullae Imagines
|
||||
|
||||
/allpics.bml.pics=Hic sunt usuarii imagines usuario [[user]]
|
||||
|
||||
/allpics.bml.title=Usuarii Imagines
|
||||
|
||||
/community/index.bml.title=Caput Communitatis
|
||||
|
||||
/community/join.bml.button.join=Adiungere ad Communitatem
|
||||
|
||||
/community/join.bml.label.addtofriends=Adde "[[maintainer]]" ad elenchum amicorum. <br>
|
||||
|
||||
/community/join.bml.label.allowposting=Haec communitas permittet mittendum omnibus sodalibus; licet igitur illic scribere. Si iam cliens adest LiveJournal apertus in computrato, exire et iterum inire necesse est, ut haec ephemris appareat in elencho ephemeridum in quibus potes scriber.
|
||||
|
||||
/community/join.bml.label.banned=Executor(es) huius communitatis interdixit tibi adiungendum.
|
||||
|
||||
/community/join.bml.label.commlogged=Initus est quam computus communis, non quam computus proprius.
|
||||
|
||||
/community/join.bml.label.errorcomminfo=Indicium indicatae communitatis inritum est.
|
||||
|
||||
/community/join.bml.label.expls=Opprime butonem subtus ad adiungendum ad communitatem "[[maintainer]]". Decarpe botonem subtus si vis adiungere ad communitatem, sed non vis scripta comuntatis videre in pagina amicorum.
|
||||
|
||||
1564
ljcom/bin/upgrading/lt.dat
Normal file
1564
ljcom/bin/upgrading/lt.dat
Normal file
File diff suppressed because it is too large
Load Diff
865
ljcom/bin/upgrading/lv.dat
Normal file
865
ljcom/bin/upgrading/lv.dat
Normal file
@@ -0,0 +1,865 @@
|
||||
;; -*- coding: utf-8 -*-
|
||||
/allpics.bml.current=Esošās bildes
|
||||
|
||||
/allpics.bml.default=<u>Pamatbilde</u>
|
||||
|
||||
/allpics.bml.error.noparam=Lūdzu precizē lietotāja parametru.
|
||||
|
||||
/allpics.bml.keywords=Atslēgas vārdi:
|
||||
|
||||
/allpics.bml.nopics.title=Nav bilžu
|
||||
|
||||
/allpics.bml.pics=Šīs ir [[user]] bildes.
|
||||
|
||||
/allpics.bml.title=Lietotājbildes
|
||||
|
||||
/community/index.bml.title=Kopienas centrs
|
||||
|
||||
/community/join.bml.button.join=Pievienoties kopienai
|
||||
|
||||
/community/join.bml.label.addtofriends=Pievieno "[[maintainer]]" draugu sarakstam.<br>
|
||||
|
||||
/community/join.bml.label.allowposting=Šī kopiena atļauj rakstīt visiem tās biedriem, tātad tagad arī tev ir dota atļauja. Ja uz tava datora jau ir atvērta LJ programma, tev vajadzēs no tās iziet un vēlreiz iereģistrēties, lai šis žurnāls parādītos to žurnālu sarakstā, kuros tu vari rakstīt.
|
||||
|
||||
/community/join.bml.label.banned=Šīs kopienas uzturētājs nav atļāvis tev pievienoties kopienai.
|
||||
|
||||
/community/join.bml.label.commlogged=Tu esi piereģistrējies ar kopienas kontu, nevis ar savu personīgo kontu.
|
||||
|
||||
/community/join.bml.label.errorcomminfo=Dotā kopienas informācija nav derīga.
|
||||
|
||||
/community/join.bml.label.expls=Spied sekojošo pogu, lai pievienotos "[[maintainer]]" kopienai. Neatzīmē lodziņu, ja gribi pievienoties kopienai bet neredzēt kopienas žurnāla ierakstus savā draugu lapā.
|
||||
|
||||
/community/join.bml.label.loginfirst=Lai pievienotos kopienai, tev vispirms ir <a href="/login.bml?ret=1">jāreģistrējas</a>.
|
||||
|
||||
/community/join.bml.label.membernow=Tu tagad esi <a href="/userinfo.bml?user=[[username]]">[[commname]] kopienas</a> biedrs
|
||||
|
||||
/community/join.bml.label.sure=Vai esi pārliecināts?
|
||||
|
||||
/community/join.bml.success=Izdošanās
|
||||
|
||||
/community/join.bml.title=Pievienojies kopienai
|
||||
|
||||
/community/leave.bml.button.leave=Izstājies no kopienas
|
||||
|
||||
/community/leave.bml.label.buttontoleave=Spied sekojošo pogu, lai izstātos no "[[commname]]" kopienas.
|
||||
|
||||
/community/leave.bml.label.infoerror=Dotā kopienas informācija nav derīga.
|
||||
|
||||
/community/leave.bml.label.logoutfirst=Lai izstātos no kopienas, tev vispirms ir <a href="/login.bml?ret=1">jāpiereģistrējas</a>.
|
||||
|
||||
/community/leave.bml.label.removed=Tu tagad esi izstājies no <a href="/userinfo.bml?user=[[commuser]]">[[commname]] kopienas</a>
|
||||
|
||||
/community/leave.bml.success=Izdošanās
|
||||
|
||||
/community/leave.bml.sure=Vai esi pārliecināts?
|
||||
|
||||
/community/leave.bml.title=Izstājies no kopienas
|
||||
|
||||
/community/search.bml.button.clear=Nodzēst
|
||||
|
||||
/community/search.bml.button.search=Meklē!
|
||||
|
||||
/community/search.bml.checkbox.onlywithpics=Tikai kopienas ar bildēm
|
||||
|
||||
/community/search.bml.label.byinterest=Pēc interesēm
|
||||
|
||||
/community/search.bml.label.bylocation=Pēc atrašanās vietas
|
||||
|
||||
/community/search.bml.label.bytime=Pēc žurnāla pēdējā ieraksta izdarīšanas laika
|
||||
|
||||
/community/search.bml.label.city=Pilsēta:
|
||||
|
||||
/community/search.bml.label.country=Valsts:
|
||||
|
||||
/community/search.bml.label.displayoptions= Tavas iespējas
|
||||
|
||||
/community/search.bml.label.hasmember=Ir biedrs
|
||||
|
||||
/community/search.bml.label.othercriteria=Citi kritēriji
|
||||
|
||||
/community/search.bml.label.outputformat=Izvades formāts:
|
||||
|
||||
/community/search.bml.label.records=Ieraksti uz vienas lapas:
|
||||
|
||||
/community/search.bml.label.searchcomm=Meklēt kopienas
|
||||
|
||||
/community/search.bml.label.selecriteria=Izvēlies sekojošos kritērijus, pēc kuriem tu vēlies atrast kopienas. Rezultāti būs visu meklēšanas kritēriju kopsumma. Citiem vārdiem sakot, katrs iezīmētais lodziņš nozīmē "AND" vai "OR".
|
||||
|
||||
/community/search.bml.label.sortmethod=Kārtošanas metode:
|
||||
|
||||
/community/search.bml.label.stateprovince=Pavalsts/province:
|
||||
|
||||
/community/search.bml.label.updated=Izdarīts ieraksts pēdējās
|
||||
|
||||
/community/search.bml.sel.bypicture=Pēc bildes
|
||||
|
||||
/community/search.bml.sel.communityname=Kopienas nosaukums
|
||||
|
||||
/community/search.bml.sel.commview=Kopienas skats
|
||||
|
||||
/community/search.bml.sel.day=diena
|
||||
|
||||
/community/search.bml.sel.month=mēnesis
|
||||
|
||||
/community/search.bml.sel.simple=Vienkārši
|
||||
|
||||
/community/search.bml.sel.updatetime=Pēdējā ieraksta laiks
|
||||
|
||||
/community/search.bml.sel.username=Lietotāja vārds
|
||||
|
||||
/community/search.bml.sel.week=nedēļa
|
||||
|
||||
/community/search.bml.title=Kopienas meklēšana
|
||||
|
||||
/create.bml.age.check.question=Vai tev ir mazāk nekā 13 gadi?
|
||||
|
||||
/create.bml.age.check.yes=Jā, man vēl nav 13 gadu.
|
||||
|
||||
/create.bml.age.head=Vecums
|
||||
|
||||
/create.bml.btn.proceed=Turpināt...
|
||||
|
||||
/create.bml.clusterselect.cluster=Klasteris:
|
||||
|
||||
/create.bml.clusterselect.clusternum=Klasteris [[number]]
|
||||
|
||||
/create.bml.clusterselect.head=Klastera izvēle
|
||||
|
||||
/create.bml.clusterselect.nocluster=Nav klastera
|
||||
|
||||
/create.bml.clusterselect.text=Lūdzu izvēlies to klasteri, uz kura tu vēlies izveidot šo kontu. <b>Piezīme:</b> Šī ir tikai testa opcija. Lietotāji to neredzēs un neko par to nezinās.
|
||||
|
||||
/create.bml.create.head=Jauna žurnāla izveidošana
|
||||
|
||||
/create.bml.create.text=Izveidot jaunu LiveJournal ir viegli, tikai seko instrukcijām!
|
||||
|
||||
/create.bml.email.head=Tava e-pasta adrese
|
||||
|
||||
/create.bml.email.input.head=E-pasta adrese:
|
||||
|
||||
/create.bml.error.coppa.under13=Atvaino, sakarā ar COPPA ierobežojumiem, tu nevari lietot LiveJournal pirms tev paliek 13 gadi. Lūdzu atgriezies savā 13. dzimšanas dienā.
|
||||
|
||||
/create.bml.error.email.blank=Tev jānorāda sava e-pasta adrese.
|
||||
|
||||
/create.bml.error.email.nospaces=E-pasta adresē nav atļautas atstarpes. Ja tu esi AOL biedrs, atceries, ka tava interneta e-pasta adrese ir tavs screen name bez atstarpēm, kam seko <b>@aol.com</b>
|
||||
|
||||
/create.bml.error.password.asciionly=Parolē tu vari lietot tikai ASCII simbolus.
|
||||
|
||||
/create.bml.error.password.blank=Tev jāievada parole.
|
||||
|
||||
/create.bml.error.password.nomatch=Paroles nesakrīt.
|
||||
|
||||
/create.bml.error.postrequired=Nepieciešams POST.
|
||||
|
||||
/create.bml.error.username.blank=Lūdzu norādi vārdu vai pieņemtu vārdu.
|
||||
|
||||
/create.bml.error.username.inuse=Lietotāja vārds jau ir aizņemts; lūdzu izvēlies citu.
|
||||
|
||||
/create.bml.error.username.iscode=Lietotāja vārds izskatās pēc ielūguma koda, nevis lietotāja vārda.
|
||||
|
||||
/create.bml.error.username.mustenter=Tev jāievada lietotāja vārds.
|
||||
|
||||
/create.bml.error.username.reserved=Atvaino, šis lietotāja vārds ir rezervēts.
|
||||
|
||||
/create.bml.name.head=Tavs vārds
|
||||
|
||||
/create.bml.name.input.head=Vārds:
|
||||
|
||||
/create.bml.name.text=Kāds ir tavs vārds vai pieņemtais vārds? Tas parādīsies tava žurnāla augšdaļā un lietotāju reģistrā, ja tu izvēlēsies būt tajā ierakstīts. Tev nav jādod savs pilns vārds vai īstais vārds.
|
||||
|
||||
/create.bml.password.head=Parole
|
||||
|
||||
/create.bml.password.input.head1=Parole:
|
||||
|
||||
/create.bml.password.input.head2|staleness=1
|
||||
/create.bml.password.input.head2=Atkārto paroli:
|
||||
|
||||
/create.bml.password.text=Izvēlies paroli.
|
||||
|
||||
/create.bml.proceed.btn.proceed=Turpināt...
|
||||
|
||||
/create.bml.proceed.warning=Spied <b>Turpināt</b> <i>tikai vienu reizi</i>!!
|
||||
|
||||
/create.bml.success.btn.enterinfo=Ievadi informāciju par sevi
|
||||
|
||||
/create.bml.success.head=Izdošanās!
|
||||
|
||||
/create.bml.success.text1|staleness=1
|
||||
/create.bml.success.text1=Tavs žurnāls ir izveidots. Svarīga reģistrācijas informācija ir aizsūtīta uz <FONT FACE=Arial SIZE=+1><B>[[email]]</B></FONT> ar turpmākām instrukcijām. <B>Piezīme: </B> Tev ir tieši <I>septiņas dienas</I> laika, lai apstiprinātu tava žurnāla izveidošanu. Ja pēc septiņām dienām tu vēl neesi to apstiprinājis, lietotāja vārds <B>[[username]]</B> tiks izdzēsts un to varēs lietot kāds cits.
|
||||
|
||||
/create.bml.success.text2=Tavs LiveJournal būs atrodams:
|
||||
|
||||
/create.bml.success.text3=Tagad, lūdzu, ievadi informāciju par sevi. Tā lielākoties nav obligāta, bet dod mums ieskatu par to, kas ir LiveJournal lietotāji.
|
||||
|
||||
/create.bml.title=Izveido jaunu žurnālu
|
||||
|
||||
/create.bml.useacctcodes.entercode|staleness=1
|
||||
/create.bml.useacctcodes.entercode=Lai izveidotu jaunu kontu, ievadi konta izveidošanas kodu:
|
||||
|
||||
/create.bml.useacctcodes.welcome=Laipni lūdzam
|
||||
|
||||
/create.bml.username.box.head=Lietotāja vārds:
|
||||
|
||||
/create.bml.username.forpaidaccts=Vai, apmaksātiem kontiem:
|
||||
|
||||
/create.bml.username.head=Lietotāja vārds
|
||||
|
||||
/create.bml.username.ljaddress=Tavam žurnālam būs šādas adreses:
|
||||
|
||||
/create.bml.username.text=Katram [[sitename]] lietotājam jābūt savam unikālam lietotāja vārdam. Tavs lietotāja vārds ir redzams tava žurnāla adresē un ar to tu piereģistrējies [[sitename]] serverī. Tas arī parādās, kad tu raksti komentārus citu cilvēku žurnālos.
|
||||
|
||||
/create.bml.username.username=lietotāja vārds
|
||||
|
||||
/editinfo.bml.allowshowcontact.about=Šo opciju vēlams iezīmēt. Tā ļauj citiem cilvēkiem kontaktēties ar tevi, parādot tavu e-pasta adresi, ICQ numuru un AOL lietotājvārdu tavā LiveJournal.
|
||||
|
||||
/editinfo.bml.allowshowcontact.email=Publicējamā e-pasta adrese:
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.actual_only=Tikai īstā adrese
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.both=Abas (īstā + [[domain]])
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.lj_only=Tikai LiveJournal adrese
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.neither=Neviena. Nerādīt nevienu e-pasta adresi.
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.no_show=Nerādīt e-pasta adresi
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.show=Rādīt e-pasta adresi
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.withdomainaddr=Ar augšminēto opciju tu vari arī izvēlēties slēpt savu e-pasta adresi (tomēr parādot citu kontaktinformāciju), tikai rādīt savu LiveJournal e-pasta adresi (tikai <a href="/paidaccounts/">apmaksātiem kontiem</a>), tikai rādīt savu īsto e-pasta adresi, vai rādīt abas.
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.withoutdomainaddr=Ar augšminēto opciju tu vari arī izvēlēties slēpt savu e-pasta adresi (tomēr parādot citu kontaktinformāciju)
|
||||
|
||||
/editinfo.bml.allowshowcontact.title=Parādīt tavu kontaktinformāciju LiveJournal?
|
||||
|
||||
/editinfo.bml.allowshowinfo.about=Izvēlies šo, ja gribi lai tava pilsēta/pavalsts/valsts un dzimšanas diena būtu redzama citiem lietotājiem.
|
||||
|
||||
/editinfo.bml.allowshowinfo.title=Parādīt vietu & dzimšanas dienu?
|
||||
|
||||
/editinfo.bml.autotranslate.about<<
|
||||
Lieto šo opciju, lai norādītu LiveJournal, kuru kodēšanas sistēmu (encoding) lietot taviem ierakstiem un komentāriem, kas izdarīti pirms šī tīkla lapa tika pārlikta uz Unicode.
|
||||
Ja tu raksti angliski, izvēlies "Western European".
|
||||
.
|
||||
|
||||
/editinfo.bml.autotranslate.header|staleness=1
|
||||
/editinfo.bml.autotranslate.header=Automātiski tulkot vecākus ierakstus no:
|
||||
|
||||
/editinfo.bml.bday.title=Dzimšanas diena
|
||||
|
||||
/editinfo.bml.bday.year.opt=gadu var nenorādīt
|
||||
|
||||
/editinfo.bml.bdayreminders.about=Ja tu vēlies saņemt e-pasta atgādinājumus par tavu LiveJournal draugu dzimšanas dienām, iezīmē šo lodziņu.
|
||||
|
||||
/editinfo.bml.bdayreminders.header|staleness=1
|
||||
/editinfo.bml.bdayreminders.header=Sūtiet man dzimšanas dienu atgādinājumus
|
||||
|
||||
/editinfo.bml.bio.about|staleness=1
|
||||
/editinfo.bml.bio.about=Šeit tu vari ierakstīt mini biogrāfiju par sevi, kas parādīsies tavā info lapā.
|
||||
|
||||
/editinfo.bml.bio.header=Par tevi
|
||||
|
||||
/editinfo.bml.blockrobots.about|staleness=1
|
||||
/editinfo.bml.blockrobots.about<<
|
||||
Ja tu atzīmē šo opciju, roboti tiks sūtīti prom.
|
||||
Ne visi roboti respektē noteikumus, bet populāro meklēšanas portālu roboti to dara.
|
||||
.
|
||||
|
||||
/editinfo.bml.blockrobots.header=Neatļauj robotiem skatīt tavu žurnālu
|
||||
|
||||
/editinfo.bml.city.title=Pilsēta
|
||||
|
||||
/editinfo.bml.country.choose=Izvēlies valsti
|
||||
|
||||
/editinfo.bml.country.title=Valsts
|
||||
|
||||
/editinfo.bml.donotlog=Nē
|
||||
|
||||
/editinfo.bml.email.title=E-pasts
|
||||
|
||||
/editinfo.bml.enableboards.about|staleness=1
|
||||
/editinfo.bml.enableboards.about=Iezīmē šo, ja gribi lai citi var atbildēt uz taviem žurnāla ierakstiem. (nepieciešams atbilstošs žurnāla stils)
|
||||
|
||||
/editinfo.bml.enableboards.header=Atļaut komentārus
|
||||
|
||||
/editinfo.bml.encoding.about=Pamatā tikai lietotājiem, kas raksta vairākās valodās, vajadzēs izdarīt šeit izmaiņas.
|
||||
|
||||
/editinfo.bml.encoding.header=Kodēšanas izvēlne
|
||||
|
||||
/editinfo.bml.error.email.lj_domain|staleness=1
|
||||
/editinfo.bml.error.email.lj_domain<<
|
||||
Tu nevari norādīt @[[domain]] e-pasta adresi.
|
||||
Šajā lauciņā ieraksti savu īsto adresi.
|
||||
Ja tu esi maksājošs lietotājs, tava [[user]]@[[domain]] adrese pārsūtīs pastu uz tavu īsto adresi.
|
||||
Lai izvēlētos, kura e-pasta adrese (vai abas) tiks parādīta publiski, skaties opciju zem "Parādīt kontaktinformāciju".
|
||||
.
|
||||
|
||||
/editinfo.bml.error.email.no_space<<
|
||||
E-pasta adresē nav atļautas atstarpes.
|
||||
Ja tu lieto AOL, atceries, ka tava interneta e-pasta adrese ir tavs lietotājvārds bez atstarpēm, kam seko <b>@aol.com</b>
|
||||
.
|
||||
|
||||
/editinfo.bml.error.excessive_int=Atvaino, tu esi minējis pārāk daudz intereses. Limits ir 150, bet tu esi minējis [[intcount]]. Izmaiņas interešu sarakstā netika izdarītas. Ej atpakaļ un saīsini savu sarakstu, tad vēlreiz saglabā to.
|
||||
|
||||
/editinfo.bml.error.invalidbio=Tava ierakstītā biogrāfija satur nederīgus simbolus. Tev jāiet uz <a href='/utf8convert.bml'><b>konvertēšanas lapu</b></a>, lai pārliktu to uz Unicode.
|
||||
|
||||
/editinfo.bml.error.invalidints=Tavs pašreizējais interešu saraksts satur nederīgus simbolus. Tev jāiet uz <a href='/utf8convert.bml'><b>konvertēšanas lapu</b></a>, lai pārliktu to uz Unicode.
|
||||
|
||||
/editinfo.bml.error.invalidname=Tavs vārds satur nederīgus simbolus. Tev jāiet uz <a href='/utf8convert.bml'><b>konvertēšanas lapu</b></a>, lai pārliktu to uz Unicode.
|
||||
|
||||
/editinfo.bml.error.locale.country_ne_state=Tu esi izvēlējies Amerikas Savienotās Valstis kā savu valsti, bet esi ierakstījis neesošu ASV pavalsti "cita pavalsts" ailē.
|
||||
|
||||
/editinfo.bml.error.locale.invalid_country=Kaut kā ir gadījies, ka tu esi izvēlējies nederīgu valsti.
|
||||
|
||||
/editinfo.bml.error.locale.state_ne_country=Tu esi norādījis valsti kas nav ASV, bet izvēlējies ASV pavalsti.
|
||||
|
||||
/editinfo.bml.error.locale.zip_ne_state<<
|
||||
Tavs pasta indekss neatbilst izvēlētajai pavalstij.
|
||||
Vai nu izlabo informāciju, vai arī izdzēs vienu vai abas ailes.
|
||||
.
|
||||
|
||||
/editinfo.bml.error.locale.zip_requires_us|staleness=1
|
||||
/editinfo.bml.error.locale.zip_requires_us<<
|
||||
Tu esi norādījis pasta indeksu bet neesi izvēlējies ASV kā savu valsti.
|
||||
Mēs prasām pasta indeksu tikai no ASV iedzīvotājiem.
|
||||
Lūdzu ej atpakaļ un izdzēs pasta indeksu, vai arī izvēlies ASV kā savu valsti.
|
||||
.
|
||||
|
||||
/editinfo.bml.error.tm.require.number=Ja tu vēlies lietot īsziņu sūtīšanu, tev jānorāda savs tālruņa numurs.
|
||||
|
||||
/editinfo.bml.error.tm.require_provider<<
|
||||
Ja tu vēlies izmantot SMS sūtīšanu, tev jāizvēlas savs mobilo sakaru tīkls.
|
||||
|
||||
Ja tas nav minēts, lūdzu atraksti mums informāciju par sava tīkla SMS iespējām, lai mēs to varam pievienot sarakstam.
|
||||
.
|
||||
|
||||
/editinfo.bml.finished.about=Kad esi pabeidzis, spied "Saglabāt izmaiņas" pogu:
|
||||
|
||||
/editinfo.bml.finished.header=Pabeigts?
|
||||
|
||||
/editinfo.bml.finished.save_button=Saglabāt izmaiņas
|
||||
|
||||
/editinfo.bml.gender.title=Dzimums
|
||||
|
||||
/editinfo.bml.getreplies.about|staleness=1
|
||||
/editinfo.bml.getreplies.about=Iezīmē šo, ja gribi saņemt e-pastus, kad kāds atbild uz taviem žurnāla ierakstiem ziņu dēlī.
|
||||
|
||||
/editinfo.bml.getreplies.header=Saņem ziņu dēļa atbildes
|
||||
|
||||
/editinfo.bml.hidefriendof.about=Ja atzīmēsi šo, to cilvēku saraksts, kas ir pievienojuši tevi kā draugu, netiks parādīts tavā profila lapā.
|
||||
|
||||
/editinfo.bml.howhear.about|staleness=1
|
||||
/editinfo.bml.howhear.about<<
|
||||
Tīri aiz ziņkārības, kur tu uzzināji par [[sitename]?
|
||||
Ja no kāda cilvēka, norādi viņa lietotājvārdu, bet ja
|
||||
no cita avota/raksta/saites/tīkla lapas, sniedz attiecīgo informāciju.
|
||||
.
|
||||
|
||||
/editinfo.bml.htmlemail.about|staleness=1
|
||||
/editinfo.bml.htmlemail.about<<
|
||||
Iezīmē šo, ja tava e-pasta programma pilnībā atbalsta HTML.
|
||||
Daudzas programmas cenšas to atbalstīt, bet smagi izgāžas.
|
||||
Ja neiezīmēsi, LiveJournal sūtīs tev tikai teksta e-pastus.
|
||||
.
|
||||
|
||||
/editinfo.bml.htmlemail.header=Sūtīt HTML e-pastus
|
||||
|
||||
/editinfo.bml.int.about<<
|
||||
Ja vēlies lai citi var meklēt reģistrā un atrast tevi pēc tavām interesēm, norādi visu, par ko tu interesējies, atdalot ar komatiem.
|
||||
Vislabākās ir īsas viena vārda frāzes. Kā likums, tavām interesēm būtu jāiekļaujas teikumā "Man patīk ________". Minot lietvārdus, lieto daudzskaitli.
|
||||
.
|
||||
|
||||
/editinfo.bml.int.ex.bad=<FONT COLOR=#FF0000><B>SLIKTS</B></FONT> piemērs: <B>Man patīk visādas grupas un skatīties filmas un pļāpāt ar draugiem un iet uz klubiņiem.</B> Tādā stilā tu vari rakstīt savā biogrāfijā, bet ne šeit.
|
||||
|
||||
/editinfo.bml.int.ex.good=<FONT COLOR=#009000><B>LABS</B></FONT> piemērs: <B>slēpošana, datori, mp3s, siers, sievietes</B>
|
||||
|
||||
/editinfo.bml.int.header=Intereses
|
||||
|
||||
/editinfo.bml.login.enterinfo=Ievadi savu lietotājvārdu un paroli, lai izmainītu personīgo informāciju.
|
||||
|
||||
/editinfo.bml.login.forgot.header=Vai esi ko aizmirsis?
|
||||
|
||||
/editinfo.bml.login.forgot.recover=Ja esi aizmirsis savu lietotāja vārdu vai paroli, <a href='lostinfo.bml'>meklē to šeit!</a>.
|
||||
|
||||
/editinfo.bml.logip.always=Vienmēr
|
||||
|
||||
/editinfo.bml.logip.anon_only=Tikai anonīmus rakstītājus
|
||||
|
||||
/editinfo.bml.logip.header=Reģistrēt atbilžu rakstītāju IP adreses?
|
||||
|
||||
/editinfo.bml.mangleaddress.about|staleness=1
|
||||
/editinfo.bml.mangleaddress.about=Ja tu baidies, ka spam-roboti atradīs tavu e-pasta adresi LiveJournal, izvēlies šo opciju, un tava e-pasta adrese tiks izmainīta tā, ka to nevarēs atrast e-pasta meklētāji roboti.
|
||||
|
||||
/editinfo.bml.mangleaddress.header=Izmainīt parādīto e-pasta adresi
|
||||
|
||||
/editinfo.bml.name.title=Vārds
|
||||
|
||||
/editinfo.bml.numcomments.about=Iezīmē šo, ja vēlies pielīdzināt komentāru skaitu URL, lai liktu tavai pārlūkprogrammai rādīt saites citā krāsā.
|
||||
|
||||
/editinfo.bml.numcomments.header=Pievienot &nc=xx komentāru URL
|
||||
|
||||
/editinfo.bml.optional=Neobligāti
|
||||
|
||||
/editinfo.bml.opt_in.header=Sūtiet man LiveJournal jaunumus.
|
||||
|
||||
/editinfo.bml.persinfo.disclaimer=Ieraksti kādu informāciju par sevi, mūsu ziņkārības apmierināšanai un statistikai. Mēs ar šo informāciju nedarīsim neko ļaunu, mēs tikai vēlētos redzēt, kas un kur ir mūsu lietotāji. Lūdzu aizpildi to precīzi. Ja tevi māc raizes, izlasi mūsu <a href="/legal/privacy.bml">slepenības politiku</a>.
|
||||
|
||||
/editinfo.bml.persinfo.header=Personīgā informācija
|
||||
|
||||
/editinfo.bml.screen.all=Visi
|
||||
|
||||
/editinfo.bml.screen.anon=Anonīmi
|
||||
|
||||
/editinfo.bml.screen.none=Neviens
|
||||
|
||||
/editinfo.bml.security.header|staleness=1
|
||||
/editinfo.bml.security.header=Drošība
|
||||
|
||||
/editinfo.bml.security.visibility.anybody=Jebkurš
|
||||
|
||||
/editinfo.bml.security.visibility.everybody=Visi
|
||||
|
||||
/editinfo.bml.security.visibility.friends=Tikai draugi
|
||||
|
||||
/editinfo.bml.security.visibility.regusers=Reģistrēti lietotāji
|
||||
|
||||
/editinfo.bml.settings.header=LiveJournal izvēlne
|
||||
|
||||
/editinfo.bml.state.other=Vai ieraksti citu pavalsti/provinci/teritoriju
|
||||
|
||||
/editinfo.bml.state.title=Pavalsts
|
||||
|
||||
/editinfo.bml.state.us=ASV pavalstis
|
||||
|
||||
/editinfo.bml.success.header=Izdošanās!
|
||||
|
||||
/editinfo.bml.success.message=Tava informācija un <a href="/users/[[user]]/">žurnāls</a> un <a href="/userinfo.bml?user=[[user]]">profils</a> ir izmainīti.
|
||||
|
||||
/editinfo.bml.switch.button=Pārslēgt
|
||||
|
||||
/editinfo.bml.switch.header=Pārslēgt žurnālu
|
||||
|
||||
/editinfo.bml.switch.workwith=Strādāt ar žurnālu:
|
||||
|
||||
/editinfo.bml.title=Izmainīt personīgo informāciju
|
||||
|
||||
/editinfo.bml.tm.details=<a href="/tools/textmessage.bml?mode=details">detaļas</a>
|
||||
|
||||
/editinfo.bml.tm.phonenum=Pilns tālruņa numurs:
|
||||
|
||||
/editinfo.bml.tm.sec.about=Atļaut īsziņas no citiem lietotājiem.
|
||||
|
||||
/editinfo.bml.tm.sec.title=Drošības līmenis:
|
||||
|
||||
/editinfo.bml.tm.servprov=Mobīlo sakaru tīkls
|
||||
|
||||
/editinfo.bml.tm.title=Īsziņas
|
||||
|
||||
/editinfo.bml.whoreply.header=Kas var atbildēt uz taviem ierakstiem?
|
||||
|
||||
/editinfo.bml.zip.title=Pasta indekss
|
||||
|
||||
/editinfo.bml.zip.usonly=5 ciparu pasta indekss; tikai ASV iedzīvotājiem
|
||||
|
||||
/editjournal.bml.btn.proceed=Turpināt...
|
||||
|
||||
/editjournal.bml.certainday=Noteikta diena:
|
||||
|
||||
/editjournal.bml.recententries=paši pēdējie ieraksti
|
||||
|
||||
/editjournal.bml.recententry=Pēdējais ieraksts
|
||||
|
||||
/editjournal.bml.title=Rediģēt žurnāla ierakstus
|
||||
|
||||
/editjournal.bml.viewwhat=Kurus ierakstus skatīt:
|
||||
|
||||
/editjournal_do.bml.btn.edit=Rediģēt izvēlēto ierakstu
|
||||
|
||||
/editjournal_do.bml.btn.save=Saglabāt žurnāla ierakstu
|
||||
|
||||
/editjournal_do.bml.continue.head=Spied, lai turpinātu...
|
||||
|
||||
/editjournal_do.bml.continue.text=Pēc tam kad esi izvēlējies ierakstu, ko rediģēt vai izdzēst, spied Rediģēt pogu.
|
||||
|
||||
/editjournal_do.bml.currmood|staleness=1
|
||||
/editjournal_do.bml.currmood=<A HREF="/moodlist.bml">Garastāvoklis</A>:
|
||||
|
||||
/editjournal_do.bml.currmusic=Mūzika:
|
||||
|
||||
/editjournal_do.bml.date=Datums:
|
||||
|
||||
/editjournal_do.bml.default=pamata
|
||||
|
||||
/editjournal_do.bml.edit.text|staleness=2
|
||||
/editjournal_do.bml.edit.text=Rediģē tās žurnāla ieraksta ailes, kuras tu vēlies izmainīt, un nospied Saglabāt pogu lapas apakšā. Lai izdzēstu ierakstu, vienkārši izdzēs visu tekstu un spied Saglabāt... viss ieraksts tiks izdzēsts.
|
||||
|
||||
/editjournal_do.bml.error.getting=Žurnāla ieraksta izvēlē radusies kļūda:
|
||||
|
||||
/editjournal_do.bml.error.modify=Izdarot izmaiņas žurnālā, radusies kļūda:
|
||||
|
||||
/editjournal_do.bml.error.nofind=Izvēlētais žurnāla ieraksts nav atrodams.
|
||||
|
||||
/editjournal_do.bml.event=Notikums:
|
||||
|
||||
/editjournal_do.bml.localtime=Vietējais laiks:
|
||||
|
||||
/editjournal_do.bml.noneother=Neviens, vai cits:
|
||||
|
||||
/editjournal_do.bml.opt.backdate=Atpakaļejošs datums/laiks:
|
||||
|
||||
/editjournal_do.bml.opt.backdate.about=neparādīsies draugu lapā
|
||||
|
||||
/editjournal_do.bml.opt.nocomments=Neatļaut komentārus:
|
||||
|
||||
/editjournal_do.bml.opt.noemail=Nesūtīt komentārus pa e-pastu:
|
||||
|
||||
/editjournal_do.bml.opt.noformat=Automātiski neformatēt:
|
||||
|
||||
/editjournal_do.bml.other=Cits:
|
||||
|
||||
/editjournal_do.bml.pickentry.head=Izvēlies ierakstu rediģēšanai
|
||||
|
||||
/editjournal_do.bml.pickentry.text=Izvēlies, ko tu gribi rediģēt, un nospied Rediģēt pogu lapas apakšā.
|
||||
|
||||
/editjournal_do.bml.picture=Lietojamā <a href="[[url]]">bilde</a>:
|
||||
|
||||
/editjournal_do.bml.save.head=Nospied, lai saglabātu...
|
||||
|
||||
/editjournal_do.bml.save.text=Pēc tam, kad esi pabeidzis izdarīt izmaiņas savā žurnāla ierakstā, nospied Saglabāt.
|
||||
|
||||
/editjournal_do.bml.subject|staleness=1
|
||||
/editjournal_do.bml.subject=<B>Temats:</B> <I>(nav obligāts, var lietot garākiem ierakstiem)</I>
|
||||
|
||||
/editjournal_do.bml.success.delete=Žurnāla ieraksts ir izdzēsts.
|
||||
|
||||
/editjournal_do.bml.success.edit|staleness=1
|
||||
/editjournal_do.bml.success.edit=Žurnāla ieraksts ir mainīts. Tu vari to skatīt <a href="[[url]]">šeit</a>.
|
||||
|
||||
/editjournal_do.bml.success.head=Izdošanās
|
||||
|
||||
/editjournal_do.bml.timeformat=24 stundu laiks
|
||||
|
||||
/editjournal_do.bml.title=Rediģēt žurnāla ierakstus
|
||||
|
||||
/friends/add.bml.add.header=Izdošanās
|
||||
|
||||
/friends/add.bml.add.text|staleness=2
|
||||
/friends/add.bml.add.text=Lietotājs <?ljuser [[user]] ljuser?> ir pievienots tavam draugu sarakstam. Tu vari skatīt savu draugu lapu <a href="[[url]]">šeit</a>.
|
||||
|
||||
/friends/add.bml.add.title=Draugs pievienots!
|
||||
|
||||
/friends/add.bml.btn.add=Pievieno [[user]]
|
||||
|
||||
/friends/add.bml.btn.modify=Izmainīt
|
||||
|
||||
/friends/add.bml.btn.remove=Nodzēst
|
||||
|
||||
/friends/add.bml.colors.bg=Pamatkrāsa
|
||||
|
||||
/friends/add.bml.colors.fg=Teksta krāsa
|
||||
|
||||
/friends/add.bml.colors.header=Krāsas
|
||||
|
||||
/friends/add.bml.colors.hover=(Paturi peles kursoru virs krāsas, lai redzētu tās nosaukumu)
|
||||
|
||||
/friends/add.bml.colors.text=Tu vari arī izvēlēties krāsas, kas apzīmēs [[user]] tavā draugu sarakstā.
|
||||
|
||||
/friends/add.bml.confirm.header=Pievienot <b>[[user]]</b> kā draugu?
|
||||
|
||||
/friends/add.bml.confirm.text=Lai pievienotu <b>[[user]]</b> savam draugu sarakstam, nospied pogu.
|
||||
|
||||
/friends/add.bml.confirm.title=Pievieno draugu
|
||||
|
||||
/friends/add.bml.error1.header|staleness=1
|
||||
/friends/add.bml.error1.header=Vispirms piereģistrējies
|
||||
|
||||
/friends/add.bml.error1.text=Lai pievienotu lietotāju savam draugu sarakstam, tev vispirms <A HREF="/login.bml?ret=1">jāreģistrējas</A>. Ja tev vēl nav sava konta, tu vari to <a href="/create.bml">izveidot</a>, lai sekotu līdzi savu draugu žurnāliem.
|
||||
|
||||
/friends/add.bml.error1.title=Pievieno draugu
|
||||
|
||||
/friends/add.bml.error2.text|staleness=1
|
||||
/friends/add.bml.error2.text=Nepareizs vai neesošs lietotājvārds. :ai pievienotu draugu, ej uz <A HREF="/friends/edit.bml">rediģēt draugus</A> lapu.
|
||||
|
||||
/friends/add.bml.error3.text=<b>[[user]]</b> jau ir tavā draugu sarakstā. Papildus tu vari mainīt viņam piešķirtās krāsas.
|
||||
|
||||
/friends/add.bml.error3.title=Rediģēt draugus
|
||||
|
||||
/friends/add.bml.groups.header=Draugu grupas
|
||||
|
||||
/friends/add.bml.groups.nogroup|staleness=1
|
||||
/friends/add.bml.groups.nogroup=Draugu grupas nav uzstādītas.
|
||||
|
||||
/friends/add.bml.groups.text=Kurās draugu grupās tu vēlies šo lietotāju iekļaut? Draugu grupas tiek lietotas tavas draugu lapas filtrēšanai un ierakstu drošībai.
|
||||
|
||||
/friends/add.bml.remove.header=Izdošanās
|
||||
|
||||
/friends/add.bml.remove.text=Lietotājs <?ljuser [[user]] ljuser?> ir izņemts no tava draugu saraksta. Tu vari skatīt savu draugu lapu <a href="[[url]]">šeit</a>.
|
||||
|
||||
/friends/add.bml.remove.title=Draugs nodzēsts!
|
||||
|
||||
/friends/edit.bml.title=Rediģēt draugus
|
||||
|
||||
/friends/edit_do.bml.addfriends.head=Pievienot draugus
|
||||
|
||||
/friends/edit_do.bml.addfriends.text=Ievadi savu draugu LiveJournal lietotājvārdus sekojošajās ailēs un izvēlies pamata un teksta krāsas, kuras ar viņiem asociēt....
|
||||
|
||||
/friends/edit_do.bml.background=Pamatkrāsa
|
||||
|
||||
/friends/edit_do.bml.bgcolor=Pamatkrāsa:
|
||||
|
||||
/friends/edit_do.bml.btn.close=Aizvērt
|
||||
|
||||
/friends/edit_do.bml.btn.save=Saglabāt izmaiņas
|
||||
|
||||
/friends/edit_do.bml.done.head=Darīts?
|
||||
|
||||
/friends/edit_do.bml.done.text=Kad esi pabeidzis, spied sekojošo "Saglabāt izmaiņas" pogu...
|
||||
|
||||
/friends/edit_do.bml.error.updating=Tava draugu saraksta papildināšanā atgadījusies kļūda:
|
||||
|
||||
/friends/edit_do.bml.foreground=Teksta krāsa
|
||||
|
||||
/friends/edit_do.bml.friend=Draugs
|
||||
|
||||
/friends/edit_do.bml.hover=Paturi peles kursoru virs krāsas, lai redzētu tās nosaukumu
|
||||
|
||||
/friends/edit_do.bml.name=Vārds
|
||||
|
||||
/friends/edit_do.bml.nofriends.head=Nav draugu?
|
||||
|
||||
/friends/edit_do.bml.opt.delete=Izdzēst?
|
||||
|
||||
/friends/edit_do.bml.success.head=Izdošanās
|
||||
|
||||
/friends/edit_do.bml.textcolor=Teksta krāsa:
|
||||
|
||||
/friends/edit_do.bml.title=Rediģēt draugus
|
||||
|
||||
/friends/edit_do.bml.user=Lietotājs
|
||||
|
||||
/friends/edit_do.bml.yourfriends.head=Tavi draugi
|
||||
|
||||
/friends/edit_do.bml.yourfriends.text=Tu esi minējis sekojošos draugus:
|
||||
|
||||
/index.bml.boldcreate=Izveido pats savu LiveJournal!
|
||||
|
||||
/index.bml.frank.image.alt=Āzis Franks, LiveJournal talismans.
|
||||
|
||||
/index.bml.frank.logo=<b><i>"Bēēēēē",</i> saka <a href="/site/goat.bml">Franks</a>.</b>
|
||||
|
||||
/index.bml.meta.desc=LiveJournal.com ir vieta, kur tu vari dalīties savās domās ar visu pasauli.
|
||||
|
||||
/index.bml.meta.keywords=dienasgrāmata, žurnāls, online žurnāls, dienasgrāmatas, rakstīšana, online dienasgrāmata, web dienasgrāmata
|
||||
|
||||
/interests.bml.add.added.head=Pievienots!
|
||||
|
||||
/interests.bml.add.added.text=Interese pievienota tavam sarakstam.
|
||||
|
||||
/interests.bml.add.btn.text=Pievienot [[interest]]
|
||||
|
||||
/interests.bml.add.confirm.head=Apstiprināt
|
||||
|
||||
/interests.bml.add.confirm.text=Lai pievienotu <b>[[interest]]</b> interesēm, spied sekojošo pogu.
|
||||
|
||||
/interests.bml.add.toomany.head=Atvaino...
|
||||
|
||||
/interests.bml.add.toomany.text=Tu jau esi norādījis [[maxinterests]] intereses.
|
||||
|
||||
/interests.bml.addint=Ja tu arī par šo interesējies un vēlētos pievienoties šim sarakstam, <a href="/interests.bml?mode=add&intid=[[qintid]]">ej šeit</A>.
|
||||
|
||||
/interests.bml.communities.head=Saistītas kopienas
|
||||
|
||||
/interests.bml.communities.text=Sekojošās kopienas arī interesējas par <b>"[[interest]]"</b>.
|
||||
|
||||
/interests.bml.count=Skaits
|
||||
|
||||
/interests.bml.error.add.mustlogin=Lai pievienotu interesi, tev ir jāiereģistrējas.
|
||||
|
||||
/interests.bml.error.findsim_do.intnotfound=Interese nav atrasta.
|
||||
|
||||
/interests.bml.findsim.searchwait=<b>Lūdzu ievēro:</b> Meklējot paies vairākas sekundes. Esi pacietīgs.
|
||||
|
||||
/interests.bml.findsim_do.account.notallowed=Atvaino, tava konta veids neatļauj tev izmantot šo iespēju.
|
||||
|
||||
/interests.bml.findsim_do.magic=Maģiskais<br />indekss
|
||||
|
||||
/interests.bml.findsim_do.magic.head=Maģiskais indekss?
|
||||
|
||||
/interests.bml.findsim_do.magic.text=Katrs līdzīgais lietotājs saņem maģisko indeksu, kas tiek aprēķināts no diviem faktoriem: sakrītošo interešu skaita un dažiem papildus punktiem par netipisku interešu sakritību.
|
||||
|
||||
/interests.bml.findsim_do.nomatch.head=Nav rezultātu
|
||||
|
||||
/interests.bml.findsim_do.nomatch.text=Neviens lietotājs nav līdzīgs [[user]].
|
||||
|
||||
/interests.bml.findsim_do.notdefined=Lietotājs [[user]] nav minējis savas intereses.
|
||||
|
||||
/interests.bml.findsim_do.similar.head=Līdzīgi lietotāji
|
||||
|
||||
/interests.bml.findsim_do.similar.text=Sekojošie lietotāji ir vislīdzīgākie [[user]]
|
||||
|
||||
/interests.bml.interest=Interese
|
||||
|
||||
/interests.bml.interested.btn.find=Meklēt
|
||||
|
||||
/interests.bml.interested.in|staleness=1
|
||||
/interests.bml.interested.in=Meklēt cilvēkus, kas interesējas par:
|
||||
|
||||
/interests.bml.interests.head=Intereses
|
||||
|
||||
/interests.bml.interests.text|staleness=1
|
||||
/interests.bml.interests.text=Te ir dažas interesantas lietas, ko var darīt ar interesēm...
|
||||
|
||||
/interests.bml.interests.viewpop=Skatīt populāras intereses
|
||||
|
||||
/interests.bml.match=[[skaits]] atbilst:
|
||||
|
||||
/interests.bml.matches=[[skaits]] atbilst:
|
||||
|
||||
/interests.bml.morestuff|staleness=1
|
||||
/interests.bml.morestuff=Vairākas interesantas lietas atrodamas <A HREF="/interests.bml">interešu lapā</A>.
|
||||
|
||||
/interests.bml.nointerests.text=Vēl neesi norādījis savas intereses? Lai pievienotu tās, ej <A HREF="/editinfo.bml">Rediģēt personīgo informāciju un uzstādījumus</A>.
|
||||
|
||||
/interests.bml.popular.head=Populāras intereses
|
||||
|
||||
/interests.bml.popular.text=Sekojošās intereses ir vispopulārākās.
|
||||
|
||||
/interests.bml.title=Intereses
|
||||
|
||||
/interests.bml.toomany.body=[[intcount]] cilvēki un/vai kopienas ir minējuši šo interesi. Saraksts netiks parādīts.
|
||||
|
||||
/interests.bml.toomany.head=Daudz rezultātu
|
||||
|
||||
/interests.bml.users.text|staleness=1
|
||||
/interests.bml.users.text=Sekojošie lietotāji arī interesējas par <b>[[interest]]</b>.
|
||||
|
||||
/login.bml.bindip.label=Piesaistīt IP adresei:
|
||||
|
||||
/login.bml.bindip.no=Nē (strādā ar visiem ISP)
|
||||
|
||||
/login.bml.login.forget=Aizmirsi?
|
||||
|
||||
/login.bml.login.head=Reģistrēties
|
||||
|
||||
/login.bml.login.never=Nekad
|
||||
|
||||
/login.bml.login.otheropts=Citas iespējas
|
||||
|
||||
/login.bml.login.password=Parole:
|
||||
|
||||
/login.bml.login.text1=Lai iereģistrētos [[sitename]], ievadi savu lietotājvārdu un paroli. <b>Jauniem lietotājiem:</b> Lai izveidotu kontu, <a href='/create.bml'>ej šeit</a>.
|
||||
|
||||
/login.bml.login.username=Lietotājvārds:
|
||||
|
||||
/login.bml.login.whenbrowsercloses=Kad pārlūkprogramma aizveras
|
||||
|
||||
/login.bml.title=Reģistrēties
|
||||
|
||||
/login.bml.whylogin.benefit1=Tev nevajadzēs vēlreiz ievadīt savu lietotājvārdu/paroli.
|
||||
|
||||
/login.bml.whylogin.head=Kāpēc jāreģistrējas?
|
||||
|
||||
/login.bml.whylogin.text=Dažas reģistrēšanās priekšrocības:
|
||||
|
||||
/lostinfo.bml.btn.proceed=Turpināt
|
||||
|
||||
/lostinfo.bml.enter_email=Ievadi savu e-pasta adresi:
|
||||
|
||||
/lostinfo.bml.enter_email_optional=E-pasta adrese: (neobligāti)
|
||||
|
||||
/lostinfo.bml.enter_username=Ievadi savu lietotājvārdu:
|
||||
|
||||
/lostinfo.bml.lostpassword.text|staleness=1
|
||||
/lostinfo.bml.lostpassword.text=Ja esi pazaudējis savu paroli, ievadi savu lietotājvārdu un, vēlams, e-pasta adresi, uz kuru tu vēlētos nosūtīt paroli. Ievēro, ka e-pasta adresei jāsakrīt ar to, ko tu esi lietojis iepriekš un apstiprinājis lietošanai LiveJournal. Ja atstāsi e-pasta aili tukšu, tā tiks aizsūtīta uz tavu esošo adresi.
|
||||
|
||||
/lostinfo.bml.lostpassword.title|staleness=1
|
||||
/lostinfo.bml.lostpassword.title=Pazaudēji savu paroli?
|
||||
|
||||
/lostinfo.bml.lostusername.text=Ja esi pazaudējis savu lietotājvārdu, ievadi savu e-pasta adresi, un mēs aizsūtīsim tev tavu lietotājvārdu.
|
||||
|
||||
/lostinfo.bml.lostusername.title|staleness=1
|
||||
/lostinfo.bml.lostusername.title=Pazaudēji savu lietotājvārdu?
|
||||
|
||||
/lostinfo.bml.title=Pazaudēta informācija
|
||||
|
||||
/lostinfo_do.bml.error.no_usernames_for_email=Neviens lietotājvārds nav reģistrēts ar adresi: [[address]].
|
||||
|
||||
/lostinfo_do.bml.error1.text=Tu neesi lietojis šo e-pasta adresi ar šo kontu, vai tā nav bijusi apstiprināta.
|
||||
|
||||
/lostinfo_do.bml.password_mailed.text=Tava parole ir nosūtīta.
|
||||
|
||||
/lostinfo_do.bml.password_mailed.title=Parole nosūtīta!
|
||||
|
||||
/lostinfo_do.bml.title=Pazaudēta informācija
|
||||
|
||||
/lostinfo_do.bml.username_mailed.text=Tavs lietotājvārds ir nosūtīts.
|
||||
|
||||
/lostinfo_do.bml.username_mailed.title=Lietotājvārds nosūtīts!
|
||||
|
||||
/modify.bml.title=Izmainīt žurnālu
|
||||
|
||||
/modify_do.bml.availablestyles.head=Pieejamie stili
|
||||
|
||||
/modify_do.bml.availablestyles.userstyles=Lietotāju stili:
|
||||
|
||||
/modify_do.bml.colortheme.about|staleness=2
|
||||
/modify_do.bml.colortheme.about=Šeit tu vari izvēlēties krāsu motīvu tavam iepriekš izvēlētajam lapas izkārtojumam. Vai arī, ja tevi neapmierina dotās krāsas, norādi pats savas! Ja tu atrodi kādu īpaši seksīgu salikumu, paziņo mums, un mēs nosauksim motīvu tavā vārdā.
|
||||
|
||||
/modify_do.bml.colortheme.color.head1=Krāsa
|
||||
|
||||
/modify_do.bml.colortheme.color.head2=(#rrggbb vai vārds)
|
||||
|
||||
/modify_do.bml.colortheme.customcolors=Citas krāsas
|
||||
|
||||
/modify_do.bml.colortheme.defaulttheme=Pamatmotīvs
|
||||
|
||||
/modify_do.bml.colortheme.head=Krāsu motīvs
|
||||
|
||||
/modify_do.bml.domainalias.about=Ja tev ir savs domēna vārds (domain name), vai tu plāno to reģistrēt un vēlētos, lai tas automātiski norāda uz tavu žurnālu, ievadi to šeit:
|
||||
|
||||
/modify_do.bml.domainalias.domainname=Domēna vārds:
|
||||
|
||||
/modify_do.bml.domainalias.example=Piemērs: <i>my-journal.com</i>
|
||||
|
||||
/modify_do.bml.done.btn.savechanges=Saglabāt izmaiņas
|
||||
|
||||
/modify_do.bml.done.text=Kad esi pabeidzis, spied "Saglabāt izmaiņas" pogu...
|
||||
|
||||
/modify_do.bml.error.dupdomainalias=Cits lietotājs jau reģistrējis sev tavu izvēlēto domēna vārdu.
|
||||
|
||||
/modify_do.bml.error.stylenotavailable=Viens no izvēlētajiem stiliem nav pieejams. Tas noticis vai nu tādēļ, ka kāds šo stilu ir izdzēsis, vai arī tev nav dota atļauja izvēlēties šo stilu.
|
||||
|
||||
/modify_do.bml.friends.about=Šeit tu vari izvēlēties savas draugu lapas izskatu.
|
||||
|
||||
/modify_do.bml.friends.head=Draugu skats
|
||||
|
||||
/modify_do.bml.friends.opt.usesharedpic.about=Šī opcija nosaka, kuru bildi tu redzēsi savā draugu lapā, kad lietotājs rakstījis kopīgā vai kopienas žurnālā. Ja tu to iezīmē, tad tu redzēsi kopienas bildi. Ja atstāsi to neiezīmētu, tad tu redzēsi rakstītāja personīgo bildi.
|
||||
|
||||
/modify_do.bml.friends.opt.usesharedpic.head=Lietot kopīgās žurnāla bildes, personīgo vietā
|
||||
|
||||
/modify_do.bml.journaloptions.about|staleness=2
|
||||
/modify_do.bml.journaloptions.about=Šeit tu vari pieskaņot savu LiveJournal lapu izskatu. Ja tev ļoti interesē, kā viss darbojas, izlasi <A HREF="/developer/" TARGET=_blank>programmētāju informāciju</A>. Pretējā gadījumā, mēs pieņemsim, ka tu esi apmierināts ar dotajām pamata izvēles iespējām.
|
||||
|
||||
/modify_do.bml.journaloptions.head=Žurnāla izvēlne
|
||||
|
||||
/modify_do.bml.journalstatus.about=Ja tu vēlies aizvērt vai atkal atvērt savu žurnālu, šī ir tā vieta, kur to izdarīt. Kad tu aizver savu žurnālu, tev tiek dotas 30 dienas laika to atvērt, gadījumā ja tu pārdomā. Pēc 30 dienām žurnāls tiks neatgriezeniski izdzēsts un nebūs atjaunojams.
|
||||
|
||||
/modify_do.bml.journalstatus.head=Žurnāla aktivizācijas statuss
|
||||
|
||||
/modify_do.bml.journalstatus.select.activated=Aktīvs
|
||||
|
||||
/userinfo.bml.label.memories=Atmiņas
|
||||
|
||||
/userinfo.bml.label.moredetails=(papildus info...)
|
||||
|
||||
/userinfo.bml.label.name=Vārds:
|
||||
|
||||
/userinfo.bml.label.nofriends=<i>Neviens nav minēts.</i>
|
||||
|
||||
/userinfo.bml.label.sendmessage=Sūtīt ziņu
|
||||
|
||||
talk.commentpermlink=saite
|
||||
|
||||
talk.commentpost=Pievienot jaunu komentāru
|
||||
|
||||
talk.commentsread=Lasīt komentārus
|
||||
|
||||
1114
ljcom/bin/upgrading/ms.dat
Normal file
1114
ljcom/bin/upgrading/ms.dat
Normal file
File diff suppressed because it is too large
Load Diff
889
ljcom/bin/upgrading/nb.dat
Normal file
889
ljcom/bin/upgrading/nb.dat
Normal file
@@ -0,0 +1,889 @@
|
||||
;; -*- coding: utf-8 -*-
|
||||
/accountstatus.bml.journalstatus.about=Om du vil slette eller angre sletting av din dagbok, så gjøres det her. Om du sletter dagboken har du 30 dager på deg å angre slettingen. Etter 30 dager vil dagboken forsvinne for godt og det vil ikke være mulig å få den tilbake.
|
||||
|
||||
/accountstatus.bml.journalstatus.head=Status for dagbokaktivering
|
||||
|
||||
/accountstatus.bml.journalstatus.select.activated=Aktivert
|
||||
|
||||
/accountstatus.bml.journalstatus.select.deleted=Slettet
|
||||
|
||||
/accountstatus.bml.journalstatus.select.suspended=Fryst
|
||||
|
||||
/accountstatus.bml.title=Kontostatus
|
||||
|
||||
/allpics.bml.current=Gjeldende ikoner
|
||||
|
||||
/allpics.bml.default=<u>Standard</u>
|
||||
|
||||
/allpics.bml.edit2=Du er kanskje interessert i å <a href='[[editlink]]'>redigere dine nøkkelord</a> eller <a href='[[uploadlink]]'>laste opp et nytt bilde</a>.
|
||||
|
||||
/allpics.bml.error.noparam=Du må skrive et brukernavn.
|
||||
|
||||
/allpics.bml.keywords=Nøkkelord:
|
||||
|
||||
/allpics.bml.nopics.text.other=Denne brukeren har ikke lastet opp noen ikoner.
|
||||
|
||||
/allpics.bml.nopics.text2=Du har ikke lastet opp noen ikoner. For å laste opp et, <a href='[[link]]'>gå hit</a>.
|
||||
|
||||
/allpics.bml.nopics.title=Ingen ikoner
|
||||
|
||||
/allpics.bml.pics=Her er ikonene til [[bruker]].
|
||||
|
||||
/allpics.bml.title=Ikoner
|
||||
|
||||
/changepassword.bml.btn.proceed=Fortsett
|
||||
|
||||
/changepassword.bml.changepassword.header=Bytt passord
|
||||
|
||||
/changepassword.bml.changepassword.instructions=Fyll ut skjemaet nedenfor for å bytte passord. Om du ønsker hjelp til å velge et godt passord og holde kontoen din trygg, les <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=71">denne OBS-artikkelen</a>.
|
||||
|
||||
/changepassword.bml.email.body<<
|
||||
Ditt passord har blitt byttet for [[sitename]].
|
||||
|
||||
Om du skulle miste det, gå til:
|
||||
|
||||
[[siteroot]]/lostinfo.bml
|
||||
|
||||
Vennlig hilsen,
|
||||
[[sitename]] sine utviklere
|
||||
|
||||
[[siteroot]]
|
||||
.
|
||||
|
||||
/changepassword.bml.email.subject=Byttet passord
|
||||
|
||||
/changepassword.bml.error.badcheck=Passordbytte feilet: [[error]]
|
||||
|
||||
/changepassword.bml.error.badnewpassword=De to passordene du skrev for å bekrefte byttet stemmer ikke overens. Du kan ha skrevet feil bekreftelsesfeltet. Prøv å skrive passordet og bekreftelsen inn på ny.
|
||||
|
||||
/changepassword.bml.error.badoldpassword=Ditt nåværende passord er ikke riktig.
|
||||
|
||||
/changepassword.bml.error.blankpassword=Ditt nye passord kan ikke være tomt.
|
||||
|
||||
/changepassword.bml.error.changetestaccount=Kan ikke endre testkontoets passord.
|
||||
|
||||
/changepassword.bml.error.characterlimit=Passord kan ikke ha flere enn 30 tegn.
|
||||
|
||||
/changepassword.bml.error.invaliduser=Brukeren <B>[[user]]</B> eksisterer ikke. Er du sikker på at du skrev brukernavnet rett?
|
||||
|
||||
/changepassword.bml.error.mustenterusername=Du må skrive inn ditt brukernavn.
|
||||
|
||||
/changepassword.bml.error.nonascii=Passord kan kun inneholde ASCII-tegn (latinsk alfabet). Vennligst bruk kun ASCII-godkjente tegn.
|
||||
|
||||
/changepassword.bml.error.notvalidated|staleness=1
|
||||
/changepassword.bml.error.notvalidated=Du kan ikke bytte passord før din e-postadresse er bekreftet.
|
||||
|
||||
/changepassword.bml.newpassword=Nytt passord:
|
||||
|
||||
/changepassword.bml.newpasswordagain=Nytt passord (bekreftelse):
|
||||
|
||||
/changepassword.bml.oldpassword=Nåværende passord:
|
||||
|
||||
/changepassword.bml.proceed.instructions=Trykk knappen nedenfor og passordet blir endret til det nye passordet. Du vil motta en bekreftelse per e-post.
|
||||
|
||||
/changepassword.bml.success.text=Ditt passord er endret til ditt nye passord, og en e-post er sendt med bekreftelse.
|
||||
|
||||
/changepassword.bml.title=Endre passord
|
||||
|
||||
/community/index.bml.title=Samfunnsenter
|
||||
|
||||
/community/join.bml.button.join=Melde inn i samfunn
|
||||
|
||||
/community/join.bml.label.addtofriends=Legg "[[maintainer]]" til din venneliste.<br>
|
||||
|
||||
/community/join.bml.label.allowposting=Dette samfunnet tillater posting fra alle dets medlemmer, så du har nå lov å poste i det. Hvis du allerede har en LiveJournal-klient åpen må du logge ut og inn igjen for at listen over dagbøker og samfunn du kan poste i, skal oppdateres.
|
||||
|
||||
/community/join.bml.label.auth=Selv om du nå er listet som et medlem, tillater dette samfunnet kun posting av tillatte brukere. Kontakt en av bestyrerene dersom du ønsker å skrive egne oppføringer. Nedenfor er en liste over bestyrere for dette samfunnet: [[admins]]
|
||||
|
||||
/community/join.bml.label.banned=Dette samfunnets bestyrer(e) har nektet deg fra å delta.
|
||||
|
||||
/community/join.bml.label.closed=Dette samfunnet er lukket. Om du ønsker å melde deg inn må du kontakte en bestyrer. Neden er en liste over bestyrere for dette samfunnet: [[admins]]
|
||||
|
||||
/community/join.bml.label.commlogged=Du er pålogget som en delt konto/samfunn, og ikke din personlige konto.
|
||||
|
||||
/community/join.bml.label.errorcomminfo=Angitt informasjon for samfunnet ditt er ugyldig.
|
||||
|
||||
/community/join.bml.label.expls=Trykk på knappen nedenfor for å melde deg inn i "[[maintainer]]"-samfunnet. Fjern haken fra boksen nedenfor dersom du ønsker å delta i samfunnet uten å legge det til din venneliste.
|
||||
|
||||
/community/join.bml.label.loginfirst=For å melde deg inn i et samfunn må du først <a href="/login.bml?ret=1">logge på</a>.
|
||||
|
||||
/community/join.bml.label.membernow=Du er nå et medlem i <a href="/userinfo.bml?user=[[username]]">[[commname]]</a>
|
||||
|
||||
/community/join.bml.label.sure=Er du sikker?
|
||||
|
||||
/community/join.bml.success=Vellykket
|
||||
|
||||
/community/join.bml.title=Melde inn i samfunn
|
||||
|
||||
/community/leave.bml.button.leave=Melde ut av samfunn
|
||||
|
||||
/community/leave.bml.label.buttontoleave=Trykk knappen nedenfor for å forlate "[[commname]]".
|
||||
|
||||
/community/leave.bml.label.infoerror=Angitt informasjon for samfunnet er ugyldig.
|
||||
|
||||
/community/leave.bml.label.logoutfirst=For å melde deg ut av et samfunn må du først <a href="/login.bml?ret=1">logge på</a>.
|
||||
|
||||
/community/leave.bml.label.removed=Du har nå forlatt <a href="/userinfo.bml?user=[[commuser]]">[[commname]]</a>
|
||||
|
||||
/community/leave.bml.label.removefromfriends=Også fjerne "[[user]]" fra din venneliste.
|
||||
|
||||
/community/leave.bml.success=Vellykket
|
||||
|
||||
/community/leave.bml.sure=Er du sikker?
|
||||
|
||||
/community/leave.bml.title=Forlat samfunn
|
||||
|
||||
/community/manage.bml.commlist.actions=<b>Handlinger</b>
|
||||
|
||||
/community/manage.bml.commlist.actmembers=<b>[<a href='[[link]]'>Medlemmer</a>]</b>
|
||||
|
||||
/community/manage.bml.commlist.actmembers2=Medlemmer
|
||||
|
||||
/community/manage.bml.commlist.actsettings=<b>[<a href='[[link]]'>Valg</a>]</b>
|
||||
|
||||
/community/manage.bml.commlist.actsettings2=Valg
|
||||
|
||||
/community/manage.bml.commlist.header=Dine samfunn
|
||||
|
||||
/community/manage.bml.commlist.none=<i>Du er ikke bestyrer av noen samfunn.</i>
|
||||
|
||||
/community/manage.bml.commlist.text=Her er samfunnene du bestyrer eller assisterer i:
|
||||
|
||||
/community/manage.bml.commlist.title=<b>Navn:</b>
|
||||
|
||||
/community/manage.bml.commlist.username=<b>Brukernavn</b>
|
||||
|
||||
/community/manage.bml.create.header=Opprett et samfunn
|
||||
|
||||
/community/manage.bml.create.text=Du kan også <a href='[[link]]'><b>opprette et nytt samfunn</b></a>.
|
||||
|
||||
/community/manage.bml.title=Samfunnstyring
|
||||
|
||||
/community/members.bml.error.alreadyadded=[[user]] ble ikke lagt til fordi de allerede hadde tilgang til dette samfunnet.
|
||||
|
||||
/community/members.bml.error.alreadysent=[[user]] kunne ikke legges til fordi de ikke har svart på bekreftelsen som ble sendt som e-post den <i>[[datetime]]</i>. Vennligst vent til de har svart.
|
||||
|
||||
/community/members.bml.error.invaliduser=Kan ikke legge til samfunn eller syndicated konto: [[user]]
|
||||
|
||||
/community/members.bml.error.noaccess=Kun samfunnsbestyrere kan tilpasse medlemskapslister. Du er ikke en bestyrer i samfunn [[comm]].
|
||||
|
||||
/community/members.bml.error.noattr=Ingen atributter valgt for bruker: [[user]]
|
||||
|
||||
/community/members.bml.error.nocomm=Samfunnet finnes ikke.
|
||||
|
||||
/community/members.bml.error.nouser=Brukeren eksisterer ikke: <b>[[user]]</b>
|
||||
|
||||
/community/members.bml.key.admin=<b>Bestyrer</b>
|
||||
|
||||
/community/members.bml.key.member=<b>Medlem</b>
|
||||
|
||||
/community/members.bml.key.moderate=<b>Moderatør</b>
|
||||
|
||||
/community/members.bml.key.post=<b>Tilgang til å oppdatere</b>
|
||||
|
||||
/community/members.bml.key.preapprove=Ikke moderert
|
||||
|
||||
/community/members.bml.manage2=Tilpass samfunn
|
||||
|
||||
/community/members.bml.name=<b>Samfunnets navn:</b> [[name]]
|
||||
|
||||
/community/members.bml.nextlink=<i>(Neste side...)</i>
|
||||
|
||||
/community/members.bml.prevlink=<i>(Forrige side...)</i>
|
||||
|
||||
/community/members.bml.settings=[<a href='[[link]]'>Valg</a>]
|
||||
|
||||
/community/members.bml.success.header=Vellykket
|
||||
|
||||
/community/members.bml.success.message=Dine tilpasninger ble vellykket lagret.
|
||||
|
||||
/community/members.bml.success.return=<a href='[[link]]'>Gå tilbake til listen</a>
|
||||
|
||||
/community/members.bml.title=Samfunnsmedlemmer
|
||||
|
||||
/community/members.bml.update=Oppdater valg
|
||||
|
||||
/community/moderate.bml.approve.button=Ja, godta
|
||||
|
||||
/community/moderate.bml.approve.header=Godta denne oppføringen?
|
||||
|
||||
/community/moderate.bml.approve.preapprove=Legg også [[user]] til listen av forhåndsgodkjente brukere for dette samfunnet.
|
||||
|
||||
/community/moderate.bml.approve.text=Er du sikker på at du vil godkjenne denne oppføringen?
|
||||
|
||||
/community/moderate.bml.brlist.actions=Handlinger
|
||||
|
||||
/community/moderate.bml.brlist.subject=Emnet begynner
|
||||
|
||||
/community/moderate.bml.brlist.time=Tid
|
||||
|
||||
/community/moderate.bml.brlist.view=Vis
|
||||
|
||||
/community/moderate.bml.browse.empty=Moderasjonskøen er tom.
|
||||
|
||||
/community/moderate.bml.browse.header=Moderer samfunn
|
||||
|
||||
/community/moderate.bml.browse.text=Her er moderasjonskøen for samfunnet [[link]]
|
||||
|
||||
/community/moderate.bml.choice.approve=Godkjenn
|
||||
|
||||
/community/moderate.bml.choice.reject=Avvis
|
||||
|
||||
/community/moderate.bml.error.noaccess=Du modererer ikke samfunn [[comm]].
|
||||
|
||||
/community/moderate.bml.error.noentry=Oppføringen finnes ikke (den er kanskje allerede håndtert av en annen moderatør).
|
||||
|
||||
/community/moderate.bml.error.nolist=Du modererer ingen samfunn.
|
||||
|
||||
/community/moderate.bml.error.notfound=Samfunnskontoen finnes ikke.
|
||||
|
||||
/community/moderate.bml.manage=Tilpass samfunn
|
||||
|
||||
/community/moderate.bml.moderate=Moderer dette samfunnet
|
||||
|
||||
/community/moderate.bml.modlist.actions=Handlinger
|
||||
|
||||
/community/moderate.bml.modlist.actmodempty=[Moderer]
|
||||
|
||||
/community/moderate.bml.modlist.actmoderate=Moderer
|
||||
|
||||
/community/moderate.bml.modlist.count=Kølengde
|
||||
|
||||
/community/moderate.bml.modlist.header=Moderer samfunn
|
||||
|
||||
/community/moderate.bml.modlist.title=Tittel
|
||||
|
||||
/community/moderate.bml.modlist.username=Brukernavn
|
||||
|
||||
/community/moderate.bml.posted.appheader=Forhåndsgodjent
|
||||
|
||||
/community/moderate.bml.posted.apptext=Brukeren [[user]] ble også lagt til listen over forhåndsgodkjente brukere av dette samfunnet.
|
||||
|
||||
/community/moderate.bml.posted.header=Vellykket
|
||||
|
||||
/community/moderate.bml.posted.proterror=Denne oppføringen ble ikke postet grunnet protokoll-feil: [[err]]
|
||||
|
||||
/community/moderate.bml.posted.text=Oppdateringen var vellykket.
|
||||
|
||||
/community/moderate.bml.reject.button=Ja, avvis
|
||||
|
||||
/community/moderate.bml.reject.header=Avvis denne oppføringen?
|
||||
|
||||
/community/moderate.bml.reject.reason|staleness=1
|
||||
/community/moderate.bml.reject.reason=Du kan også beskrive til innsenderen hvorfor du avviste oppføringen. Forklaringen vil bli sendt per e-post.
|
||||
|
||||
/community/moderate.bml.reject.text=Er du sikker på at du vil avvise denne oppføringen?
|
||||
|
||||
/community/moderate.bml.rejected.header=Avvist
|
||||
|
||||
/community/moderate.bml.rejected.text=Oppføringen er avvist.
|
||||
|
||||
/community/moderate.bml.title=Moderer samfunn
|
||||
|
||||
/community/search.bml.button.clear=Tilbakestill
|
||||
|
||||
/community/search.bml.button.search=Søk!
|
||||
|
||||
/community/search.bml.checkbox.onlywithpics=Kun samfunn med bilder
|
||||
|
||||
/community/search.bml.label.byinterest=Etter interesse
|
||||
|
||||
/community/search.bml.label.bylocation=Etter område
|
||||
|
||||
/community/search.bml.label.bytime=Etter sist oppdatert i dagbok
|
||||
|
||||
/community/search.bml.label.city=By:
|
||||
|
||||
/community/search.bml.label.country=Land:
|
||||
|
||||
/community/search.bml.label.displayoptions=Visningsalternativer
|
||||
|
||||
/community/search.bml.label.hasmember=Har medlem
|
||||
|
||||
/community/search.bml.label.othercriteria=Andre kriterier
|
||||
|
||||
/community/search.bml.label.outputformat=Visningsformat
|
||||
|
||||
/community/search.bml.label.records=Oppføringer per side:
|
||||
|
||||
/community/search.bml.label.searchcomm=Søk gjennom samfunn
|
||||
|
||||
/community/search.bml.label.selecriteria=Fyll ut kriterier nedenfor som du ønsker å bruke for å søke etter samfunn. Resultatene du får er krysningspunktet mellom alle søkekriterier. Med andre ord så betyr hvert avkrysningsfelt "AND", ikke "OR".
|
||||
|
||||
/community/search.bml.label.sortmethod=Sorteringsmetode:
|
||||
|
||||
/community/search.bml.label.stateprovince=Stat/fylke:
|
||||
|
||||
/community/search.bml.label.updated=Sist oppdatert i
|
||||
|
||||
/community/search.bml.sel.bypicture=Etter bilde
|
||||
|
||||
/community/search.bml.sel.communityname=Samfunnsnavn
|
||||
|
||||
/community/search.bml.sel.commview=Samfunnsvisning
|
||||
|
||||
/community/search.bml.sel.day=dag
|
||||
|
||||
/community/search.bml.sel.month=måned
|
||||
|
||||
/community/search.bml.sel.simple=Enkel
|
||||
|
||||
/community/search.bml.sel.updatetime=Oppdater tiden
|
||||
|
||||
/community/search.bml.sel.username=Brukernavn
|
||||
|
||||
/community/search.bml.sel.week=uke
|
||||
|
||||
/community/search.bml.title=Samfunnsøk
|
||||
|
||||
/community/settings.bml.button.changecommunity=Oppdater valg
|
||||
|
||||
/community/settings.bml.button.createcommunity=Opprett samfunn
|
||||
|
||||
/community/settings.bml.error.badpassword=Ugyldig passord for samfunnet
|
||||
|
||||
/community/settings.bml.error.hasentries=Denne kontoen har allerede oppføringer og kan ikke gjøres om.
|
||||
|
||||
/community/settings.bml.error.maintainertype=Bestyrerkonto må være en person, ikke en annen delt konto.
|
||||
|
||||
/community/settings.bml.error.noaccess=Kun samfunnsbestyrere kan tilpasse samfunnet. Du er ikke en bestyrer av samfunn [[comm]].
|
||||
|
||||
/community/settings.bml.error.notcomm=Ikke en samfunnskonto.
|
||||
|
||||
/community/settings.bml.error.notfound=Samfunnskontoen finnes ikke.
|
||||
|
||||
/community/settings.bml.error.samenames=Bestyrerkonto og samfunnskonto kan ikke være den samme.
|
||||
|
||||
/community/settings.bml.label.anybodycan=<b>Alle medlemmer</b><br />Alle kan poste øyeblikkelig når de har meldt seg inn.
|
||||
|
||||
/community/settings.bml.label.changeheader=Tilpass samfunnsvalg
|
||||
|
||||
/community/settings.bml.label.changetext=Her kan du tilpasse valgene for samfunn du bestyrer eller eier.
|
||||
|
||||
/community/settings.bml.label.commchanged=Dine samfunnsvalg er lagret.
|
||||
|
||||
/community/settings.bml.label.commcreate=Dette er kontoen du ønsker å gjøre om til et samfunn. Det må <a href="/create.bml">allerede være opprettet</a>, men bør ikke være i bruk av noen, siden mange forskjellige personer potensielt kan poste i den i fremtiden.
|
||||
|
||||
/community/settings.bml.label.commcreated=Ditt samfunn er nå opprettet.
|
||||
|
||||
/community/settings.bml.label.commheader=Samfunnskonto
|
||||
|
||||
/community/settings.bml.label.comminfo=Samfunnsinfo
|
||||
|
||||
/community/settings.bml.label.commopts=Samfunnsvalg
|
||||
|
||||
/community/settings.bml.label.commsite=Samfunnsvevsted
|
||||
|
||||
/community/settings.bml.label.community=Samfunn:
|
||||
|
||||
/community/settings.bml.label.createheader=Opprett samfunn
|
||||
|
||||
/create.bml.age.check.question=Er du under 13 år?
|
||||
|
||||
/create.bml.age.check.yes=Ja, jeg er under 13 år.
|
||||
|
||||
/create.bml.age.head=Alder
|
||||
|
||||
/create.bml.btn.create=Opprett dagbok
|
||||
|
||||
/create.bml.btn.proceed=Fortsett...
|
||||
|
||||
/create.bml.clusterselect.cluster=Cluster:
|
||||
|
||||
/create.bml.clusterselect.clusternum=Gruppe [[number]]
|
||||
|
||||
/create.bml.clusterselect.head=Gruppe Valg
|
||||
|
||||
/create.bml.clusterselect.nocluster=Ingen Gruppe
|
||||
|
||||
/create.bml.clusterselect.text=Vennligst velg den gruppen du ønsker å lage denne kontoen i. <b>Merk:</b> Dette er kun en debugging/test funksjon. I bruk, vil brukere ikke velge dette eller vite noe om det.
|
||||
|
||||
/create.bml.create.head=Opprett en Ny Dagbok
|
||||
|
||||
/create.bml.create.text=Å opprette en ny Livejournal-konto er enkelt, bare følg instruksjonene nedenfor!
|
||||
|
||||
/create.bml.email.head=Din epost adresse
|
||||
|
||||
/create.bml.email.input.head=Epost Adresse:
|
||||
|
||||
/create.bml.error.coppa.under13=Beklager, på grunn av COPPA restriksjoner, kan du ikke bruke Livejournal tjenester når du er under 13 år. Vennligst kom tilbake på din 13nde bursdag.
|
||||
|
||||
/create.bml.error.email.blank=Du må skrive inn din epost adresse.
|
||||
|
||||
/create.bml.error.email.lj_domain=Du kan ikke bruke et [[domain]] alias når du lager en konto. Vennligst bruk en annen epost addresse.
|
||||
|
||||
/create.bml.error.email.nospaces=Du kan ikke ha mellomrom i din epost adresse. Om du bruker AOL, husk på at din Internet Epost adresse er ditt skjermnavn med alle mellomrom tatt vekk, og at den ender med <b>@aol.com</b>
|
||||
|
||||
/create.bml.error.password.asciionly=Du kan kun bruke ASCII symboler i passord.
|
||||
|
||||
/create.bml.error.password.blank=Du må velge et passord.
|
||||
|
||||
/create.bml.error.password.nomatch=Passordene er ikke de samme.
|
||||
|
||||
/create.bml.error.postrequired=POST påkrevd
|
||||
|
||||
/create.bml.error.username.blank=Vennligst skriv inn et navn og kallenavn/alias.
|
||||
|
||||
/create.bml.error.username.inuse=Brukernavnet du valgte er allerede tatt, vennligst velg et annet.
|
||||
|
||||
/create.bml.error.username.iscode=Brukernavn ser ut til å være en invitasjons kode, ikke et brukernavn.
|
||||
|
||||
/create.bml.error.username.mustenter=Du må velge et brukernavn.
|
||||
|
||||
/create.bml.error.username.reserved=Beklager, dette brukernavnet er reservert.
|
||||
|
||||
/create.bml.initial.friend.news=LiveJournal nyheter og hendelser
|
||||
|
||||
/create.bml.initialfriends=Legg disse dagbøkene til din venneliste for å holde deg oppdatert rundt nyheter på nettstedet.
|
||||
|
||||
/create.bml.name.head=Ditt Navn
|
||||
|
||||
/create.bml.name.input.head=Navn:
|
||||
|
||||
/create.bml.name.text=Hva er navnet ditt eller et kallenavn? Dette vil komme opp på toppen av dagboken din, og i bruker katalogen om du skulle velge å være oppført i den. Du trenger ikke bruke fullt navn eller ditt ordentlige navn.
|
||||
|
||||
/create.bml.password.head=Passord
|
||||
|
||||
/create.bml.password.input.head1=Passord:
|
||||
|
||||
/create.bml.password.input.head2|staleness=1
|
||||
/create.bml.password.input.head2=Passord igjen:
|
||||
|
||||
/create.bml.password.text=Velg et passord.
|
||||
|
||||
/create.bml.proceed.btn.proceed=Fortsett...
|
||||
|
||||
/create.bml.proceed.warning=Klikk <b>Fortsett</b> kun <i>en</i> gang!!
|
||||
|
||||
/create.bml.success.btn.enterinfo=Skriv inn personlig informasjon
|
||||
|
||||
/create.bml.success.head=Suksess!
|
||||
|
||||
/create.bml.success.text1|staleness=1
|
||||
/create.bml.success.text1=Din dagbok har blitt lagd. Viktig registrasjons detaljer har blitt sent til <font face=Arial size=+1><b>[[email]]</b></font>, eposten inneholder instruksjoner. <b>Merk:</b>Du har <I>syv dager</i> til å bekrefte din dagbok konto. Om du ikke har satt den opp innen 7 dager vil brukernavnet <b>[[username]]</b> automatisk bli slettet og noen andre kan registrere det.
|
||||
|
||||
/create.bml.success.text2=Din Dagbok vil komme på:
|
||||
|
||||
/create.bml.success.text3=Vennligst ta deg tid til å fylle inn litt informasjon om deg selv. Mesteparten er valgfritt, men det gir oss en ide om hvem som bruker Livejournal.
|
||||
|
||||
/create.bml.title=Lag ny Dagbok
|
||||
|
||||
/create.bml.useacctcodes.entercode|staleness=1
|
||||
/create.bml.useacctcodes.entercode=For å lage en ny konto, skriv inn konto aktivasjons kode:
|
||||
|
||||
/create.bml.useacctcodes.welcome=Velkommen
|
||||
|
||||
/create.bml.username.box.head=Brukernavn:
|
||||
|
||||
/create.bml.username.forpaidaccts=Eller, for betalte kontoer:
|
||||
|
||||
/create.bml.username.head=Brukernavn:
|
||||
|
||||
/create.bml.username.ljaddress=Din Dagbok vil komme på disse adressene:
|
||||
|
||||
/create.bml.username.text=Hver [[sitename]] bruker må ha sitt eget unike brukernavn. Ditt brukernavn er det som vises i adressen til din dagbok, og som du også bruker til å logge inn til [[sitename]] server. Det vises også når du skriver kommentarer i andre folks dagbok.
|
||||
|
||||
/create.bml.username.username=brukernavn
|
||||
|
||||
/customize/index.bml.s1=Det gamle stilsystemet tilpasses gjennom <a href="/modify.bml">Tilpass dagboken</a>-siden.
|
||||
|
||||
/customize/index.bml.title=Tilpass dagbok
|
||||
|
||||
/editinfo.bml.allowshowcontact.about=Du bør ha dette alternativet aktivert. Det lar andre mennesker kontakte deg ved å vise e-postadressen din, ICQ-nummeret ditt eller AOL Instant Messenger skjermnavnet ditt.
|
||||
|
||||
/editinfo.bml.allowshowcontact.email=Om synlig, e-postadresse du vil vise:
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.actual_only=Kun egentlig adresse
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.both=Begge (egentlig + [[domain]])
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.lj_only=Kun LiveJournal-adressen
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.neither=Ingen. Skjul min e-postadresse.
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.no_show=Ikke vis e-postadresse
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.show=Vis e-postadresse
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.withdomainaddr=Med valget ovenfor, kan du også velge å skjule epost adressen din (men fremdeles vise annen kontakt informasjon), kun vise din Livejournal epost adresse (kun for <a href="/paidaccounts/">betalte kontoer</a>), kun vise din ordentelige adresse, eller vise begge.
|
||||
|
||||
/editinfo.bml.allowshowcontact.email.withoutdomainaddr=Med valget ovenfor, kan du også velge å skjule din epost adresse (men fremdeles vise annen kontakt informasjon).
|
||||
|
||||
/editinfo.bml.allowshowcontact.title=Vise din kontaktinformasjon på LiveJournal?
|
||||
|
||||
/editinfo.bml.allowshowinfo.about=Skru på denne om du vil vise by/fylke/land og fødselsdato til andre brukere.
|
||||
|
||||
/editinfo.bml.allowshowinfo.title=Vise område & bursdag?
|
||||
|
||||
/editinfo.bml.autotranslate.about<<
|
||||
Bruk dette alternativet for å fortelle LiveJournal hvilken koding vi skal anta tidligere poster er skrevet i, før vi byttet til Unicode.
|
||||
|
||||
Dersom du skriver på norsk eller engelsk, kan du godt velge "Western European" her.
|
||||
.
|
||||
|
||||
/editinfo.bml.autotranslate.header|staleness=1
|
||||
/editinfo.bml.autotranslate.header=Automatisk oversette eldre oppføringer fra:
|
||||
|
||||
/editinfo.bml.bday.title=Bursdag
|
||||
|
||||
/editinfo.bml.bday.year.opt=år er valgfritt
|
||||
|
||||
/editinfo.bml.bdayreminders.about=Dersom du vil ha e-post som påminner deg om bursdagen til vennene dine på LiveJournal, sett hake her.
|
||||
|
||||
/editinfo.bml.bdayreminders.header|staleness=1
|
||||
/editinfo.bml.bdayreminders.header=Send meg bursdagspåminnelser
|
||||
|
||||
/editinfo.bml.bio.about|staleness=1
|
||||
/editinfo.bml.bio.about=Her kan du skrive en kort biografi om deg selv. Denne vil dukke opp på brukerinformasjonssiden din.
|
||||
|
||||
/editinfo.bml.bio.header=Om deg
|
||||
|
||||
/editinfo.bml.blockrobots.about|staleness=1
|
||||
/editinfo.bml.blockrobots.about=Om du setter hake her, vil søkemotorer la din journal i fred. Ikke alle søkemotorer respekterer reglene, men de mest populære gjør det.
|
||||
|
||||
/editinfo.bml.blockrobots.header=Bloker roboter og søkemotorer fra å indeksere journalen din
|
||||
|
||||
/editinfo.bml.city.title=By
|
||||
|
||||
/editinfo.bml.country.choose=Velg et land
|
||||
|
||||
/editinfo.bml.country.title=Land
|
||||
|
||||
/editinfo.bml.donotlog=Ikke
|
||||
|
||||
/editinfo.bml.email.title=E-post
|
||||
|
||||
/editinfo.bml.enableboards.about|staleness=1
|
||||
/editinfo.bml.enableboards.about=Sett kryss her om du vil at andre skal kunne kommentere journaloppføringene du poster (stilen du har satt må også støtte dette).
|
||||
|
||||
/editinfo.bml.enableboards.header=Aktiver diskusjonstavler
|
||||
|
||||
/editinfo.bml.encoding.about=For brukere som skriver på flere språk og må ta internasjonale hensyn.
|
||||
|
||||
/editinfo.bml.encoding.header=Alternativer for koding
|
||||
|
||||
/editinfo.bml.error.email.lj_domain|staleness=1
|
||||
/editinfo.bml.error.email.lj_domain<<
|
||||
Du kan ikke anngi en @[[domain]] e-postadresse.
|
||||
Skriv din egentlige e-postadresse i dette feltet.
|
||||
Om du har en betalt konto, vil e-post sendt [[user]]@[[domain]] videresendes til din egentlige adresse.
|
||||
For å velge hvilken e-postadresse (eller begge) som vises offentlig, se alternativet nedenfor under "Vis kontaktinformasjon"
|
||||
.
|
||||
|
||||
/editinfo.bml.error.email.no_space<<
|
||||
Ingen mellomrom er tillatt i en e-postadresse.
|
||||
Dersom du bruker AOL, husk at din e-postadresse for internett er skjermnavnet ditt med alle mellomrom fjernet, fulgt av <b>@aol.com</b>
|
||||
.
|
||||
|
||||
/editinfo.bml.error.excessive_int<<
|
||||
Beklager, men du har angitt for mange interesser. Høyeste antall er 150, men du har angitt [[intcount]].
|
||||
Endringer du gjorde i din interesseliste ble ikke lagret. Gå tilbake, fjern noen interesser og prøv igjen.
|
||||
.
|
||||
|
||||
/editinfo.bml.error.invalidbio=Din lagrede biografi inneholder ugyldige tegn. Du må besøke <a href='/utf8convert.bml'><b>tegnoversettelse</b></a> for å konvertere til Unicode.
|
||||
|
||||
/editinfo.bml.error.invalidints=Din interesseliste inneholder ugyldige tegn. Du må besøke <a href='/utf8convert.bml'><b>tegnoversettelse</b></a> for å konverte til Unicode.
|
||||
|
||||
/editinfo.bml.error.invalidname=Navnet ditt inneholder ugyldige tegn. Du må besøke <a href='/utf8convert.bml'><b>tegnoversettelse</b></a> for å konvertere til Unicode.
|
||||
|
||||
/editinfo.bml.error.locale.country_ne_state=Du valgte United States som land, men du skrev en ikke-amerikansk stat i "Annen stat"-feltet.
|
||||
|
||||
/editinfo.bml.error.locale.invalid_country=På et eller annet hvis klarte du å velge et ugyldig land.
|
||||
|
||||
/editinfo.bml.error.locale.state_ne_country=Du spesifiserte et annet land enn amerika, men valgte en amerikansk stat.
|
||||
|
||||
/editinfo.bml.error.locale.zip_ne_state=Din ZIP-kode stemmer ikke med den staten du valgte. Korriger eller ta vekk ugyldige verdier fra stat og postnummerfeltene.
|
||||
|
||||
/editinfo.bml.error.locale.zip_requires_us|staleness=1
|
||||
/editinfo.bml.error.locale.zip_requires_us=Du fylte ut en ZIP-kode, men valgte ikke Amerika som ditt land. Vi tar bare i mot ZIP-koder fra amerikanske borgere. Vennligst gå tilbake og fjern ZIP-koden, eller velg Amerika som ditt land.
|
||||
|
||||
/editinfo.bml.error.tm.require.number=Dersom du vil motta SMS eller Mobilpost må du anngi ditt telefonnummer.
|
||||
|
||||
/editinfo.bml.error.tm.require_provider|staleness=1
|
||||
/editinfo.bml.error.tm.require_provider=Om du vil bruke SMS eller Mobilpost må du velge mobilleverandøren din. Dersom din ikke finnes på listen, kontakt oss, så kan vil legge til støtte for den.
|
||||
|
||||
/editinfo.bml.finished.about=Når du er ferdig, trykk "Lagre endringer" nedenfor.
|
||||
|
||||
/editinfo.bml.finished.header=Ferdig?
|
||||
|
||||
/editinfo.bml.finished.save_button=Lagre endringer
|
||||
|
||||
/editinfo.bml.gender.title=Kjønn
|
||||
|
||||
/editinfo.bml.getreplies.about|staleness=1
|
||||
/editinfo.bml.getreplies.about=Sett kryss her dersom du vil ha e-postvarsling når noen kommenterer dine journaloppføringer.
|
||||
|
||||
/editinfo.bml.getreplies.header=Motta diskusjonstavlesvar
|
||||
|
||||
/editinfo.bml.hidefriendof.about=Om du setter kryss her, skjuler du listen over hvem som lister deg som venn på din brukerinformasjonsside.
|
||||
|
||||
/editinfo.bml.hidefriendof.header=Skjul "venn av"-liste
|
||||
|
||||
/editinfo.bml.howhear.about<<
|
||||
Bare for nysgjerrighetens skyld, hvor hørte du om [[sitename]] fra?
|
||||
Var det en spesiell person fyller du ut brukernavnet deres. Om det var fra en annen kilde/artikkel/lenke/nettside vær snill å beskrive den.
|
||||
.
|
||||
|
||||
/editinfo.bml.howhear.header=Nysgjerrighet
|
||||
|
||||
/editinfo.bml.htmlemail.about|staleness=1
|
||||
/editinfo.bml.htmlemail.about<<
|
||||
Sett kryss her dersom e-postklienten din støtter HTML-formatert e-post. Mange klienter prøver å støtte det, men feiler totalt.
|
||||
Om du fjerner krysset, vil LiveJournal bare sende e-post i ren tekst.
|
||||
.
|
||||
|
||||
/editinfo.bml.htmlemail.header=Send HTML Eposter
|
||||
|
||||
/editinfo.bml.int.about<<
|
||||
Om du ønsker at andre skal kunne søke i katalogen og finne deg via interesse, skriv inn nedenfor alt du er interesert i, separer med komma.
|
||||
Korte En-ords setninger er best. <b>Tommelregel:</b> Du skulle kunne putte inn interessen i en setning som "Jeg liker _______". Når du referer til et adjektiv, bruk flertalls form. "Jeg liker DVDer" istedetfor "Jeg liker DVD".
|
||||
.
|
||||
|
||||
/editinfo.bml.int.ex.bad=<font color=#FF0000><b>DÅRLIG</b></FONT> Eksempel:</b> Jeg liker masse forskjellige grupper og å se filmer og snakke med venner og gå på diskotek.</b> Den slags kan gå i bio'en din ovenfor.
|
||||
|
||||
/editinfo.bml.int.ex.good=<FONT COLOR=#009000><B>GODT</b></font>Eksampel: <B> sykling, skigåing, datamaskiner, dvder, mp3er, ost, kvinner</b>
|
||||
|
||||
/editinfo.bml.int.header=Interesser
|
||||
|
||||
/editinfo.bml.login.enterinfo=Skriv inn brukernavn og passord for å endre din person informasjon:
|
||||
|
||||
/editinfo.bml.login.forgot.header=Glemt noe?
|
||||
|
||||
/editinfo.bml.login.forgot.recover=Om du har glemt ditt brukernavn eller passord, <a href='lostinfo.bml'>få det tilbake her!</a>.
|
||||
|
||||
/editinfo.bml.logip.always=Alltid
|
||||
|
||||
/editinfo.bml.logip.anon_only=Kun anonyme postere
|
||||
|
||||
/editinfo.bml.logip.header=Logg IP adresse av folk som kommenterer?
|
||||
|
||||
/editinfo.bml.mangleaddress.about|staleness=1
|
||||
/editinfo.bml.mangleaddress.about=Om du er redd for at spam-roboter vil finne din epost adresse på Livejournal, tikk av dette valget og din epost adresse vil bli modifisert slik at den ikke kan bli funnet av epost-søkende roboter.
|
||||
|
||||
/editinfo.bml.name.title=Navn
|
||||
|
||||
/editinfo.bml.optional=Valgfri
|
||||
|
||||
/friends/index.bml.title=Vennelistetilpassing
|
||||
|
||||
/index.bml.boldcreate=Opprett din egen LiveJournal!
|
||||
|
||||
/index.bml.frank.image.alt=Frank, LiveJournal sin maskottgeit
|
||||
|
||||
/index.bml.frank.logo=<b><i>"Bæææ",</i> sier <a href="/site/goat.bml">Frank</a>.</b>
|
||||
|
||||
/index.bml.meta.desc=LiveJournal.com er et sted du kan dele dine tanker med verden.
|
||||
|
||||
/index.bml.meta.keywords=dagbok, journal, online journal, dagbøker, skriving, online dagbok, nettbasert dagbok, elektronisk dagbok, personlig dagbok
|
||||
|
||||
/interests.bml.findsim.searchwait=<b>Vennligst Merk:</b> Søk vil ta flere sekunder. Vennligst vent.
|
||||
|
||||
/interests.bml.findsim_do.account.notallowed=Beklager, din konto type kan ikke bruke dette verktøyet.
|
||||
|
||||
/interests.bml.findsim_do.magic=Magisk Liste
|
||||
|
||||
/interests.bml.findsim_do.magic.head=Magisk Liste
|
||||
|
||||
/lostinfo.bml.enter_username=Skriv inn ditt brukernavn:
|
||||
|
||||
/lostinfo.bml.lostpassword.text|staleness=1
|
||||
/lostinfo.bml.lostpassword.text=Om du har mistet passordet ditt, skriv inn brukernavnet ditt og valgfritt også epost adressen du ønsker passordet sent til. Merk, denne epost adressen må være en du har brukt på Livejournal før og hatt bekreftet. Om du lar epost feltet være blankt, vil det bli sent til din nåværende adresse.
|
||||
|
||||
/lostinfo.bml.lostpassword.title=Misted passordet ditt?
|
||||
|
||||
/lostinfo.bml.lostusername.text=Om du har misted brukernavnet ditt, skriv inn epost adressen din og vi vil sende deg brukernavnet.
|
||||
|
||||
/lostinfo.bml.lostusername.title=Mistet brukernavnet ditt?
|
||||
|
||||
/lostinfo.bml.title=Mistet informasjon
|
||||
|
||||
/lostinfo_do.bml.error.no_usernames_for_email=Ingen brukernavn for denne epost adressen: [[adress]].
|
||||
|
||||
/lostinfo_do.bml.error1.text=Du brukte aldri denne epost adressen med denne kontoen, eller det var aldri bekreftet.
|
||||
|
||||
/lostinfo_do.bml.lostpasswordmail.part1|staleness=1
|
||||
/lostinfo_do.bml.lostpasswordmail.part1<<
|
||||
*** Dette er en autogenerert epost. Du trenger ikke svare på den. ***
|
||||
|
||||
|
||||
.
|
||||
|
||||
/lostinfo_do.bml.lostpasswordmail.part2=For å bekrefte din epost adresse, gå her:
|
||||
|
||||
/modify_do.bml.colortheme.color.head2=(#rrggbb eller navn)
|
||||
|
||||
/modify_do.bml.colortheme.customcolors=Valgfrie farger
|
||||
|
||||
/modify_do.bml.domainalias.domainname=Domene navn:
|
||||
|
||||
/modify_do.bml.domainalias.example=Eksempel: <i>min-dagbok.com</i>
|
||||
|
||||
/modify_do.bml.moodicons.select=Velg Humør Ikoner:
|
||||
|
||||
/modify_do.bml.overrides.warning=DETTE ER <U>IKKE</U> HVOR DU OPPDATERER DAGBOKEN DIN!!
|
||||
|
||||
/support/faqbrowse.bml.backfaq=Tilbake til <a href="faq.bml">OBS</a>-seksjonen.
|
||||
|
||||
/support/faqbrowse.bml.backsupport=Tilbake til <a href="./">support-sidene</a>.
|
||||
|
||||
/support/faqbrowse.bml.lastupdated=Sist Oppdatert:
|
||||
|
||||
btn.search=Søk
|
||||
|
||||
dystopia.btn.login=LOGG PÅ
|
||||
|
||||
dystopia.hello_anonymous=Velkommen til LiveJournal!
|
||||
|
||||
dystopia.hello_loggedin=Hei, [[username]]!
|
||||
|
||||
dystopia.nav.createjournal=Opprett en journal
|
||||
|
||||
dystopia.nav.developer=Utviklerområdet
|
||||
|
||||
dystopia.nav.download=Last ned
|
||||
|
||||
dystopia.nav.editentries=Rediger oppføringer
|
||||
|
||||
dystopia.nav.editfriends=Dine venner
|
||||
|
||||
dystopia.nav.editpassword=Ditt passord
|
||||
|
||||
dystopia.nav.editpics=Dine ikoner
|
||||
|
||||
dystopia.nav.editstyle=Tilpass stil
|
||||
|
||||
dystopia.nav.faq=LiveJournal OBS
|
||||
|
||||
dystopia.nav.findcomm=Etter gruppe
|
||||
|
||||
dystopia.nav.finddir=Katalogsøk
|
||||
|
||||
dystopia.nav.findint=Etter interesse
|
||||
|
||||
dystopia.nav.findrandom=Tilfeldig
|
||||
|
||||
dystopia.nav.findregion=Etter område
|
||||
|
||||
dystopia.nav.home=Hjem
|
||||
|
||||
dystopia.nav.journalcalendar=Kalender
|
||||
|
||||
dystopia.nav.journalfriends=Venner
|
||||
|
||||
dystopia.nav.journalinfo=Brukerinformasjon
|
||||
|
||||
dystopia.nav.journalrecent=Siste
|
||||
|
||||
dystopia.nav.legalcoppa=Barnevern
|
||||
|
||||
dystopia.nav.legalprivacy=Personvern
|
||||
|
||||
dystopia.nav.legaltos=Tjenestebetingelser
|
||||
|
||||
dystopia.nav.login=Logg på
|
||||
|
||||
dystopia.nav.logout=Logg ut
|
||||
|
||||
dystopia.nav.lostinfo=Mistet passordet
|
||||
|
||||
dystopia.nav.memories=Minner
|
||||
|
||||
dystopia.nav.modifyjournal=Tilpass din journal
|
||||
|
||||
dystopia.nav.news=Nyheter
|
||||
|
||||
dystopia.nav.paidaccts=Betalkontoer
|
||||
|
||||
dystopia.nav.personalinfo=Personinformasjon
|
||||
|
||||
dystopia.nav.support=Har du et spørsmål?
|
||||
|
||||
dystopia.nav.updatejournal=Oppdater dagbok
|
||||
|
||||
dystopia.navhead.findusers=Finn brukere
|
||||
|
||||
dystopia.navhead.help=Hjelp og support
|
||||
|
||||
dystopia.navhead.journal=Din Journal
|
||||
|
||||
dystopia.navhead.legal=Lovinformasjon
|
||||
|
||||
dystopia.navhead.settings=Dine Valg
|
||||
|
||||
dystopia.navhead.welcome=Velkommen!
|
||||
|
||||
dystopia.search.icq=ICQ-nummer
|
||||
|
||||
dystopia.search.int=Interesse
|
||||
|
||||
dystopia.search.region=Område
|
||||
|
||||
dystopia.searchlj=Søk i LiveJournal
|
||||
|
||||
Email=E-post
|
||||
|
||||
Help=Hjelp
|
||||
|
||||
langname.da=Dansk
|
||||
|
||||
langname.de=Tysk
|
||||
|
||||
langname.en=Engelsk
|
||||
|
||||
langname.en_GB=Engelsk (Storbritannia)
|
||||
|
||||
langname.en_LJ=Engelsk - LJ
|
||||
|
||||
langname.es=Spansk
|
||||
|
||||
langname.fi=Finsk
|
||||
|
||||
langname.fr=Fransk
|
||||
|
||||
langname.ga=Irsk
|
||||
|
||||
langname.gd=Gelisk
|
||||
|
||||
langname.he=Hebraisk
|
||||
|
||||
langname.is=Islandsk
|
||||
|
||||
langname.ja=Japansk
|
||||
|
||||
langname.nb=Norsk bokmål
|
||||
|
||||
langname.nl=Nederlandsk
|
||||
|
||||
langname.nn=Nynorsk
|
||||
|
||||
langname.pl=Polsk
|
||||
|
||||
langname.pt=Portugisisk
|
||||
|
||||
langname.ru=Russisk
|
||||
|
||||
langname.sv=Svensk
|
||||
|
||||
Password=Passord
|
||||
|
||||
talk.commentpermlink=lenke til denne kommentaren
|
||||
|
||||
talk.commentpost=Kommenter denne
|
||||
|
||||
talk.commentsread=Les kommentarer
|
||||
|
||||
talk.parentlink=Forelder
|
||||
|
||||
talk.replytothis=Svar på denne
|
||||
|
||||
talk.somebodywrote=[[realname]] ([[userlink]]) skrev,
|
||||
|
||||
talk.somebodywrote_comm=[[realname]] ([[userlink]]) skrev i [[commlink]],
|
||||
|
||||
talk.threadlink=Tråd
|
||||
|
||||
thislang.community|notes=Name of community you use to discuss the translation for this language.
|
||||
thislang.community=lj_norsk
|
||||
|
||||
Username=Brukernavn
|
||||
|
||||
2934
ljcom/bin/upgrading/nl.dat
Normal file
2934
ljcom/bin/upgrading/nl.dat
Normal file
File diff suppressed because it is too large
Load Diff
1
ljcom/bin/upgrading/nn.dat
Normal file
1
ljcom/bin/upgrading/nn.dat
Normal file
@@ -0,0 +1 @@
|
||||
;; -*- coding: utf-8 -*-
|
||||
4298
ljcom/bin/upgrading/pl.dat
Normal file
4298
ljcom/bin/upgrading/pl.dat
Normal file
File diff suppressed because it is too large
Load Diff
2430
ljcom/bin/upgrading/pt.dat
Normal file
2430
ljcom/bin/upgrading/pt.dat
Normal file
File diff suppressed because it is too large
Load Diff
36
ljcom/bin/upgrading/pt_BR.dat
Normal file
36
ljcom/bin/upgrading/pt_BR.dat
Normal file
@@ -0,0 +1,36 @@
|
||||
;; -*- coding: utf-8 -*-
|
||||
/accountstatus.bml.journalstatus.about=Se você quiser deletar ou recuperar seu journal deletado, o lugar para fazê-lo é aqui. Assim que você deletar seu journal, você terá 30 dias para recuperá-lo, se por acaso mudar de idéia. Após 30 dias, o journal será permanentemente deletado e não haverá maneira de recuperá-lo.
|
||||
|
||||
/allpics.bml.edit2=Você pode estar interessado em <a href='[[editlink]]'>editar as palavras-chave da sua imagem</a> ou <a href='[[uploadlink]]'>fazer upload de uma nova imagem</a>.
|
||||
|
||||
/allpics.bml.error.noparam=Você precisa especificar um usuário como parâmetro.
|
||||
|
||||
/allpics.bml.nopics.text.other=Este usuário ainda não fez upload de nenhuma imagem.
|
||||
|
||||
/allpics.bml.nopics.text2=Você não tem nenhuma imagem. Para fazer upload de uma, clique <a href='[[link]]'>aqui</a>.
|
||||
|
||||
/approve.bml.comm.text<<
|
||||
Você foi adicionado à comunidade [[comm]].
|
||||
Clique <a [[aopts]]>aqui</a> para adicionar a comunidade à sua lista de amigos.
|
||||
.
|
||||
|
||||
/approve.bml.error.actionperformed=Essa ação já foi executada
|
||||
|
||||
/approve.bml.error.internerr.invalidaction=Erro Interno: ação inválida
|
||||
|
||||
/approve.bml.error.invalidargument=Argumento inválido
|
||||
|
||||
/approve.bml.error.unknownactiontype=Tipo de ação desconhecido
|
||||
|
||||
/approve.bml.title=Ação Aprovada
|
||||
|
||||
/birthdays.bml.description=Abaixo estão as datas de aniversário de todas as pessoas na sua lista de amigos.
|
||||
|
||||
/changepassword.bml.btn.proceed=Prosseguir
|
||||
|
||||
/changepassword.bml.changepassword.instructions=Preencha o formulário abaixo para mudar sua senha. Para obter ajuda ao escolher uma boa senha e manter sua conta segura, veja <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=71">este FAQ</a>.
|
||||
|
||||
/changepassword.bml.email.subject=Troca de Senha
|
||||
|
||||
/changepassword.bml.error.badcheck=Nova senha inválida: [[error]]
|
||||
|
||||
5240
ljcom/bin/upgrading/ru.dat
Normal file
5240
ljcom/bin/upgrading/ru.dat
Normal file
File diff suppressed because it is too large
Load Diff
39
ljcom/bin/upgrading/s2layers-local.dat
Normal file
39
ljcom/bin/upgrading/s2layers-local.dat
Normal file
@@ -0,0 +1,39 @@
|
||||
################################################################
|
||||
# LiveJournal.com's non-free (not GPL) layers. You can use the
|
||||
# source to learn from, but not copy.
|
||||
################################################################
|
||||
# base filename layer type parent
|
||||
|
||||
3column/layout layout core1
|
||||
3column/themes theme+ 3column/layout
|
||||
|
||||
anovelconundrum/layout layout core1
|
||||
anovelconundrum/themes theme+ anovelconundrum/layout
|
||||
|
||||
boxer/layout layout core1
|
||||
boxer/themes theme+ boxer/layout
|
||||
|
||||
component/layout layout core1
|
||||
component/themes theme+ component/layout
|
||||
|
||||
cuteness/layout layout core1
|
||||
|
||||
flexiblesquares/layout layout core1
|
||||
flexiblesquares/themes theme+ flexiblesquares/layout
|
||||
|
||||
nebula/layout layout core1
|
||||
nebula/themes theme+ nebula/layout
|
||||
|
||||
opal/layout layout core1
|
||||
opal/themes theme+ opal/layout
|
||||
|
||||
smoothsailing/layout layout core1
|
||||
smoothsailing/themes theme+ smoothsailing/layout
|
||||
|
||||
tranquilityii/layout layout core1
|
||||
tranquilityii/themes theme+ tranquilityii/layout
|
||||
|
||||
unearthed/layout layout core1
|
||||
unearthed/themes theme+ unearthed/layout
|
||||
|
||||
s2layers-ljcomint.dat INCLUDE
|
||||
1102
ljcom/bin/upgrading/s2layers/3column/layout.s2
Normal file
1102
ljcom/bin/upgrading/s2layers/3column/layout.s2
Normal file
File diff suppressed because it is too large
Load Diff
233
ljcom/bin/upgrading/s2layers/3column/themes.s2
Normal file
233
ljcom/bin/upgrading/s2layers/3column/themes.s2
Normal file
@@ -0,0 +1,233 @@
|
||||
#NEWLAYER: 3column/blue
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Blue";
|
||||
layerinfo "redist_uniq" = "3column/blue";
|
||||
|
||||
set color_bg = "#e9f3fa";
|
||||
set font_color = "#0d446b";
|
||||
set link_color = "#0d446b";
|
||||
set link_hover = "#0d446b";
|
||||
set link_side = "#0d446b";
|
||||
set link_side_h = "#0d446b";
|
||||
set side_bg = "#e9f3fa";
|
||||
set entries_bg = "#e9f3fa";
|
||||
set entries_border = "#0d446b";
|
||||
set side_t_color = "#0d446b";
|
||||
set button_bg = "#e9f3fa";
|
||||
set button_bg_h = "#b0cce0";
|
||||
set entries_font_color = "#0d446b";
|
||||
set side_border = "#0d446b";
|
||||
set c_sub_color = "#b0cce0";
|
||||
set c_sub_bg = "#0d446b";
|
||||
set side_h_color = "#0d446b";
|
||||
set side_h_border = "#0d446b";
|
||||
set side_h_bg = "#b0cce0";
|
||||
set sub_color = "#0d446b";
|
||||
|
||||
#NEWLAYER: 3column/dark
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Dark";
|
||||
layerinfo "redist_uniq" = "3column/dark";
|
||||
|
||||
set color_bg = "#000000";
|
||||
set font_color = "#c0c0c0";
|
||||
set link_color = "#202020";
|
||||
set link_hover = "#FFFFFF";
|
||||
set link_side = "#95432D";
|
||||
set link_side_h = "#BA7625";
|
||||
set side_bg = "#000000";
|
||||
set side_t_color = "C0C0C0";
|
||||
set side_border = "#000000";
|
||||
set side_h_color = "#C0C0C0";
|
||||
set side_h_border = "#C0C0C0";
|
||||
set side_h_bg = "#000000";
|
||||
set entries_bg = "#58494E";
|
||||
set entries_border = "#FFFFFF";
|
||||
set button_bg = "#FFFFFF";
|
||||
set button_bg_h = "#c0c0c0";
|
||||
set entries_font_color = "#000000";
|
||||
set c_sub_color = "#000000";
|
||||
set c_sub_bg = "#ffffff";
|
||||
set sub_color = "#C0C0C0";
|
||||
|
||||
#NEWLAYER: 3column/earth
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Earth";
|
||||
layerinfo "redist_uniq" = "3column/earth";
|
||||
|
||||
set color_bg = "#ECECEA";
|
||||
set font_color = "#4F4637";
|
||||
set link_color = "#4F4637";
|
||||
set link_hover = "#1D4629";
|
||||
set link_side = "#7B6E59";
|
||||
set link_side_h = "#1D4629";
|
||||
set side_bg = "#DBCEB9";
|
||||
set side_t_color = "4F4637";
|
||||
set side_border = "#7B6E59";
|
||||
set side_h_color = "#ECECEA";
|
||||
set side_h_border = "#ECECEA";
|
||||
set side_h_bg = "#7B6E59";
|
||||
set entries_bg = "#AB9F8B";
|
||||
set entries_border = "#7B6E59";
|
||||
set button_bg = "#ECECEA";
|
||||
set button_bg_h = "#4F4637";
|
||||
set entries_font_color = "#4F4637";
|
||||
set c_sub_color = "#4F4637";
|
||||
set c_sub_bg = "#ECECEA";
|
||||
set sub_color = "#4F4637";
|
||||
|
||||
#NEWLAYER: 3column/unnamed
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Unnamed";
|
||||
layerinfo "redist_uniq" = "3column/unnamed";
|
||||
|
||||
set color_bg = "#E5D5C6";
|
||||
set font_color = "#000000";
|
||||
set link_color = "#202020";
|
||||
set link_hover = "#000000";
|
||||
set link_side = "#95432D";
|
||||
set link_side_h = "#D63C3C";
|
||||
set side_bg = "#E5D5C6";
|
||||
set side_t_color = "#000000";
|
||||
set side_border = "#E5D5C6";
|
||||
set side_h_color = "#000000";
|
||||
set side_h_border = "#000000";
|
||||
set side_h_bg = "#E5D5C6";
|
||||
set entries_bg = "#E5D5C6";
|
||||
set entries_border = "#E5D5C6";
|
||||
set button_bg = "#E5D5C6";
|
||||
set button_bg_h = "#ccab8a";
|
||||
set entries_font_color = "#000000";
|
||||
set c_sub_color = "#ccab8a";
|
||||
set c_sub_bg = "#E5D5C6";
|
||||
set sub_color = "#000000";
|
||||
|
||||
#NEWLAYER: 3column/greenenvy
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Green of Envy";
|
||||
layerinfo "redist_uniq" = "3column/greenenvy";
|
||||
|
||||
set color_bg = "#d8ece7";
|
||||
set font_color = "#1b2d29";
|
||||
set link_color = "#1b2d29";
|
||||
set link_hover = "#1b2d29";
|
||||
set link_side = "#1b2d29";
|
||||
set link_side_h = "#1b2d29";
|
||||
set side_bg = "#d8ece7";
|
||||
set entries_bg = "#d8ece7";
|
||||
set entries_border = "#1b2d29";
|
||||
set side_t_color = "#1b2d29";
|
||||
set button_bg = "#d8ece7";
|
||||
set button_bg_h = "#b1d5cb";
|
||||
set entries_font_color = "#1b2d29";
|
||||
set side_border = "#1b2d29";
|
||||
set c_sub_color = "#b1d5cb";
|
||||
set c_sub_bg = "#1b2d29";
|
||||
set side_h_color = "#1b2d29";
|
||||
set side_h_border = "#1b2d29";
|
||||
set side_h_bg = "#b1d5cb";
|
||||
set sub_color = "#1b2d29";
|
||||
|
||||
#NEWLAYER: 3column/blackwhite
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Black and White";
|
||||
layerinfo "redist_uniq" = "3column/blackwhite";
|
||||
|
||||
set color_bg = "#FFFFFF";
|
||||
set font_color = "#808080";
|
||||
set link_color = "#808080";
|
||||
set link_hover = "#202020";
|
||||
set link_side = "#c0c0c0";
|
||||
set link_side_h = "#FFFFFF";
|
||||
set side_bg = "#000000";
|
||||
set side_t_color = "808080";
|
||||
set side_border = "#ffffff";
|
||||
set side_h_color = "#c0c0c0";
|
||||
set side_h_border = "#c0c0c0";
|
||||
set side_h_bg = "#808080";
|
||||
set entries_bg = "#ffffff";
|
||||
set entries_border = "#000000";
|
||||
set button_bg = "#c0c0c0";
|
||||
set button_bg_h = "#808080";
|
||||
set entries_font_color = "#000000";
|
||||
set c_sub_color = "#ffffff";
|
||||
set c_sub_bg = "#000000";
|
||||
set sub_color = "#202020";
|
||||
|
||||
#NEWLAYER: 3column/agentorange
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Agent Orange";
|
||||
layerinfo "redist_uniq" = "3column/agentorange";
|
||||
|
||||
set color_bg = "#f7e6d3";
|
||||
set font_color = "#582604";
|
||||
set link_color = "#582604";
|
||||
set link_hover = "#582604";
|
||||
set link_side = "#582604";
|
||||
set link_side_h = "#582604";
|
||||
set side_bg = "#f7e6d3";
|
||||
set entries_bg = "#f7e6d3";
|
||||
set entries_border = "#582604";
|
||||
set side_t_color = "#582604";
|
||||
set button_bg = "#f7e6d3";
|
||||
set button_bg_h = "#e0c7aa";
|
||||
set entries_font_color = "#582604";
|
||||
set side_border = "#582604";
|
||||
set c_sub_color = "#e0c7aa";
|
||||
set c_sub_bg = "#582604";
|
||||
set side_h_color = "#582604";
|
||||
set side_h_border = "#582604";
|
||||
set side_h_bg = "#e0c7aa";
|
||||
set sub_color = "#b64c06";
|
||||
|
||||
#NEWLAYER: 3column/purple
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Purple";
|
||||
layerinfo "redist_uniq" = "3column/purple";
|
||||
|
||||
set color_bg = "#e8cff1";
|
||||
set font_color = "#410458";
|
||||
set link_color = "#410458";
|
||||
set link_hover = "#410458";
|
||||
set link_side = "#410458";
|
||||
set link_side_h = "#410458";
|
||||
set side_bg = "#e8cff1";
|
||||
set entries_bg = "#e8cff1";
|
||||
set entries_border = "#410458";
|
||||
set side_t_color = "#410458";
|
||||
set button_bg = "#e8cff1";
|
||||
set button_bg_h = "#d1aae0";
|
||||
set entries_font_color = "#410458";
|
||||
set side_border = "#410458";
|
||||
set c_sub_color = "#d1aae0";
|
||||
set c_sub_bg = "#410458";
|
||||
set side_h_color = "#410458";
|
||||
set side_h_border = "#410458";
|
||||
set side_h_bg = "#d1aae0";
|
||||
set sub_color = "#410458";
|
||||
|
||||
#NEWLAYER: 3column/mellowyellow
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Mellow Yellow";
|
||||
layerinfo "redist_uniq" = "3column/mellowyellow";
|
||||
|
||||
set color_bg = "#f8f6da";
|
||||
set font_color = "#42331e";
|
||||
set link_color = "#42331e";
|
||||
set link_hover = "#8d452f";
|
||||
set link_side = "#8d452f";
|
||||
set link_side_h = "#42331e";
|
||||
set side_bg = "#f2c98e";
|
||||
set entries_bg = "#f8f6da";
|
||||
set entries_border = "#42331e";
|
||||
set side_t_color = "#42331e";
|
||||
set button_bg = "#f2c98e";
|
||||
set button_bg_h = "#e8c098";
|
||||
set entries_font_color = "#42331e";
|
||||
set side_border = "#42331e";
|
||||
set c_sub_color = "#42331e";
|
||||
set c_sub_bg = "#f2c98e";
|
||||
set side_h_color = "#333333";
|
||||
set side_h_border = "#333333";
|
||||
set side_h_bg = "#f8f6da";
|
||||
set sub_color = "#d39945";
|
||||
999
ljcom/bin/upgrading/s2layers/anovelconundrum/layout.s2
Normal file
999
ljcom/bin/upgrading/s2layers/anovelconundrum/layout.s2
Normal file
@@ -0,0 +1,999 @@
|
||||
# -*-s2-*-
|
||||
|
||||
layerinfo "type" = "layout";
|
||||
layerinfo "name" = "A Novel Conundrum";
|
||||
layerinfo "source_viewable" = 1;
|
||||
layerinfo "redist_uniq" = "anovelconundrum/layout";
|
||||
layerinfo "author_name" = "taion";
|
||||
|
||||
propgroup colors {
|
||||
property Color page_back {
|
||||
des = "Page background";
|
||||
}
|
||||
property Color entry_text {
|
||||
des = "Entry text color";
|
||||
}
|
||||
property Color text_weaker {
|
||||
des = "Weaker text color";
|
||||
}
|
||||
property Color page_link {
|
||||
des = "Link color";
|
||||
}
|
||||
property Color page_vlink {
|
||||
des = "Visited link color";
|
||||
}
|
||||
property Color page_alink {
|
||||
des = "Active link color";
|
||||
}
|
||||
}
|
||||
|
||||
# From my last e-mail with Taion, the plan was to rasterize the leading fonts so that
|
||||
# appearance issues could be avoided. However, I don't have access to many of the fonts
|
||||
# that he tested with, so I'll have to put that off for later.
|
||||
|
||||
# You will need access to Microsoft provided fonts for most accurate rendering, but
|
||||
# we are working on specifying usable alternatives that are cross platform friendly.
|
||||
propgroup fonts {
|
||||
property use font_base;
|
||||
property string font_fallback {
|
||||
des = "Alternative font style";
|
||||
}
|
||||
property string font_type {
|
||||
des = "Body font type";
|
||||
note = "General font class for body text";
|
||||
}
|
||||
property int font_size {
|
||||
des = "Body font size (points)";
|
||||
}
|
||||
property int font_leading {
|
||||
des = "Body font leading (points)";
|
||||
}
|
||||
property string title_letterspacing {
|
||||
des = "Letterspacing in titles";
|
||||
}
|
||||
property bool title_smallcaps {
|
||||
des = "Smallcaps in titles";
|
||||
}
|
||||
property bool title_underline {
|
||||
des = "Underlined titles";
|
||||
}
|
||||
property string font_flourish_base {
|
||||
des = "Font face for decorative flourishes";
|
||||
}
|
||||
property string font_flourish_fallback {
|
||||
des = "Alternate font face for decorative flourishes";
|
||||
}
|
||||
property string font_flourish_type {
|
||||
des = "Font type for decorative flourishes";
|
||||
}
|
||||
property string font_secondary_base {
|
||||
des = "Font face for secondary text";
|
||||
}
|
||||
property string font_secondary_fallback {
|
||||
des = "Alternate font face for secondary text";
|
||||
}
|
||||
property string font_secondary_type {
|
||||
des = "Font type for secondary text";
|
||||
}
|
||||
property int font_secondary_size {
|
||||
des = "Secondary font size (points)";
|
||||
note = "For best results, match optical x-height with the body font";
|
||||
}
|
||||
property string flourish_rm {
|
||||
des = "Right margin for flourishes";
|
||||
}
|
||||
property string dc_rm {
|
||||
des = "Right margin for drop caps";
|
||||
}
|
||||
}
|
||||
|
||||
propgroup presentation {
|
||||
property string dingbar_url {
|
||||
des = "URL to spacer image between portions of content";
|
||||
note = "A default will be chosen for you if left blank.";
|
||||
}
|
||||
|
||||
property use page_recent_items;
|
||||
property use page_friends_items;
|
||||
|
||||
property string body_width {
|
||||
des = "Text body width";
|
||||
}
|
||||
|
||||
property int dcLen {
|
||||
des = "Minimum length in characters before using drop caps";
|
||||
}
|
||||
|
||||
property use view_entry_disabled;
|
||||
property use use_shared_pic;
|
||||
property use comment_userpic_style;
|
||||
property bool show_entrynav_icons {
|
||||
des = "Toggle to show the next, memory, edit, etc icons on the entry view page";
|
||||
}
|
||||
property string page_background_image {
|
||||
des = "URL to an image to be used for the page background";
|
||||
}
|
||||
property use external_stylesheet;
|
||||
}
|
||||
|
||||
propgroup text {
|
||||
property use text_post_comment;
|
||||
property use text_read_comments;
|
||||
property use text_post_comment_friends;
|
||||
property use text_read_comments_friends;
|
||||
property use text_meta_music;
|
||||
property use text_meta_mood;
|
||||
property string text_dingbar_alt {
|
||||
des = "Alternative text for dingbar images";
|
||||
noui = 1;
|
||||
}
|
||||
}
|
||||
|
||||
# Set default colors
|
||||
set entry_text = "#000000";
|
||||
set text_weaker = "#666666";
|
||||
set page_link = "#000000";
|
||||
set page_vlink = "#666666";
|
||||
set page_alink = "#333333";
|
||||
set page_back = "#F5F5DC";
|
||||
|
||||
set body_width = "35em";
|
||||
set dcLen = 200;
|
||||
set show_entrynav_icons = true;
|
||||
set page_background_image = "";
|
||||
|
||||
set font_base = "Palatino Linotype";
|
||||
set font_fallback = "Book Antiqua";
|
||||
set font_type = "serif";
|
||||
set font_flourish_base = "Edwardian Script ITC\", \"Edwardian Script ITC Semi-Expanded";
|
||||
set font_flourish_fallback = "Zapfino\", \"Viner Hand ITC";
|
||||
set font_flourish_type = "cursive";
|
||||
set font_secondary_base = "Frutiger Linotype";
|
||||
set font_secondary_fallback = "Tahoma";
|
||||
set font_secondary_type = "sans-serif";
|
||||
set font_size = 10;
|
||||
set font_leading = 14;
|
||||
set title_smallcaps = true;
|
||||
set title_underline = false;
|
||||
set title_letterspacing = "0.08em";
|
||||
set font_secondary_size = 9;
|
||||
set flourish_rm = "0.093em";
|
||||
set dc_rm = "0.2em";
|
||||
set dingbar_url = "";
|
||||
|
||||
set text_poster_anonymous = "an anonymous reader";
|
||||
set text_dingbar_alt = "* * *";
|
||||
set text_view_recent = "Entries";
|
||||
set text_view_friends = "Friends";
|
||||
set text_view_archive = "Archive";
|
||||
set text_view_userinfo = "Profile";
|
||||
|
||||
function prop_init() {
|
||||
var PalItem start = PalItem(0, $*entry_text);
|
||||
var PalItem end = PalItem(13, $*page_back);
|
||||
if ($*dingbar_url == "") { $*dingbar_url = palimg_gradient("anovelconundrum/dingbar.gif", $start, $end); }
|
||||
}
|
||||
|
||||
function print_stylesheet() {
|
||||
print clean_url($*page_background_image) != "" ? "body { background-image: url($*page_background_image); }" : "";
|
||||
"""
|
||||
body {
|
||||
margin-top: 1in;
|
||||
margin-bottom: 0.6in;
|
||||
}
|
||||
|
||||
body, td, h2, .caption, h1, h3 {
|
||||
""";
|
||||
if ($*font_base != "" or $*font_fallback != "" or $*font_type != "") {
|
||||
"font-family: ";
|
||||
if ($*font_base != "") {
|
||||
"\"$*font_base\"";
|
||||
if ($*font_fallback != "" or $*font_type != "") {
|
||||
", ";
|
||||
}
|
||||
}
|
||||
if ($*font_fallback != "") {
|
||||
"\"$*font_fallback\"";
|
||||
if ($*font_type != "") {
|
||||
", ";
|
||||
}
|
||||
}
|
||||
if ($*font_type != "") {
|
||||
"$*font_type";
|
||||
}
|
||||
";\n";
|
||||
}
|
||||
"""
|
||||
font-size: ${*font_size}pt;
|
||||
line-height: ${*font_leading}pt;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.caption, h1, h3 {
|
||||
"""; if($*title_smallcaps) {"""
|
||||
font-variant: small-caps;
|
||||
text-transform: lowercase;
|
||||
"""; }
|
||||
""" letter-spacing: $*title_letterspacing;
|
||||
}
|
||||
h1 { font-size: 16pt; }
|
||||
h3 { font-size: 12pt; }
|
||||
h2, .noul, .ult {
|
||||
font-style: italic;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.caption {
|
||||
"""; if($*title_underline) {"""
|
||||
text-decoration: underline;
|
||||
"""; }
|
||||
""" }
|
||||
|
||||
.flourish, .bodyl:first-letter {
|
||||
""";
|
||||
if ($*font_flourish_base != "" or $*font_flourish_fallback != "" or $*font_flourish_type != "") {
|
||||
"font-family: ";
|
||||
if ($*font_flourish_base != "") {
|
||||
"\"$*font_flourish_base\"";
|
||||
if ($*font_flourish_fallback != "" or $*font_flourish_type != "") {
|
||||
", ";
|
||||
}
|
||||
}
|
||||
if ($*font_flourish_fallback != "") {
|
||||
"\"$*font_flourish_fallback\"";
|
||||
if ($*font_flourish_type != "") {
|
||||
", ";
|
||||
}
|
||||
}
|
||||
if ($*font_flourish_type != "") {
|
||||
"$*font_flourish_type";
|
||||
}
|
||||
";\n";
|
||||
}
|
||||
"""
|
||||
}
|
||||
|
||||
.flourish {
|
||||
margin-right: ${*flourish_rm};
|
||||
z-index: 1;
|
||||
font-size: 34pt;
|
||||
position: relative;
|
||||
top: 0.1em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.sfon, .index, .author, select, input {
|
||||
""";
|
||||
if ($*font_secondary_base != "" or $*font_secondary_fallback != "" or $*font_secondary_type != "") {
|
||||
"font-family: ";
|
||||
if ($*font_secondary_base != "") {
|
||||
"\"$*font_secondary_base\"";
|
||||
if ($*font_secondary_fallback != "" or $*font_secondary_type != "") {
|
||||
", ";
|
||||
}
|
||||
}
|
||||
if ($*font_secondary_fallback != "") {
|
||||
"\"$*font_secondary_fallback\"";
|
||||
if ($*font_secondary_type != "") {
|
||||
", ";
|
||||
}
|
||||
}
|
||||
if ($*font_secondary_type != "") {
|
||||
"$*font_secondary_type";
|
||||
}
|
||||
";\n";
|
||||
}
|
||||
""" font-size: ${*font_secondary_size}pt;
|
||||
line-height: ${*font_leading}pt;
|
||||
}
|
||||
|
||||
.index {
|
||||
width: 10em;
|
||||
margin-right: 1.2em;
|
||||
}
|
||||
|
||||
.bodybox { width: $*body_width; }
|
||||
|
||||
.body, .bodyl, .bodyns {
|
||||
text-align: justify;
|
||||
}
|
||||
.bodyl:first-letter {
|
||||
font-size: """ + (2* $*font_leading) + """pt;
|
||||
margin-bottom: -""" + $*font_size + """pt;
|
||||
margin-right: ${*dc_rm};
|
||||
float: left;
|
||||
border-bottom: none;
|
||||
text-transform: uppercase;
|
||||
line-height: """ + (2* $*font_leading) + """pt;
|
||||
}
|
||||
.bodyns:first-line, .sc, small, .sct {
|
||||
"""; if($*title_smallcaps) {"""
|
||||
font-variant: small-caps;
|
||||
text-transform: lowercase;
|
||||
"""; }
|
||||
if($*title_underline) {"""
|
||||
text-decoration: underline;
|
||||
"""; }
|
||||
""" letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
.sct {
|
||||
letter-spacing: $*title_letterspacing;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.author {
|
||||
float: right;
|
||||
text-align: center;
|
||||
margin-left: 1.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.ywp {
|
||||
width: 2em;
|
||||
margin-left: 0.5em;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin-top: ${*font_leading}pt;
|
||||
margin-bottom: ${*font_leading}pt;
|
||||
margin-left: 2em;
|
||||
}
|
||||
|
||||
tt, pre, textarea {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-size:"""+ ((${*font_size}*4)/5) + """pt;
|
||||
}
|
||||
|
||||
a {text-decoration: none;}
|
||||
.body a, .bodyl a, .bodyns a, .bodynsl a, .author a, .ult a, .uts a { border-bottom: 1px dotted; }
|
||||
.ljuser a, a img, .smallbar a, .noul a { border-bottom: none; }
|
||||
a:hover, .ljuser a:hover { border-bottom: 1px solid; }
|
||||
|
||||
p {
|
||||
text-indent: 1.5em;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
blockquote + p { text-indent: 0px; }
|
||||
|
||||
.uts {
|
||||
font-size: 80%;
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
line-height: """ + $*font_size + """pt;
|
||||
margin-bottom: """ + ($*font_leading-$*font_size) + """pt;
|
||||
}
|
||||
|
||||
.smallbar {
|
||||
font-size: 80%;
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
line-height: """ + (2*$*font_leading) + """pt;
|
||||
clear: right;
|
||||
}
|
||||
|
||||
.ljcomsel {
|
||||
position: relative;
|
||||
top: 0.75pt;
|
||||
height: 7.5pt;
|
||||
padding-left: 1pt;
|
||||
}
|
||||
input#username, input#password { margin-right: 0.5em; }
|
||||
|
||||
.bs {
|
||||
margin-top: """ + (2*$*font_leading) + """pt;
|
||||
margin-bottom: """ + (2*$*font_leading) + """pt;
|
||||
text-align: center;
|
||||
line-height: ${*font_leading}pt;
|
||||
}
|
||||
""";
|
||||
}
|
||||
|
||||
function find_lpar(string t) : int {
|
||||
foreach var int i (reverse (0 .. ($t->length()-1))) {
|
||||
if($t->substr($i,1)=="(") { return $i; }
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
function render_title(string t, int len) {
|
||||
foreach var int i (0 .. ($len-1)) {
|
||||
var string pc = $t->substr($i-1,1);
|
||||
var string cc = $t->substr($i,1);
|
||||
if($cc==" ") { " · "; }
|
||||
elseif( $i > 0 and $pc != " ") { "$cc"; }
|
||||
elseif ($cc=="A" or $cc=="B" or $cc=="C" or $cc=="D" or $cc=="E" or $cc=="F" or $cc=="G" or $cc=="H" or $cc=="I" or $cc=="J" or $cc=="K" or $cc=="L" or $cc=="M" or $cc=="N" or $cc=="O" or $cc=="P" or $cc=="Q" or $cc=="R" or $cc=="S" or $cc=="T" or $cc=="U" or $cc=="V" or $cc=="W" or $cc=="X" or $cc=="Y" or $cc=="Z") {
|
||||
"<span class='flourish'>$cc</span>";
|
||||
}
|
||||
else { "$cc"; }
|
||||
}
|
||||
}
|
||||
|
||||
function render_body(string t) {
|
||||
var int str=0;
|
||||
var bool par=false;
|
||||
var bool pars=false;
|
||||
$str = ($t->substr(0,6) == "<br />" ? 6 : 0);
|
||||
if($t->substr(0,3) == "<p>") { $str = 3; $pars=true; }
|
||||
foreach var int i ($str .. ($t->length()-1)) {
|
||||
if($t->substr($i,12) == "<br /><br />") {
|
||||
$str=$i+12;
|
||||
if($par) { "</p><p>"; }
|
||||
else { "<p>"; $par=true; }
|
||||
}
|
||||
elseif($pars and $t->substr($i,4) == "</p>") { $str=$i+4; $pars=false; }
|
||||
elseif($i >= $str) { print $t->substr($i,1); }
|
||||
}
|
||||
if($par) { "</p>"; }
|
||||
}
|
||||
|
||||
function display_title(Page p) {
|
||||
var string dtitle = $p.global_title;
|
||||
var string stitle = $p->view_title();
|
||||
$stitle = ($p.view == "recent" ? $p.global_subtitle : $stitle);
|
||||
var int lenm=$stitle->length()-1;
|
||||
var int i=$dtitle->length()+1;
|
||||
if ($dtitle == "") {
|
||||
$dtitle = $p.journal.name;
|
||||
$i=$dtitle->length()+1;
|
||||
}
|
||||
if ($p.view == "friends") {
|
||||
$dtitle = $p->view_title();
|
||||
$i=find_lpar($dtitle);
|
||||
if($i==-1) { $i = $lenm+2; }
|
||||
}
|
||||
|
||||
"""<div align="center">
|
||||
<h1>"""; render_title($dtitle,$i-1); """</h1>""";
|
||||
if($p.view != "friends" and $stitle != "") { """<br /><h3 style="margin-top:-1em;">$stitle</h3>"""; }
|
||||
elseif($p.view == "friends" and $i<$lenm) { "<br /><h3 style='margin-top:-1em;'>" + $dtitle->substr($i+1,($lenm-$i)-1) + "</h3>"; }
|
||||
"""</div>""";
|
||||
}
|
||||
|
||||
function Page::print() {
|
||||
var string title = $this->title();
|
||||
|
||||
var string links;
|
||||
var bool firstlink = true;
|
||||
foreach var string v ($.views_order) {
|
||||
if ($firstlink == false) {
|
||||
$links = "$links · ";
|
||||
}
|
||||
else {
|
||||
$firstlink = false;
|
||||
}
|
||||
$links = $links + ("<a href='$.view_url{$v}'>"+lang_viewname($v)+"</a>");
|
||||
}
|
||||
|
||||
"""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n""";
|
||||
|
||||
if ($*external_stylesheet) {
|
||||
println """<link rel="stylesheet" href="$.stylesheet_url" type="text/css" />""";
|
||||
} else {
|
||||
println """<style type="text/css">"""; print_stylesheet(); "</style>";
|
||||
}
|
||||
$this->print_head();
|
||||
|
||||
"""<title>$title</title>
|
||||
</head>
|
||||
<body bgcolor="$*page_back" text="$*entry_text" link="$*page_link" vlink="$*page_vlink" alink="$*page_alink">""";
|
||||
display_title($this);
|
||||
"""<div style="text-align:center; margin-bottom: ${*font_leading}pt;">
|
||||
<h2>$links</h2>
|
||||
</div>
|
||||
""";
|
||||
$this->print_body();
|
||||
"""
|
||||
</body>
|
||||
</html>
|
||||
""";
|
||||
}
|
||||
|
||||
function print_entry(Page p, Entry e) {
|
||||
var string date=$e.time->date_format("short");
|
||||
var string time=$e.time->time_format();
|
||||
"""
|
||||
<table cellpadding='0' cellspacing='0' border='0' align='center'>
|
||||
<tr><td align="center" colspan="2"><img
|
||||
src="$*dingbar_url" alt="$*text_dingbar_alt" class="bs"/></td></tr>
|
||||
<tr>
|
||||
<td align="right" valign="top" width="100"><div class="index">""";
|
||||
""" <a href="$e.permalink_url">$time<br />
|
||||
$date</a><br /><br />
|
||||
""";
|
||||
$e.comments->print();
|
||||
|
||||
""" </div></td>
|
||||
<td valign="top">
|
||||
<div class="bodybox">
|
||||
<div class="author">""";
|
||||
|
||||
if (defined $e.userpic) {
|
||||
"""<img border="0" src="$e.userpic.url" width="$e.userpic.width" height="$e.userpic.height" alt=""><br />""";
|
||||
}
|
||||
elseif ($e.poster.journal_type == "C") {
|
||||
"""<img border="0" src="$*IMGDIR/community.gif" alt="" /><br />""";
|
||||
|
||||
}
|
||||
elseif ($e.poster.journal_type == "Y") {
|
||||
"""<img border="0" src="$*IMGDIR/syndicated.gif" alt="" /><br />""";
|
||||
}
|
||||
else {
|
||||
"""<img border="0" src="$*IMGDIR/userinfo.gif" alt="" /><br />""";
|
||||
}
|
||||
"<a href=\"" +
|
||||
$e.poster->base_url() + "/\">$e.poster.username</a>";
|
||||
if ($e.security != "") {
|
||||
$e.security_icon->print();
|
||||
}
|
||||
if ($e.poster.username != $e.journal.username and $e.journal.journal_type =="C") {
|
||||
""",<br />
|
||||
<img border="0" src="$*IMGDIR/community.gif" alt="" align="absmiddle" />
|
||||
<a href=\"""" + $e.journal->base_url() + """/">$e.journal.username</a>""";
|
||||
}
|
||||
|
||||
var string subject=$e.subject;
|
||||
if($p.view=="entry") { $subject=""; }
|
||||
"""</div>
|
||||
<div class="caption">
|
||||
$subject
|
||||
</div>""";
|
||||
if ($subject == "" and $p.view!="entry") {"<div class='bodyns'>";}
|
||||
elseif ($e.text->length() > $*dcLen) {"<div class='bodyl'>";}
|
||||
else {"<div class='body'>";}
|
||||
render_body($e.text);
|
||||
var string metadata;
|
||||
if ($e.metadata) {
|
||||
$metadata = "<div style='margin-top:${*font_leading}pt;'><table cellspacing='0' cellpadding='0' border='0'>";
|
||||
foreach var string k ($e.metadata) {
|
||||
var string text = $k;
|
||||
var string val = $e.metadata{$k};
|
||||
if ($k == "mood") {
|
||||
$text = $*text_meta_mood;
|
||||
} elseif ($k == "music") {
|
||||
$text = $*text_meta_music;
|
||||
}
|
||||
if ($k == "mood" and defined $e.mood_icon) {
|
||||
var Image i = $e.mood_icon;
|
||||
$val = "<img src='$i.url' width='$i.width' height='$i.height' align='middle' alt='$val'> $val";
|
||||
}
|
||||
$metadata = """$metadata\n<tr><td align="right"><div class="sc" style="margin-right:1em;">$text:</div></td>
|
||||
<td align="left">$val</td></tr>""";
|
||||
}
|
||||
$metadata = """$metadata</table></div>""";
|
||||
}
|
||||
"""$metadata</div></div></td>
|
||||
</tr>""";
|
||||
|
||||
if ($p.view == "entry" and $*show_entrynav_icons)
|
||||
{
|
||||
"""<tr><td align="center" colspan="2" style="line-height:${*font_leading}pt;"><img
|
||||
src="$*dingbar_url" alt="$*text_dingbar_alt" class="bs" /></td></tr>
|
||||
<tr><td colspan="2"><div style='text-align: center; margin-top: 0px;'>""";
|
||||
$e->print_linkbar();
|
||||
"""</div></td></tr>""";
|
||||
}
|
||||
"</table>";
|
||||
} # print_entry(Page,Entry,Color,Color)
|
||||
|
||||
function Entry::print_linkbar() {
|
||||
## There's no point in showing previous/next links on pages which show
|
||||
## multiple entries anyway, so we only print them on EntryPage and ReplyPage.
|
||||
|
||||
var Page p = get_page();
|
||||
var Link link;
|
||||
var bool show_interentry = ($p.view == "entry" or $p.view == "reply");
|
||||
|
||||
"<h2>";
|
||||
if ($show_interentry) {
|
||||
var Link prev = $this->get_link("nav_prev");
|
||||
"""<a href="$prev.url">$prev.caption</a> · """;
|
||||
}
|
||||
|
||||
if ($p.view == "entry" and $.comments.enabled) {
|
||||
if ($.comments.maxcomments) {
|
||||
"Maximum Comments Reached";
|
||||
} else {
|
||||
"<a href=\"$.comments.post_url\">Leave a Comment</a>";
|
||||
}
|
||||
" · ";
|
||||
}
|
||||
|
||||
var int i=0;
|
||||
foreach var string k ($.link_keyseq) {
|
||||
$link = $this->get_link($k);
|
||||
if($link.caption != "") {
|
||||
if($i>0) { " · "; }
|
||||
"<a href='$link.url'>$link.caption</a>";
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
if ($show_interentry) {
|
||||
var Link next = $this->get_link("nav_next");
|
||||
""" · <a href="$next.url">$next.caption</a>""";
|
||||
}
|
||||
"</h2>";
|
||||
}
|
||||
|
||||
function Page::print_entry(Entry e) {
|
||||
print_entry($this, $e);
|
||||
}
|
||||
|
||||
function FriendsPage::print_entry(Entry e) {
|
||||
print_entry($this, $e);
|
||||
}
|
||||
|
||||
|
||||
function RecentPage::print_body() {
|
||||
foreach var Entry e ($.entries) {
|
||||
$this->print_entry($e);
|
||||
}
|
||||
"""
|
||||
<div align="center" class="bs" style="line-height: ${*font_leading}pt;"><img
|
||||
src="$*dingbar_url" style="text-align:center;" alt="$*text_dingbar_alt" /></div>
|
||||
<div align="center"><h2>
|
||||
""";
|
||||
|
||||
# go forward/backward if possible
|
||||
if ($.nav.forward_url != "" or $.nav.backward_url != "") {
|
||||
var string sep;
|
||||
var string back;
|
||||
var string forward;
|
||||
if ($.nav.backward_url != "") {
|
||||
$back = """<a href="$.nav.backward_url">Previous</a>""";
|
||||
}
|
||||
if ($.nav.forward_url != "") {
|
||||
$forward = """<a href="$.nav.forward_url">Next</a>""";
|
||||
}
|
||||
if ($back != "" and $forward != "") { $sep = " · "; }
|
||||
"$back$sep$forward";
|
||||
}
|
||||
"</h2></div>";
|
||||
}
|
||||
|
||||
function CommentInfo::print() {
|
||||
if (not $.enabled) { return; }
|
||||
if ($.count > 0 or $.screened) {
|
||||
$this->print_readlink(); "<br />";
|
||||
}
|
||||
$this->print_postlink();
|
||||
}
|
||||
|
||||
function YearPage::print_year_links() {
|
||||
"""<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div><div class="sct">Years</div><h2 style="text-align:center;">""";
|
||||
|
||||
var bool d=false;
|
||||
foreach var YearYear y ($.years) {
|
||||
if($d) { " · "; }
|
||||
else { $d=true; }
|
||||
if ($y.displayed) {
|
||||
"$y.year";
|
||||
} else {
|
||||
"<a href=\"$y.url\">$y.year</a>";
|
||||
}
|
||||
}
|
||||
"</h2>";
|
||||
}
|
||||
|
||||
function YearPage::print_month(YearMonth m) {
|
||||
if (not $m.has_entries) { return; }
|
||||
|
||||
"""<div class="bs">
|
||||
<table cellpadding="0" cellspacing="0" border="0" summary="" align="center">
|
||||
<tr><center class="noul">
|
||||
<a href="$m.url">""";
|
||||
print $m->month_format();
|
||||
"""</a>
|
||||
<!-- now the headings for the week -->
|
||||
<table align="center" cellpadding="0" cellspacing="0" border="0" summary="">
|
||||
<tr align="center">
|
||||
""";
|
||||
foreach var int d (weekdays()) {
|
||||
"<td align='center'>"+$*lang_dayname_short[$d]+"</td>\n";
|
||||
}
|
||||
"</tr>";
|
||||
foreach var YearWeek w ($m.weeks) {
|
||||
$w->print();
|
||||
}
|
||||
|
||||
"""</table></center>""";
|
||||
}
|
||||
|
||||
function YearWeek::print() {
|
||||
"<tr valign='top'>";
|
||||
if ($.pre_empty) { "<td colspan='$.pre_empty'></td>"; }
|
||||
foreach var YearDay d ($.days) {
|
||||
"""<td><div class="ywp"><div class="sfon">$d.day</div>""";
|
||||
if ($d.num_entries) {
|
||||
"""<div class="uts"><a href="$d.url">$d.num_entries</a></div>""";
|
||||
} else {
|
||||
" ";
|
||||
}
|
||||
"</div></td>";
|
||||
}
|
||||
if ($.post_empty) { "<td colspan='$.post_empty'></td>"; }
|
||||
"</tr>";
|
||||
}
|
||||
|
||||
function DayPage::print_body() {
|
||||
if (not $.has_entries) { print "<div class='sct'>" + ehtml($*text_noentries_day) + "</div>"; }
|
||||
|
||||
foreach var Entry e ($.entries) {
|
||||
$this->print_entry($e);
|
||||
}
|
||||
|
||||
"""<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div>""";
|
||||
var string tprev = ehtml($*text_day_prev);
|
||||
var string tnext = ehtml($*text_day_next);
|
||||
"""<center><h2><a href="$.prev_url">$tprev</a> · <a href="$.next_url">$tnext</a></h2></center>""";
|
||||
|
||||
}
|
||||
|
||||
function MonthPage::print_body() {
|
||||
"""<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div>""";
|
||||
"<center><div class='bodybox'><center><table border='0' cellspacing='0' cellpadding='0'><tr><td><dl>";
|
||||
foreach var MonthDay d ($.days) {
|
||||
if ($d.has_entries) {
|
||||
"<dt><a href=\"$d.url\"><i>";
|
||||
print lang_ordinal($d.day);
|
||||
"</i></a>:</dt>\n<dd>";
|
||||
$d->print_subjectlist();
|
||||
"</dd>\n";
|
||||
}
|
||||
}
|
||||
"</dl></td></tr></table></center></div></center>\n";
|
||||
"""<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div>""";
|
||||
"<form method='post' action='$.redir.url'><center>";
|
||||
$.redir->print_hiddens();
|
||||
if ($.prev_url != "") { "<a href='$.prev_url' style='font-size:12pt;'>☜</a> "; }
|
||||
if (size $.months > 1) {
|
||||
"<select name='redir_key'>\n";
|
||||
foreach var MonthEntryInfo mei ($.months) {
|
||||
var string sel;
|
||||
if ($mei.date.year == $.date.year and $mei.date.month == $.date.month) {
|
||||
$sel = " selected='selected'";
|
||||
}
|
||||
"<option value='$mei.redir_key'$sel>" + $mei.date->date_format($*lang_fmt_month_long) + "</option>";
|
||||
}
|
||||
"</select>\n<input type='submit' value='View' />";
|
||||
}
|
||||
if ($.next_url != "") { " <a href='$.next_url' style='font-size:12pt;'>☞</a>\n"; }
|
||||
"</center></form>";
|
||||
}
|
||||
|
||||
function EntryPage::print_body() {
|
||||
print_entry($this, $.entry);
|
||||
|
||||
if ($.entry.comments.enabled and $.comment_pages.total_subitems > 0) {
|
||||
$.comment_pages->print();
|
||||
|
||||
$this->print_multiform_start();
|
||||
"<div style='margin-top: 7pt;'></div>";
|
||||
"<table align='center' cellspacing='0' border='0' cellpadding='0' style='display: none;'><tr><td>";
|
||||
$this->print_comments($.comments);
|
||||
"</td></tr></table>";
|
||||
|
||||
$.comment_pages->print();
|
||||
|
||||
if ($*show_entrynav_icons) {
|
||||
"""<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div>""";
|
||||
"""<div class="bs">""";
|
||||
$.entry->print_linkbar();
|
||||
"""</div>""";
|
||||
}
|
||||
|
||||
if ($this.multiform_on) {"""
|
||||
<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div>
|
||||
<div style="text-align: center;">""";
|
||||
$this->print_multiform_actionline();
|
||||
$this->print_multiform_end();
|
||||
"</div>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ItemRange::print() {
|
||||
if ($.all_subitems_displayed) { return; }
|
||||
"""<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div>""";
|
||||
"<center>";
|
||||
"<a name='comments'></a><div style='width: $*body_width; text-align:center;'>";
|
||||
"<h2>" + lang_page_of_pages($.current, $.total) + "</h2>";
|
||||
var string url_prev = $this->url_of($.current - 1);
|
||||
"<table cellspacing='0' cellpadding='0' border='0' align='center'><tr><td align='center' style='font-size: 14pt'>";
|
||||
if ($.current != 1) {
|
||||
print "<a href='$url_prev#comments'>☜</a>";
|
||||
} else {
|
||||
print "☜";
|
||||
}
|
||||
print " </td><td align='center'>";
|
||||
foreach var int i (1..$.total) {
|
||||
if ($i == $.current) { "$i"; }
|
||||
else {
|
||||
var string url_of = $this->url_of($i);
|
||||
"<a href='$url_of#comments'>$i</a>";
|
||||
}
|
||||
if ($i != $.total) { ", "; }
|
||||
}
|
||||
"</td><td align='center' style='font-size: 14pt'> ";
|
||||
var string url_next = $this->url_of($.current + 1);
|
||||
if ($.current != $.total) {
|
||||
print "<a href='$url_next#comments'>☞</a>";
|
||||
} else {
|
||||
print "☞";
|
||||
}
|
||||
"</td></tr></table></div></center>";
|
||||
}
|
||||
|
||||
function EntryPage::print_comments(Comment[] cs) {
|
||||
if (size $cs == 0) { return; }
|
||||
foreach var Comment c ($cs) {
|
||||
if($c.depth==1) {
|
||||
"</td></tr></table>";
|
||||
"""<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div>""";
|
||||
"<table align='center' cellspacing='0' border='0' cellpadding='0'><tr><td>";
|
||||
}
|
||||
var int indent = ($c.depth - 1) * 21;
|
||||
"<div style='margin-left: ${indent}pt;'>\n";
|
||||
if ($c.full) {
|
||||
$this->print_comment($c);
|
||||
} else {
|
||||
$this->print_comment_partial($c);
|
||||
}
|
||||
"</div>";
|
||||
$this->print_comments($c.replies);
|
||||
}
|
||||
}
|
||||
|
||||
function EntryPage::print_comment(Comment c) {
|
||||
var string poster = defined $c.poster ? $c.poster->as_string() : $*text_poster_anonymous;
|
||||
var string sub_icon;
|
||||
if (defined $c.subject_icon) {
|
||||
$sub_icon = $c.subject_icon->as_string();
|
||||
}
|
||||
"<a name='$c.anchor'></a>";
|
||||
"<div class='bodybox'" + ($c.depth>1? " style='margin-top:${*font_leading}pt;'" : "") + ">";
|
||||
if (defined $c.userpic and $*comment_userpic_style != "off") {
|
||||
var int w = $c.userpic.width;
|
||||
var int h = $c.userpic.height;
|
||||
# WARNING: this will later be done by the system (it'll be a
|
||||
# constructional property), so don't copy this hack into your
|
||||
# layout layers or you'll be messed up later.
|
||||
if ($*comment_userpic_style == "small") {
|
||||
$w = $w / 2;
|
||||
$h = $h / 2;
|
||||
}
|
||||
"<img src='$c.userpic.url' width='$w' height='$h' alt='[User Picture]' style='float: right;' class='author' />";
|
||||
}
|
||||
|
||||
### From, date, etc
|
||||
"<div class='noul'>";
|
||||
if ($c.screened) { "<span style='color:$*text_weaker;'>(Screened) </span>"; }
|
||||
"On " + $c.time->date_format("long") + ", " + $c.time->time_format() + ", $poster ";
|
||||
if ($c.metadata{"poster_ip"}) { "(" + $c.metadata{"poster_ip"} + ") "; }
|
||||
"<a href='$c.permalink_url'>";
|
||||
if ($c.depth == 1) { "commented"; }
|
||||
else { "replied"; }
|
||||
"</a>:</div>";
|
||||
|
||||
print (defined $c.subject_icon or $c.subject != "") ? "<div class='caption'>$c.subject_icon $c.subject</div>" : "";
|
||||
|
||||
"<div class='body'>";
|
||||
render_body($c.text);
|
||||
print "</div><div class='smallbar'>";
|
||||
if ($c.frozen) {
|
||||
"Replies Frozen";
|
||||
} else {
|
||||
"<a href='$c.reply_url'>Reply</a>";
|
||||
}
|
||||
if ($c.parent_url != "") { " · <a href='$c.parent_url'>Parent</a>"; }
|
||||
if ($c.thread_url != "") { " · <a href='$c.thread_url'>Thread</a>"; }
|
||||
$c->print_linkbar();
|
||||
if ($this.multiform_on) {
|
||||
" · ";
|
||||
"<label for='ljcomsel_$c.talkid'>$*text_multiform_check</label>";
|
||||
$c->print_multiform_check();
|
||||
}
|
||||
"</div></div>";
|
||||
}
|
||||
|
||||
|
||||
function EntryPage::print_comment_partial(Comment c) {
|
||||
var string poster = defined $c.poster ? $c.poster->as_string() : $*text_poster_anonymous;
|
||||
var bool subj = $c.subject != "";
|
||||
"<div class='ult' style='width:$*body_width; margin-top:${*font_leading}pt;'>";
|
||||
"— On " + $c.time->date_format("long") + ", " + $c.time->time_format() + ", $poster ";
|
||||
if ($c.metadata{"poster_ip"}) { "(" + $c.metadata{"poster_ip"} + ") "; }
|
||||
if($subj) { """replied, <a href="$c.permalink_url">“$c.subject”</a>"""; }
|
||||
else { """posted <a href="$c.permalink_url">a reply</a>"""; }
|
||||
".</div>";
|
||||
}
|
||||
|
||||
function Comment::print_linkbar() {
|
||||
var Link link;
|
||||
foreach var string k ($.link_keyseq) {
|
||||
$link = $this->get_link($k);
|
||||
($link.caption != "") ? " · <a href='$link.url'>$link.caption</a>" : "";
|
||||
}
|
||||
}
|
||||
|
||||
function ReplyPage::print_body() {
|
||||
var bool ent = $.replyto.permalink_url == $.entry.permalink_url;
|
||||
|
||||
if($ent) {
|
||||
print_entry($this, $.entry);
|
||||
}
|
||||
else {
|
||||
"""<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div>""";
|
||||
|
||||
var EntryLite c = $.replyto;
|
||||
var string poster = defined $c.poster ? $c.poster->as_string() : $*text_poster_anonymous;
|
||||
"<center><div style='width: $*body_width;'>";
|
||||
|
||||
if (defined $c.userpic and $*comment_userpic_style != "off") {
|
||||
var int w = $c.userpic.width;
|
||||
var int h = $c.userpic.height;
|
||||
# WARNING: this will later be done by the system (it'll be a
|
||||
# constructional property), so don't copy this hack into your
|
||||
# layout layers or you'll be messed up later.
|
||||
if ($*comment_userpic_style == "small") {
|
||||
$w = $w / 2;
|
||||
$h = $h / 2;
|
||||
}
|
||||
"<img src='$c.userpic.url' width='$w' height='$h' alt='[User Picture]' style='float: right;' class='author' />";
|
||||
|
||||
}
|
||||
|
||||
### From, date, etc
|
||||
|
||||
"<div class='noul'>";
|
||||
"On " + $c.time->date_format("long") + ", " + $c.time->time_format() + ", $poster ";
|
||||
if ($c.metadata{"poster_ip"}) { "(" + $c.metadata{"poster_ip"} + ") "; }
|
||||
"<a href='$c.permalink_url'>commented:</a></div>";
|
||||
|
||||
print ($c.subject != "") ? "<div class='caption'>$c.subject</div>" : "";
|
||||
|
||||
"<div class='body'>";
|
||||
render_body($c.text);
|
||||
"</div></div></center>";
|
||||
}
|
||||
|
||||
"""<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div>""";
|
||||
"<div style='text-align:center;'><h2><a href='$.entry.comments.read_url'>Read Comments</a></h2></div>";
|
||||
"""<div class="bs">
|
||||
<img src="$*dingbar_url" alt="$*text_dingbar_alt" />
|
||||
</div>""";
|
||||
|
||||
if (not $.entry.comments.enabled) {
|
||||
print "<div class='sct'>$*text_reply_nocomments</div>";
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
"<center><h3 style='margin-top:0px; line-height:" + (2*$*font_leading) + "pt;'>Reply " + ($ent ? "to this entry" : "to this comment") + ":</h3>";
|
||||
$.form->print();
|
||||
"</center>";
|
||||
}
|
||||
179
ljcom/bin/upgrading/s2layers/anovelconundrum/themes.s2
Normal file
179
ljcom/bin/upgrading/s2layers/anovelconundrum/themes.s2
Normal file
@@ -0,0 +1,179 @@
|
||||
#NEWLAYER: anovelconundrum/renaissance
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Renaissance";
|
||||
layerinfo "redist_uniq" = "anovelconundrum/renaissance";
|
||||
|
||||
set font_secondary_fallback = "";
|
||||
set font_secondary_size = 10;
|
||||
set font_secondary_type = "serif";
|
||||
set font_leading = 12;
|
||||
set page_back = "#FAF2C8";
|
||||
set font_fallback = "";
|
||||
set font_secondary_base = "Garamond";
|
||||
set font_base = "Garamond";
|
||||
|
||||
#NEWLAYER: anovelconundrum/modern
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Modern";
|
||||
layerinfo "redist_uniq" = "anovelconundrum/modern";
|
||||
|
||||
set font_leading = 14;
|
||||
set page_back = "#F5F5E8";
|
||||
set font_fallback = "";
|
||||
set font_base = "Georgia";
|
||||
set font_flourish_base = "";
|
||||
set font_flourish_fallback = "";
|
||||
set font_flourish_type = "";
|
||||
set flourish_rm = "0.05em";
|
||||
set dc_rm = "0.1em";
|
||||
set dcLen = 5000;
|
||||
|
||||
#NEWLAYER: anovelconundrum/clippy
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Clippy";
|
||||
layerinfo "redist_uniq" = "anovelconundrum/clippy";
|
||||
|
||||
set font_leading = 13;
|
||||
set page_back = "#FFFFFF";
|
||||
set font_fallback = "Times";
|
||||
set font_base = "Times New Roman";
|
||||
set font_secondary_base = "Helvetica";
|
||||
set font_secondary_fallback = "Arial";
|
||||
set font_secondary_type = "sans-serif";
|
||||
set font_secondary_size = 8;
|
||||
set font_flourish_base = "";
|
||||
set font_flourish_fallback = "";
|
||||
set font_flourish_type = "";
|
||||
set flourish_rm = "0.05em";
|
||||
set dc_rm = "0.1em";
|
||||
set flourish_rm = "0.08em";
|
||||
set dcLen = 99999;
|
||||
set body_width = "65ex";
|
||||
|
||||
#NEWLAYER: anovelconundrum/childsplay
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Child's Play";
|
||||
layerinfo "redist_uniq" = "anovelconundrum/childsplay";
|
||||
|
||||
set page_back = "#FFE6FF";
|
||||
set font_base = "Comic Sans";
|
||||
set font_fallback = "Chalkboard";
|
||||
set font_type = "cursive";
|
||||
set font_secondary_base = "";
|
||||
set font_secondary_fallback = "";
|
||||
set font_secondary_type = "";
|
||||
set font_flourish_base = "";
|
||||
set font_flourish_fallback = "";
|
||||
set font_flourish_type = "";
|
||||
set flourish_rm = "0.05em";
|
||||
set dc_rm = "0.12em";
|
||||
set flourish_rm = "0.08em";
|
||||
set dcLen = 1000;
|
||||
|
||||
#NEWLAYER: anovelconundrum/laketahoe
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Lake Tahoe";
|
||||
layerinfo "redist_uniq" = "anovelconundrum/laketahoe";
|
||||
|
||||
set page_back = "#E6E6FF";
|
||||
set font_base = "Tahoma";
|
||||
set font_fallback = "Verdana";
|
||||
set font_type = "sans-serif";
|
||||
set font_secondary_base = "";
|
||||
set font_secondary_fallback = "";
|
||||
set font_secondary_type = "";
|
||||
set font_flourish_base = "";
|
||||
set font_flourish_fallback = "";
|
||||
set font_flourish_type = "";
|
||||
set flourish_rm = "0.05em";
|
||||
set dc_rm = "0.14em";
|
||||
set flourish_rm = "0.08em";
|
||||
set dcLen = 500;
|
||||
|
||||
#NEWLAYER: anovelconundrum/deardiary
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Dear Diary";
|
||||
layerinfo "redist_uniq" = "anovelconundrum/deardiary";
|
||||
|
||||
set page_back = "#f9f7d6";
|
||||
set font_base = "Lucida Handwriting";
|
||||
set font_fallback = "";
|
||||
set font_type = "cursive";
|
||||
set font_leading = 16;
|
||||
set body_width = "38em";
|
||||
set font_secondary_base = "";
|
||||
set font_secondary_fallback = "";
|
||||
set font_secondary_type = "";
|
||||
set font_flourish_base = "";
|
||||
set font_flourish_fallback = "";
|
||||
set font_flourish_type = "";
|
||||
set flourish_rm = "0.05em";
|
||||
set dc_rm = "0.12em";
|
||||
set flourish_rm = "0.05em";
|
||||
set dcLen = 500;
|
||||
|
||||
#NEWLAYER: anovelconundrum/scribal
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Scribal";
|
||||
layerinfo "redist_uniq" = "anovelconundrum/scribal";
|
||||
|
||||
set page_back = "#FAF2C8";
|
||||
set font_base = "Lucida Calligraphy";
|
||||
set font_fallback = "";
|
||||
set font_type = "cursive";
|
||||
set font_leading = 15;
|
||||
set title_smallcaps = false;
|
||||
set title_underline = true;
|
||||
set font_secondary_base = "";
|
||||
set font_secondary_fallback = "";
|
||||
set font_secondary_type = "";
|
||||
set font_flourish_base = "";
|
||||
set font_flourish_fallback = "";
|
||||
set font_flourish_type = "";
|
||||
set flourish_rm = "0.05em";
|
||||
set dc_rm = "0.12em";
|
||||
set flourish_rm = "0.05em";
|
||||
set dcLen = 500;
|
||||
|
||||
#NEWLAYER: anovelconundrum/glossy
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Glossy Magazine";
|
||||
layerinfo "redist_uniq" = "anovelconundrum/glossy";
|
||||
|
||||
set page_back = "#F4FBFF";
|
||||
set font_base = "Lucida Bright";
|
||||
set font_fallback = "Georgia";
|
||||
set font_type = "serif";
|
||||
set font_secondary_base = "Lucida Sans";
|
||||
set font_secondary_fallback = "";
|
||||
set font_secondary_type = "sans-serif";
|
||||
set font_secondary_size = 9;
|
||||
set font_flourish_base = "Agency FB";
|
||||
set font_flourish_fallback = "";
|
||||
set font_flourish_type = "";
|
||||
set flourish_rm = "0.05em";
|
||||
set dc_rm = "0.08em";
|
||||
set flourish_rm = "0.02em";
|
||||
set dcLen = 1200;
|
||||
|
||||
#NEWLAYER: anovelconundrum/retro
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Retrossential";
|
||||
layerinfo "redist_uniq" = "anovelconundrum/retro";
|
||||
|
||||
set page_back = "#f9f9e3";
|
||||
set font_base = "Rockwell";
|
||||
set font_fallback = "";
|
||||
set font_type = "serif";
|
||||
set font_size = 11;
|
||||
set font_secondary_base = "";
|
||||
set font_secondary_fallback = "";
|
||||
set font_secondary_type = "";
|
||||
set font_secondary_size = 10;
|
||||
set font_flourish_base = "";
|
||||
set font_flourish_fallback = "";
|
||||
set font_flourish_type = "";
|
||||
set flourish_rm = "0.05em";
|
||||
set dc_rm = "0.12em";
|
||||
set flourish_rm = "0.05em";
|
||||
set dcLen = 500;
|
||||
BIN
ljcom/bin/upgrading/s2layers/boxer/boxer.jpg
Normal file
BIN
ljcom/bin/upgrading/s2layers/boxer/boxer.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
1988
ljcom/bin/upgrading/s2layers/boxer/layout.s2
Normal file
1988
ljcom/bin/upgrading/s2layers/boxer/layout.s2
Normal file
File diff suppressed because it is too large
Load Diff
225
ljcom/bin/upgrading/s2layers/boxer/themes.s2
Normal file
225
ljcom/bin/upgrading/s2layers/boxer/themes.s2
Normal file
@@ -0,0 +1,225 @@
|
||||
#NEWLAYER: boxer/lipstick
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Lipstick";
|
||||
layerinfo redist_uniq = "boxer/lipstick";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#B46F60";
|
||||
set entry_link = "#ffeae5";
|
||||
set entry_bg = "#eebbaf";
|
||||
set nav_scale = "darker";
|
||||
set info_font = "#A55745";
|
||||
set bg_color = "#fac7bb";
|
||||
set entry_font = "#A55745";
|
||||
set info_link_visited = "#ffeae5";
|
||||
set page_background_pattern = "background-hearts.gif";
|
||||
set entry_link_visited = "#ffffff";
|
||||
set info_bg = "#e5a799";
|
||||
set info_link = "#FFF9F8";
|
||||
|
||||
|
||||
#NEWLAYER: boxer/greyskies
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Grey Skies";
|
||||
layerinfo redist_uniq = "boxer/greyskies";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#9aaeb6";
|
||||
set entry_link = "#997D63";
|
||||
set entry_bg = "#f2eae2";
|
||||
set nav_scale = "lighter";
|
||||
set info_font = "#627a84";
|
||||
set bg_color = "#dde1e3";
|
||||
set entry_font = "#7f97a0";
|
||||
set info_link_visited = "#CEDBDF";
|
||||
set page_background_pattern = "background-vert-stripes.gif";
|
||||
set entry_link_visited = "#b4a18f";
|
||||
set info_bg = "#8c9ca2";
|
||||
set info_link = "#b9c7cc";
|
||||
|
||||
#NEWLAYER: boxer/eggplant
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Eggplant";
|
||||
layerinfo redist_uniq = "boxer/eggplant";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#4e6559";
|
||||
set entry_link = "#9FAE8D";
|
||||
set entry_bg = "#635A48";
|
||||
set nav_scale = "lighter";
|
||||
set info_font = "#899BA3";
|
||||
set bg_color = "#9fae8d";
|
||||
set entry_font = "#E7DFCF";
|
||||
set info_link_visited = "#b9c7cc";
|
||||
set entry_link_visited = "#A6B2AC";
|
||||
set info_bg = "#464640";
|
||||
set info_link = "#b9c7cc";
|
||||
|
||||
|
||||
#NEWLAYER: boxer/lonelyturquoise
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Lonely Turquoise";
|
||||
layerinfo redist_uniq = "boxer/lonelyturquoise";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set page_background_pattern = "background-lg-boxes.gif";
|
||||
set color_nav_bg = "#7f7f7f";
|
||||
set entry_link_visited = "#ededed";
|
||||
set entry_link = "#ffffff";
|
||||
set entry_bg = "#ABABAB";
|
||||
set info_font = "#000000";
|
||||
set info_bg = "#00b1ae";
|
||||
set bg_color = "#ffffff";
|
||||
set entry_font = "#363636";
|
||||
set info_link = "#006260";
|
||||
|
||||
|
||||
#NEWLAYER: boxer/legallypink
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Legally Pink";
|
||||
layerinfo redist_uniq = "boxer/legallypink";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#ff089b";
|
||||
set entry_link_visited = "#70086F";
|
||||
set entry_link = "#4D0870";
|
||||
set entry_bg = "#ec008c";
|
||||
set nav_scale = "lighter";
|
||||
set info_font = "#ec008c";
|
||||
set bg_color = "#f49ac1";
|
||||
set entry_font = "#fbdbee";
|
||||
set info_link_visited = "#CE1182";
|
||||
set page_background_pattern = "background-hearts.gif";
|
||||
set info_bg = "#ffadde";
|
||||
set info_link = "#E3026A";
|
||||
|
||||
#NEWLAYER: boxer/greybrowngreen
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Grey Brown Green";
|
||||
layerinfo redist_uniq = "boxer/greybrowngreen";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#2f372e";
|
||||
set entry_link = "#212919";
|
||||
set entry_bg = "#586C44";
|
||||
set nav_scale = "lighter";
|
||||
set info_font = "#A1926C";
|
||||
set bg_color = "#000000";
|
||||
set entry_font = "#D9E1D2";
|
||||
set info_link_visited = "#B1AD9B";
|
||||
set entry_link_visited = "#2C3F28";
|
||||
set info_bg = "#433a1e";
|
||||
set info_link = "#B1AD9B";
|
||||
|
||||
#NEWLAYER: boxer/precious
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Precious";
|
||||
layerinfo redist_uniq = "boxer/precious";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#A17682";
|
||||
set entry_link = "#0F486E";
|
||||
set entry_bg = "#c6cfd5";
|
||||
set nav_scale = "lighter";
|
||||
set info_font = "#F7FDFC";
|
||||
set bg_color = "#d9e1d9";
|
||||
set entry_font = "#6C7982";
|
||||
set info_link_visited = "#E4ECEB";
|
||||
set entry_link_visited = "#3F6A86";
|
||||
set info_bg = "#a2b2b1";
|
||||
set info_link = "#E4ECEB";
|
||||
|
||||
#NEWLAYER: boxer/purple
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Purple";
|
||||
layerinfo redist_uniq = "boxer/purple";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#78629C";
|
||||
set entry_link = "#F9F5FC";
|
||||
set entry_bg = "#62536C";
|
||||
set nav_scale = "lighter";
|
||||
set info_font = "#A38FA3";
|
||||
set bg_color = "#8B77A9";
|
||||
set entry_font = "#DCD3E2";
|
||||
set info_link_visited = "#A799BF";
|
||||
set entry_link_visited = "#ffffff";
|
||||
set info_bg = "#472B47";
|
||||
set info_link = "#A799BF";
|
||||
|
||||
#NEWLAYER: boxer/green
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Green";
|
||||
layerinfo redist_uniq = "boxer/green";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#748A25";
|
||||
set entry_link = "#EAF9D4";
|
||||
set entry_bg = "#748A25";
|
||||
set nav_scale = "lighter";
|
||||
set info_font = "#004C3C";
|
||||
set bg_color = "#254634";
|
||||
set entry_font = "#E2EED0";
|
||||
set info_link_visited = "#00EEBC";
|
||||
set entry_link_visited = "#EAF9D4";
|
||||
set info_bg = "#0E9B7D";
|
||||
set info_link = "#61EFD1";
|
||||
|
||||
#NEWLAYER: boxer/purpange
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Purpange";
|
||||
layerinfo redist_uniq = "boxer/purpange";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#151e1a";
|
||||
set nav_scale = "lighter";
|
||||
set entry_link = "#ffffff";
|
||||
set entry_bg = "#E7513E";
|
||||
set info_font = "#f6cab7";
|
||||
set bg_color = "#ffffff";
|
||||
set entry_font = "#FDE9E6";
|
||||
set info_link_visited = "#afe900";
|
||||
set page_background_pattern = "background-stitched.gif";
|
||||
set entry_link_visited = "#ffffff";
|
||||
set info_bg = "#91125f";
|
||||
set info_link = "#afe900";
|
||||
|
||||
#NEWLAYER: boxer/purplesalmon
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Purple Salmon";
|
||||
layerinfo redist_uniq = "boxer/purplesalmon";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#AA6B90";
|
||||
set entry_link = "#633F4B";
|
||||
set entry_bg = "#CEADB8";
|
||||
set nav_scale = "same";
|
||||
set info_font = "#F0B4AA";
|
||||
set bg_color = "#151E1A";
|
||||
set entry_font = "#6D5B61";
|
||||
set info_link_visited = "#7E3D33";
|
||||
set entry_link_visited = "#633F4B";
|
||||
set info_bg = "#D26E5E";
|
||||
set info_link = "#7E3D33";
|
||||
|
||||
#NEWLAYER: boxer/refriedtribute
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Refried Tribute";
|
||||
layerinfo redist_uniq = "boxer/refriedtribute";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#666666";
|
||||
set entry_link = "#336699";
|
||||
set entry_bg = "#e6e6e6";
|
||||
set info_font = "#999966";
|
||||
set bg_color = "#ffffff";
|
||||
set entry_font = "#656565";
|
||||
set info_link_visited = "#4d4d4d";
|
||||
set page_background_pattern = "none";
|
||||
set entry_link_visited = "#336699";
|
||||
set info_bg = "#cccc99";
|
||||
set info_link = "#666666";
|
||||
|
||||
#NEWLAYER: boxer/blue
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Blue";
|
||||
layerinfo redist_uniq = "boxer/blue";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set color_nav_bg = "#3A6A74";
|
||||
set entry_link = "#E0DFCE";
|
||||
set entry_bg = "#4F7B8A";
|
||||
set info_font = "#908F78";
|
||||
set bg_color = "#435754";
|
||||
set entry_font = "#E7EEF0";
|
||||
set info_link_visited = "#5D5C50";
|
||||
set entry_link_visited = "#E0DFCE";
|
||||
set info_bg = "#E0DFCE";
|
||||
set info_link = "#4E5964";
|
||||
BIN
ljcom/bin/upgrading/s2layers/component/component.jpg
Normal file
BIN
ljcom/bin/upgrading/s2layers/component/component.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.4 KiB |
2806
ljcom/bin/upgrading/s2layers/component/layout.s2
Normal file
2806
ljcom/bin/upgrading/s2layers/component/layout.s2
Normal file
File diff suppressed because it is too large
Load Diff
187
ljcom/bin/upgrading/s2layers/component/themes.s2
Normal file
187
ljcom/bin/upgrading/s2layers/component/themes.s2
Normal file
@@ -0,0 +1,187 @@
|
||||
#NEWLAYER: component/aquatic
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Aquatic";
|
||||
layerinfo redist_uniq = "component/aquatic";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set entry_fgcolor = "#515151";
|
||||
set comp_bgcolor = "#51ada6";
|
||||
set header_link = "#ffffff";
|
||||
set entry_link = "#0C5D57";
|
||||
set entry_bgcolor = "#ffffff";
|
||||
set header_fgcolor = "#c7d1cc";
|
||||
set main_bgcolor = "#51ada6";
|
||||
set calendar_active = "#318D86";
|
||||
set header_bgcolor = "#0e3b4a";
|
||||
set calendar_inactive = "#ffffff";
|
||||
set comp_fgcolor = "#F7FEFF";
|
||||
|
||||
#NEWLAYER: component/bluetiful
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Bluetiful";
|
||||
layerinfo redist_uniq = "component/bluetiful";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set entry_fgcolor = "#606060";
|
||||
set comp_bgcolor = "#f4f4f4";
|
||||
set header_link = "#f7fcfb";
|
||||
set entry_link = "#2d3679";
|
||||
set entry_bgcolor = "#eff5ff";
|
||||
set header_fgcolor = "#327192";
|
||||
set main_bgcolor = "#a2c5e3";
|
||||
set header_bgcolor = "#6da6c4";
|
||||
set comments_bgcolor = "#84b5d2";
|
||||
|
||||
#NEWLAYER: component/darkness
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Darkness";
|
||||
layerinfo redist_uniq = "component/darkness";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set comments_screened_bgcolor = "#22620e";
|
||||
set calendar_fgcolor = "#5b6c7a";
|
||||
set calendar_active = "#5b6c7a";
|
||||
set calendar_inactive = "#adbac5";
|
||||
set comp_fgcolor = "#dadde0";
|
||||
set entry_fgcolor = "#dddcd6";
|
||||
set comp_bgcolor = "#758491";
|
||||
set entry_link = "#adb6be";
|
||||
set header_link = "#c7ccd1";
|
||||
set entry_bgcolor = "#32343d";
|
||||
set main_bgcolor = "#71837A";
|
||||
set header_fgcolor = "#c7d1cc";
|
||||
set header_bgcolor = "#728d80";
|
||||
set comments_bgcolor = "#5a5a5a";
|
||||
|
||||
#NEWLAYER: component/jedicloak
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Jedi Cloak";
|
||||
layerinfo redist_uniq = "component/jedicloak";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set entry_fgcolor = "#F1EDE5";
|
||||
set comp_bgcolor = "#988b67";
|
||||
set header_link = "#dddbd6";
|
||||
set entry_link = "#615020";
|
||||
set entry_bgcolor = "#ada386";
|
||||
set comments_screened_bgcolor = "#a29f97";
|
||||
set header_fgcolor = "#bcb59f";
|
||||
set main_bgcolor = "#6e5845";
|
||||
set calendar_active = "#817452";
|
||||
set header_bgcolor = "#6e6449";
|
||||
set calendar_inactive = "#988b67";
|
||||
set comp_fgcolor = "#383325";
|
||||
set comments_bgcolor = "#948B6F";
|
||||
|
||||
#NEWLAYER: component/mellow
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Mellow";
|
||||
layerinfo redist_uniq = "component/mellow";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set comments_screened_bgcolor = "#D6C8CC";
|
||||
set page_background_image = "";
|
||||
set calendar_active = "#D9E1D9";
|
||||
set calendar_inactive = "#A2B2B1";
|
||||
set comp_fgcolor = "878D8D";
|
||||
set entry_fgcolor = "#355351";
|
||||
set comp_bgcolor = "#C6CFD5";
|
||||
set entry_link = "#6B7F8D";
|
||||
set header_link = "6B7F8D";
|
||||
set entry_bgcolor = "#A2B2B1";
|
||||
set main_bgcolor = "#D6C8CC";
|
||||
set header_fgcolor = "#96A891";
|
||||
set header_bgcolor = "#D9E1D9";
|
||||
set comments_bgcolor = "#BCC4C3";
|
||||
|
||||
#NEWLAYER: component/mocha
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Mocha";
|
||||
layerinfo redist_uniq = "component/mocha";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set page_background_image = "";
|
||||
set entry_fgcolor = "#807C75";
|
||||
set comp_bgcolor = "#b1bbb4";
|
||||
set comp_fgcolor = "#78746e";
|
||||
set header_link = "#716C53";
|
||||
set entry_link = "#67716a";
|
||||
set entry_bgcolor = "#ebe6d1";
|
||||
set comments_screened_bgcolor = "#b2c9b9";
|
||||
set header_fgcolor = "#7a6f43";
|
||||
set main_bgcolor = "#d8d0ae";
|
||||
set calendar_active = "#8da193";
|
||||
set header_bgcolor = "#d8d0ae";
|
||||
set calendar_inactive = "#d3e1d7";
|
||||
set comments_bgcolor = "#dbdedc";
|
||||
|
||||
#NEWLAYER: component/orangesoda
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Orange Soda";
|
||||
layerinfo redist_uniq = "component/orangesoda";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set entry_fgcolor = "#8a5b33";
|
||||
set comp_bgcolor = "#c4bd8e";
|
||||
set header_link = "#FFFFFF";
|
||||
set entry_link = "#613815";
|
||||
set entry_bgcolor = "#dbd7b9";
|
||||
set comments_screened_bgcolor = "#cbc9b9";
|
||||
set header_fgcolor = "#d7d2af";
|
||||
set main_bgcolor = "#cd9338";
|
||||
set calendar_active = "#cd9338";
|
||||
set header_bgcolor = "#c6710a";
|
||||
set calendar_inactive = "#dbd7b9";
|
||||
set comments_bgcolor = "#e4deb5";
|
||||
|
||||
#NEWLAYER: component/pinkelephants
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Pink Elephants";
|
||||
layerinfo redist_uniq = "component/pinkelephants";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set comments_screened_bgcolor = "#e29994";
|
||||
set page_background_image = "";
|
||||
set calendar_active = "#a8a8a7";
|
||||
set calendar_inactive = "#e29994";
|
||||
set comp_fgcolor = "#ad5a55";
|
||||
set entry_fgcolor = "#ffffff";
|
||||
set comp_bgcolor = "#f7b3ae";
|
||||
set entry_link = "#777776";
|
||||
set header_link = "#FFFFFF";
|
||||
set entry_bgcolor = "#a8a8a7";
|
||||
set main_bgcolor = "#e29994";
|
||||
set header_fgcolor = "#ad5a55";
|
||||
set header_bgcolor = "#e29994";
|
||||
set comments_bgcolor = "#9c9c9c";
|
||||
|
||||
#NEWLAYER: component/sugarspice
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Sugar and Spice";
|
||||
layerinfo redist_uniq = "component/sugarspice";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set entry_fgcolor = "#927DAD";
|
||||
set comp_bgcolor = "#D5EBFA";
|
||||
set header_link = "#6e5593";
|
||||
set entry_link = "#759EBA";
|
||||
set entry_bgcolor = "#D5E9D7";
|
||||
set comments_screened_bgcolor = "#BEC9BF";
|
||||
set header_fgcolor = "#6E5593";
|
||||
set main_bgcolor = "#FCD9C4";
|
||||
set calendar_active = "#FCD9C4";
|
||||
set header_bgcolor = "#D4CAE1";
|
||||
set calendar_inactive = "#D4CAE1";
|
||||
set comp_fgcolor = "AA9ABF";
|
||||
set comments_bgcolor = "#B9DABC";
|
||||
|
||||
#NEWLAYER: component/greensuperhero
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "That Green Superhero";
|
||||
layerinfo redist_uniq = "component/greensuperhero";
|
||||
layerinfo "source_viewable" = 0;
|
||||
set comments_screened_bgcolor = "#c99bd7";
|
||||
set page_background_image = "";
|
||||
set calendar_active = "#bc6ed4";
|
||||
set calendar_inactive = "#c99bd7";
|
||||
set comp_fgcolor = "#bc87cb";
|
||||
set entry_fgcolor = "#424242";
|
||||
set comp_bgcolor = "#efefe1";
|
||||
set entry_link = "#027040";
|
||||
set header_link = "#ffffff";
|
||||
set entry_bgcolor = "#e4ede9";
|
||||
set main_bgcolor = "#16b16c";
|
||||
set header_fgcolor = "#d0efe2";
|
||||
set header_bgcolor = "#049957";
|
||||
set comments_bgcolor = "#bed8cc";
|
||||
1534
ljcom/bin/upgrading/s2layers/cuteness/layout.s2
Normal file
1534
ljcom/bin/upgrading/s2layers/cuteness/layout.s2
Normal file
File diff suppressed because it is too large
Load Diff
2076
ljcom/bin/upgrading/s2layers/flexiblesquares/layout.s2
Normal file
2076
ljcom/bin/upgrading/s2layers/flexiblesquares/layout.s2
Normal file
File diff suppressed because it is too large
Load Diff
615
ljcom/bin/upgrading/s2layers/flexiblesquares/themes.s2
Normal file
615
ljcom/bin/upgrading/s2layers/flexiblesquares/themes.s2
Normal file
@@ -0,0 +1,615 @@
|
||||
#NEWLAYER: flexiblesquares/autumn
|
||||
layerinfo "redist_uniq" = "flexiblesquares/autumn";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Autumn";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#351805";
|
||||
set page_fgcolor = "#000000";
|
||||
|
||||
set content_bgcolor = "#6a3106";
|
||||
|
||||
set entry_bgcolor = "#eee293";
|
||||
set entry_fgcolor = "#661f0c";
|
||||
|
||||
set border_color = "#000000";
|
||||
|
||||
set entrytitle_bgcolor = "#8b4e1d";
|
||||
|
||||
set outer_table_bgcolor = "#c47b51";
|
||||
|
||||
set sidebar_header_bgcolor = "#8b4e1d";
|
||||
set sidebar_fgcolor = "#000000";
|
||||
|
||||
set header_footer_bgcolor = "#eee293";
|
||||
set header_footer_fgcolor = "#661f0c";
|
||||
|
||||
set link_color = "#608729";
|
||||
set link_hover_color = "#661f0c";
|
||||
|
||||
set comments_link_color = "#FFFFFF";
|
||||
set comments_link_hover = "#c47b51";
|
||||
|
||||
set sidebar_link_color = "#608729";
|
||||
set sidebar_link_hover = "#eee293";
|
||||
|
||||
set header_footer_link_color = "#608729";
|
||||
set header_footer_link_hover = "#661f0c";
|
||||
|
||||
#NEWLAYER: flexiblesquares/blackwhite
|
||||
layerinfo "redist_uniq" = "flexiblesquares/blackwhite";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Black and White and Red All Over";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#cccccc";
|
||||
set page_fgcolor = "#ff0000";
|
||||
|
||||
set content_bgcolor = "#000000";
|
||||
|
||||
set entry_bgcolor = "#ffffff";
|
||||
set entry_fgcolor = "#000000";
|
||||
|
||||
set border_color = "#ffffff";
|
||||
|
||||
set entrytitle_bgcolor = "#cc0000";
|
||||
|
||||
set outer_table_bgcolor = "#666666";
|
||||
|
||||
set sidebar_header_bgcolor = "#cc0000";
|
||||
set sidebar_fgcolor = "#ffffff";
|
||||
|
||||
set header_footer_bgcolor = "#000000";
|
||||
set header_footer_fgcolor = "#cc0000";
|
||||
|
||||
set date_fgcolor = "#000000";
|
||||
set subject_fgcolor = "#000000";
|
||||
|
||||
set link_color = "#999999";
|
||||
set link_hover_color = "#000000";
|
||||
|
||||
set comments_link_color = "#FFFFFF";
|
||||
set comments_link_hover = "#000000";
|
||||
|
||||
set sidebar_link_color = "#999999";
|
||||
set sidebar_link_hover = "#ffffff";
|
||||
|
||||
set header_footer_link_color = "#ffffff";
|
||||
set header_footer_link_hover = "#999999";
|
||||
|
||||
#NEWLAYER: flexiblesquares/freshpaint
|
||||
layerinfo "redist_uniq" = "flexiblesquares/freshpaint";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Fresh Paint";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#993366";
|
||||
set page_fgcolor = "#006633";
|
||||
|
||||
set content_bgcolor = "#ff9933";
|
||||
|
||||
set entry_bgcolor = "#ffff99";
|
||||
set entry_fgcolor = "#000000";
|
||||
|
||||
set border_color = "#6699cc";
|
||||
|
||||
set entrytitle_bgcolor = "#ccff66";
|
||||
|
||||
set outer_table_bgcolor = "#330033";
|
||||
|
||||
set sidebar_header_bgcolor = "#ccff66";
|
||||
set sidebar_fgcolor = "#000000";
|
||||
|
||||
set header_footer_bgcolor = "#ffff99";
|
||||
set header_footer_fgcolor = "#006633";
|
||||
|
||||
set date_fgcolor = "#000000";
|
||||
set subject_fgcolor = "#000000";
|
||||
|
||||
set link_color = "#993333";
|
||||
set link_hover_color = "#330033";
|
||||
|
||||
set comments_link_color = "#993333";
|
||||
set comments_link_hover = "#330033";
|
||||
|
||||
set sidebar_link_color = "#993333";
|
||||
set sidebar_link_hover = "#330033";
|
||||
|
||||
set header_footer_link_color = "#993333";
|
||||
set header_footer_link_hover = "#330033";
|
||||
|
||||
#NEWLAYER: flexiblesquares/nautical
|
||||
layerinfo "redist_uniq" = "flexiblesquares/nautical";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Nautical";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#bad2f6";
|
||||
set page_fgcolor = "#000000";
|
||||
|
||||
set content_bgcolor = "#213659";
|
||||
|
||||
set entry_bgcolor = "#ffffff";
|
||||
set entry_fgcolor = "#000000";
|
||||
|
||||
set border_color = "#d4e2f8";
|
||||
|
||||
set entrytitle_bgcolor = "#f0ef8e";
|
||||
|
||||
set outer_table_bgcolor = "#335288";
|
||||
|
||||
set sidebar_header_bgcolor = "#f0ef8e";
|
||||
set sidebar_fgcolor = "#7fa1d5";
|
||||
|
||||
set header_footer_bgcolor = "#213659";
|
||||
set header_footer_fgcolor = "#f0ef8e";
|
||||
|
||||
set date_fgcolor = "#000000";
|
||||
set subject_fgcolor = "#000000";
|
||||
|
||||
set link_color = "#7fa1d5";
|
||||
set link_hover_color = "#000000";
|
||||
|
||||
set comments_link_color = "#335288";
|
||||
set comments_link_hover = "#7fa1d5";
|
||||
|
||||
set sidebar_link_color = "#f0ef8e";
|
||||
set sidebar_link_hover = "#000000";
|
||||
|
||||
set header_footer_link_color = "#7fa1d5";
|
||||
set header_footer_link_hover = "#ffffff";
|
||||
|
||||
#NEWLAYER: flexiblesquares/machine
|
||||
layerinfo "redist_uniq" = "flexiblesquares/machine";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Machine";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#000000";
|
||||
set page_fgcolor = "#C1C1C1";
|
||||
|
||||
set content_bgcolor = "#000000";
|
||||
|
||||
set entry_bgcolor = "#000000";
|
||||
set entry_fgcolor = "#cbd3d8";
|
||||
|
||||
set border_color = "#7e8997";
|
||||
|
||||
set entrytitle_bgcolor = "#555a60";
|
||||
|
||||
set outer_table_bgcolor = "#000000";
|
||||
|
||||
set sidebar_header_bgcolor = "#555a60";
|
||||
set sidebar_fgcolor = "#C1C1C1";
|
||||
|
||||
set header_footer_bgcolor = "#000000";
|
||||
set header_footer_fgcolor = "#C1C1C1";
|
||||
|
||||
set date_fgcolor = "#C1C1C1";
|
||||
set subject_fgcolor = "#C1C1C1";
|
||||
|
||||
set link_color = "#8797a0";
|
||||
set link_hover_color = "#ffffff";
|
||||
|
||||
set comments_link_color = "#8797a0";
|
||||
set comments_link_hover = "#ffffff";
|
||||
|
||||
set sidebar_link_color = "#8797a0";
|
||||
set sidebar_link_hover = "#ffffff";
|
||||
|
||||
set header_footer_link_color = "#8797a0";
|
||||
set header_footer_link_hover = "#ffffff";
|
||||
|
||||
#NEWLAYER: flexiblesquares/pastelspring
|
||||
layerinfo "redist_uniq" = "flexiblesquares/pastelspring";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Pastel Spring";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#ffffff";
|
||||
set page_fgcolor = "#993333";
|
||||
|
||||
set content_bgcolor = "#ffffcc";
|
||||
|
||||
set entry_bgcolor = "#ffffff";
|
||||
set entry_fgcolor = "#000000";
|
||||
|
||||
set border_color = "#ebccb1";
|
||||
|
||||
set entrytitle_bgcolor = "#ebccb1";
|
||||
|
||||
set outer_table_bgcolor = "#dae3b2";
|
||||
|
||||
set sidebar_header_bgcolor = "#ebccb1";
|
||||
set sidebar_fgcolor = "#993333";
|
||||
|
||||
set header_footer_bgcolor = "#ffffff";
|
||||
set header_footer_fgcolor = "#9FA876";
|
||||
|
||||
set date_fgcolor = "#993333";
|
||||
set subject_fgcolor = "#993333";
|
||||
|
||||
set link_color = "#9d7980";
|
||||
set link_hover_color = "#000000";
|
||||
|
||||
set comments_link_color = "#993333";
|
||||
set comments_link_hover = "#ffffff";
|
||||
|
||||
set sidebar_link_color = "#9d7980";
|
||||
set sidebar_link_hover = "#9FA876";
|
||||
|
||||
set header_footer_link_color = "#9F3E3E";
|
||||
set header_footer_link_hover = "#ebccb1";
|
||||
|
||||
#NEWLAYER: flexiblesquares/pinkpunk
|
||||
layerinfo "redist_uniq" = "flexiblesquares/pinkpunk";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Pink Punk";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#000000";
|
||||
set page_fgcolor = "#cc0066";
|
||||
|
||||
set content_bgcolor = "#000000";
|
||||
|
||||
set entry_bgcolor = "#ffccff";
|
||||
set entry_fgcolor = "#000000";
|
||||
|
||||
set border_color = "#000000";
|
||||
|
||||
set entrytitle_bgcolor = "#ff6699";
|
||||
|
||||
set outer_table_bgcolor = "#cc0066";
|
||||
|
||||
|
||||
set sidebar_header_bgcolor = "#ff6699";
|
||||
set sidebar_fgcolor = "#ffccff";
|
||||
|
||||
set header_footer_bgcolor = "#ffccff";
|
||||
set header_footer_fgcolor = "#000000";
|
||||
|
||||
set date_fgcolor = "#000000";
|
||||
set subject_fgcolor = "#000000";
|
||||
|
||||
set link_color = "#6666cc";
|
||||
set link_hover_color = "#ff6699";
|
||||
|
||||
set comments_link_color = "#ffccff";
|
||||
set comments_link_hover = "#6666cc";
|
||||
|
||||
set sidebar_link_color = "#6666cc";
|
||||
set sidebar_link_hover = "#ff6699";
|
||||
|
||||
set header_footer_link_color = "#6666cc";
|
||||
set header_footer_link_hover = "#ff6699";
|
||||
|
||||
#NEWLAYER: flexiblesquares/purpleperiwinkle
|
||||
layerinfo "redist_uniq" = "flexiblesquares/purpleperiwinkle";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Purple Periwinkle";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#2f0b31";
|
||||
set page_fgcolor = "#2f0b31";
|
||||
|
||||
set content_bgcolor = "#671368";
|
||||
|
||||
set entry_bgcolor = "#f4a3e9";
|
||||
set entry_fgcolor = "#2f0b31";
|
||||
|
||||
set border_color = "#2f0b31";
|
||||
|
||||
set entrytitle_bgcolor = "#9488d8";
|
||||
|
||||
set outer_table_bgcolor = "#a13ea7";
|
||||
|
||||
set sidebar_header_bgcolor = "#9488d8";
|
||||
set sidebar_fgcolor = "#DADADA";
|
||||
|
||||
set header_footer_bgcolor = "#f4a3e9";
|
||||
set header_footer_fgcolor = "#2f0b31";
|
||||
|
||||
set date_fgcolor = "#2f0b31";
|
||||
set subject_fgcolor = "#2f0b31";
|
||||
|
||||
set link_color = "#dc039d";
|
||||
set link_hover_color = "#7e025a";
|
||||
|
||||
set comments_link_color = "#7e025a";
|
||||
set comments_link_hover = "#f4a3e9";
|
||||
|
||||
set sidebar_link_color = "#dc039d";
|
||||
set sidebar_link_hover = "#FFCCCC";
|
||||
|
||||
set header_footer_link_color = "#dc039d";
|
||||
set header_footer_link_hover = "#7e025a";
|
||||
|
||||
#NEWLAYER: flexiblesquares/grays
|
||||
layerinfo "redist_uniq" = "flexiblesquares/grays";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Grays";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#111111";
|
||||
set page_fgcolor = "#ffffff";
|
||||
|
||||
set content_bgcolor = "#333333";
|
||||
|
||||
set entry_bgcolor = "#666666";
|
||||
set entry_fgcolor = "#ffffff";
|
||||
|
||||
set border_color = "#ffffff";
|
||||
|
||||
set entrytitle_bgcolor = "#000000";
|
||||
|
||||
set outer_table_bgcolor = "#222222";
|
||||
|
||||
set sidebar_header_bgcolor = "#000000";
|
||||
set sidebar_fgcolor = "#ffffff";
|
||||
|
||||
set header_footer_bgcolor = "#666666";
|
||||
set header_footer_fgcolor = "#ffffff";
|
||||
|
||||
set date_fgcolor = "#ffffff";
|
||||
set subject_fgcolor = "#ffffff";
|
||||
|
||||
set link_color = "#ffcc33";
|
||||
set link_hover_color = "#ff9933";
|
||||
|
||||
set comments_link_color = "#ffcc33";
|
||||
set comments_link_hover = "#ff9933";
|
||||
|
||||
set sidebar_link_color = "#ffcc33";
|
||||
set sidebar_link_hover = "#ff9933";
|
||||
|
||||
set header_footer_link_color = "#ffcc33";
|
||||
set header_footer_link_hover = "#ff9933";
|
||||
|
||||
#NEWLAYER: flexiblesquares/lemongrapetang
|
||||
layerinfo "redist_uniq" = "flexiblesquares/lemongrapetang";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Lemon Grapefruit Tangerine";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#ffff66";
|
||||
set page_fgcolor = "#993333";
|
||||
|
||||
set content_bgcolor = "#cc3333";
|
||||
|
||||
set entry_bgcolor = "#ffffcc";
|
||||
set entry_fgcolor = "#000000";
|
||||
|
||||
set border_color = "#ff9999";
|
||||
|
||||
set entrytitle_bgcolor = "#ff9933";
|
||||
|
||||
set outer_table_bgcolor = "#ffcc33";
|
||||
|
||||
set sidebar_header_bgcolor = "#ff9933";
|
||||
set sidebar_fgcolor = "#000000";
|
||||
|
||||
set header_footer_bgcolor = "#ffffcc";
|
||||
set header_footer_fgcolor = "#993333";
|
||||
|
||||
set date_fgcolor = "#000000";
|
||||
set subject_fgcolor = "#000000";
|
||||
|
||||
set link_color = "#ff9999";
|
||||
set link_hover_color = "#993333";
|
||||
|
||||
set comments_link_color = "#993333";
|
||||
set comments_link_hover = "#000000";
|
||||
|
||||
set sidebar_link_color = "#ff9999";
|
||||
set sidebar_link_hover = "#000000";
|
||||
|
||||
set header_footer_link_color = "#ff9999";
|
||||
set header_footer_link_hover = "#993333";
|
||||
|
||||
#NEWLAYER: flexiblesquares/tanteal
|
||||
layerinfo "redist_uniq" = "flexiblesquares/tanteal";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Tan and Teal";
|
||||
layerinfo author_name = "sub_divided/cyrnelle";
|
||||
|
||||
set page_bgcolor = "#003333";
|
||||
set page_fgcolor = "#000000";
|
||||
|
||||
set content_bgcolor = "#cc9966";
|
||||
|
||||
set entry_bgcolor = "#ffffcc";
|
||||
set entry_fgcolor = "#000000";
|
||||
|
||||
set border_color = "#ffffff";
|
||||
|
||||
set entrytitle_bgcolor = "#996633";
|
||||
|
||||
set outer_table_bgcolor = "#ffcc99";
|
||||
|
||||
set sidebar_header_bgcolor = "#996633";
|
||||
set sidebar_fgcolor = "#000000";
|
||||
|
||||
set header_footer_bgcolor = "#ffffcc";
|
||||
set header_footer_fgcolor = "#000000";
|
||||
|
||||
set date_fgcolor = "#000000";
|
||||
set subject_fgcolor = "#000000";
|
||||
|
||||
set link_color = "#993333";
|
||||
set link_hover_color = "#603913";
|
||||
|
||||
set comments_link_color = "#ffffcc";
|
||||
set comments_link_hover = "#000000";
|
||||
|
||||
set sidebar_link_color = "#993333";
|
||||
set sidebar_link_hover = "#000000";
|
||||
|
||||
set header_footer_link_color = "#993333";
|
||||
set header_footer_link_hover = "#000000";
|
||||
|
||||
#NEWLAYER: flexiblesquares/gentledawn
|
||||
layerinfo "redist_uniq" = "flexiblesquares/gentledawn";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Gentle Dawn";
|
||||
layerinfo author_name = "Yati Mansor";
|
||||
|
||||
set page_bgcolor = "#747D86";
|
||||
set page_fgcolor = "#605734";
|
||||
|
||||
set content_bgcolor = "#FCCA7D";
|
||||
|
||||
set entry_bgcolor = "#FFD3B9";
|
||||
set entry_fgcolor = "#605734";
|
||||
|
||||
set border_color = "#908350";
|
||||
|
||||
set entrytitle_bgcolor = "#BAA969";
|
||||
|
||||
set outer_table_bgcolor = "#DABD63";
|
||||
|
||||
set sidebar_header_bgcolor = "#BAA969";
|
||||
set sidebar_fgcolor = "#605734";
|
||||
|
||||
set header_footer_bgcolor = "#FFD3B9";
|
||||
set header_footer_fgcolor = "#605734";
|
||||
|
||||
|
||||
set link_color = "#7E858D";
|
||||
set link_hover_color = "#C68DA5";
|
||||
|
||||
set comments_link_color = "#FFFFFF";
|
||||
set comments_link_hover = "#605734";
|
||||
|
||||
set sidebar_link_color = "#7E858D";
|
||||
set sidebar_link_hover = "#C68DA5";
|
||||
|
||||
set header_footer_link_color = "#7E858D";
|
||||
set header_footer_link_hover = "#C68DA5";
|
||||
|
||||
#NEWLAYER: flexiblesquares/icyblue
|
||||
layerinfo "redist_uniq" = "flexiblesquares/icyblue";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Icy Blue";
|
||||
layerinfo author_name = "Yati Mansor";
|
||||
|
||||
set page_bgcolor = "#C6C2F8";
|
||||
set page_fgcolor = "#4F4D65";
|
||||
|
||||
set content_bgcolor = "#D3DCFC";
|
||||
|
||||
set entry_bgcolor = "#DDEFFF";
|
||||
set entry_fgcolor = "#4F4D65";
|
||||
|
||||
set border_color = "#FFFFFF";
|
||||
|
||||
set entrytitle_bgcolor = "#FFFFFF";
|
||||
set date_fgcolor = "#4F4D65";
|
||||
set subject_fgcolor = "#4F4D65";
|
||||
|
||||
|
||||
set outer_table_bgcolor = "#CED2FA";
|
||||
|
||||
set sidebar_header_bgcolor = "#FFFFFF";
|
||||
set sidebar_fgcolor = "#4F4D65";
|
||||
|
||||
set header_footer_bgcolor = "#FFFFFF";
|
||||
set header_footer_fgcolor = "#4F4D65";
|
||||
|
||||
|
||||
set link_color = "#5DABAA";
|
||||
set link_hover_color = "#779595";
|
||||
|
||||
set comments_link_color = "#5DABAA";
|
||||
set comments_link_hover = "#779595";
|
||||
|
||||
set sidebar_link_color = "#5DABAA";
|
||||
set sidebar_link_hover = "#779595";
|
||||
|
||||
set header_footer_link_color = "#5DABAA";
|
||||
set header_footer_link_hover = "#779595";
|
||||
|
||||
#NEWLAYER: flexiblesquares/chocolatemilkshake
|
||||
layerinfo "redist_uniq" = "flexiblesquares/chocolatemilkshake";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Chocolate Milkshake";
|
||||
layerinfo author_name = "Yati Mansor";
|
||||
|
||||
set page_bgcolor = "#746E4A";
|
||||
set page_fgcolor = "#000000";
|
||||
|
||||
set content_bgcolor = "#BEA16D";
|
||||
|
||||
set entry_bgcolor = "#ECD6B2";
|
||||
set entry_fgcolor = "#000000";
|
||||
|
||||
set border_color = "#FFFFFF";
|
||||
|
||||
set entrytitle_bgcolor = "#867A52";
|
||||
set date_fgcolor = "#000000";
|
||||
set subject_fgcolor = "#000000";
|
||||
|
||||
|
||||
set outer_table_bgcolor = "#A18D5F";
|
||||
|
||||
set sidebar_header_bgcolor = "#867A52";
|
||||
set sidebar_fgcolor = "#000000";
|
||||
|
||||
set header_footer_bgcolor = "#ECD6B2";
|
||||
set header_footer_fgcolor = "#000000";
|
||||
|
||||
|
||||
set link_color = "#867A52";
|
||||
set link_hover_color = "#790000";
|
||||
|
||||
set comments_link_color = "#ECD6B2";
|
||||
set comments_link_hover = "#790000";
|
||||
|
||||
set sidebar_link_color = "#790000";
|
||||
set sidebar_link_hover = "#ECD6B2";
|
||||
|
||||
set header_footer_link_color = "#867A52";
|
||||
set header_footer_link_hover = "#790000";
|
||||
|
||||
|
||||
|
||||
#NEWLAYER: flexiblesquares/eclipse
|
||||
layerinfo "redist_uniq" = "flexiblesquares/eclipse";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Eclipse";
|
||||
layerinfo author_name = "Yati Mansor";
|
||||
|
||||
set page_bgcolor = "#000000";
|
||||
set page_fgcolor = "#000000";
|
||||
|
||||
set content_bgcolor = "#EEA802";
|
||||
|
||||
set entry_bgcolor = "#FBE274";
|
||||
set entry_fgcolor = "#000000";
|
||||
|
||||
set border_color = "#000000";
|
||||
|
||||
set entrytitle_bgcolor = "#CA5D00";
|
||||
set date_fgcolor = "#000000";
|
||||
set subject_fgcolor = "#000000";
|
||||
|
||||
|
||||
set outer_table_bgcolor = "#921800";
|
||||
|
||||
set sidebar_header_bgcolor = "#CA5D00";
|
||||
set sidebar_fgcolor = "#000000";
|
||||
|
||||
set header_footer_bgcolor = "#EEA802";
|
||||
set header_footer_fgcolor = "#000000";
|
||||
|
||||
|
||||
set link_color = "#790000";
|
||||
set link_hover_color = "#000000";
|
||||
|
||||
set comments_link_color = "#ECD6B2";
|
||||
set comments_link_hover = "#790000";
|
||||
|
||||
set sidebar_link_color = "#790000";
|
||||
set sidebar_link_hover = "#ffffff";
|
||||
|
||||
set header_footer_link_color = "#790000";
|
||||
set header_footer_link_hover = "#ffffff";
|
||||
1690
ljcom/bin/upgrading/s2layers/nebula/layout.s2
Normal file
1690
ljcom/bin/upgrading/s2layers/nebula/layout.s2
Normal file
File diff suppressed because it is too large
Load Diff
269
ljcom/bin/upgrading/s2layers/nebula/themes.s2
Normal file
269
ljcom/bin/upgrading/s2layers/nebula/themes.s2
Normal file
@@ -0,0 +1,269 @@
|
||||
#NEWLAYER: nebula/ohblue
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Oh blue";
|
||||
layerinfo "redist_uniq" = "nebula/ohblue";
|
||||
|
||||
set col_entry_bg = "#44366d";
|
||||
set col_stronger_fg = "#1b0c66";
|
||||
set col_cmtbarscrn_bg = "#ffffff";
|
||||
set col_cmtbarone_bg = "#9f9cfd";
|
||||
set col_neutral_fg = "#2f2e55";
|
||||
set col_cmtbartwo_bg = "#adb3e5";
|
||||
set col_sidebar_link = "#2f2e55";
|
||||
set col_weaker_bg = "#d9dcff";
|
||||
set col_strong_fg = "#2f2e55";
|
||||
set col_neutral_bg = "#ab5c90";
|
||||
set col_cmtbarscrn_fg = "#1b0c66";
|
||||
set col_stronger_bg = "#b8bef8";
|
||||
set col_cmtbartwo_fg = "#000000";
|
||||
set col_weak_bg = "#404380";
|
||||
set col_cmtbarone_fg = "#000000";
|
||||
set col_weaker_fg = "#04025a";
|
||||
set col_entry_link = "#000000";
|
||||
set col_entry_vlink = "#000000";
|
||||
set col_strong_bg = "#7e7cb1";
|
||||
set col_weak_fg = "#9ba2e8";
|
||||
set col_sidebar_vlink = "#1f1d46";
|
||||
|
||||
#NEWLAYER: nebula/ohgreen
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Oh green";
|
||||
layerinfo "redist_uniq" = "nebula/ohgreen";
|
||||
|
||||
set col_entry_bg = "#4ca65b";
|
||||
set col_stronger_fg = "#12661a";
|
||||
set col_cmtbarscrn_bg = "#ffffff";
|
||||
set col_cmtbarone_bg = "#bffdbe";
|
||||
set col_neutral_fg = "#12661a";
|
||||
set col_cmtbartwo_bg = "#72e580";
|
||||
set col_sidebar_link = "#12661a";
|
||||
set col_weaker_bg = "#0d6315";
|
||||
set col_strong_fg = "#12661a";
|
||||
set col_neutral_bg = "#000000";
|
||||
set col_cmtbarscrn_fg = "#000000";
|
||||
set col_stronger_bg = "#9df89f";
|
||||
set col_cmtbartwo_fg = "#000000";
|
||||
set col_weak_bg = "#08390b";
|
||||
set col_cmtbarone_fg = "#000000";
|
||||
set col_weaker_fg = "#0e2a05";
|
||||
set col_entry_link = "#000000";
|
||||
set col_entry_vlink = "#000000";
|
||||
set col_strong_bg = "#4f9f58";
|
||||
set col_weak_fg = "#08390b";
|
||||
set col_sidebar_vlink = "#12661a";
|
||||
|
||||
#NEWLAYER: nebula/ohpurple
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Oh purple";
|
||||
layerinfo "redist_uniq" = "nebula/ohpurple";
|
||||
|
||||
set col_cmtbartwo_bg = "#D89EE5";
|
||||
set col_cmtbarscrn_fg = "#000000";
|
||||
set col_entry_bg = "#eebfed";
|
||||
set col_weaker_bg = "#eebfed";
|
||||
set col_stronger_bg = "#efd5f8";
|
||||
set col_cmtbartwo_fg = "#000000";
|
||||
set col_sidebar_link = "#592b7d";
|
||||
set col_strong_bg = "#9c6e9f";
|
||||
set col_cmtbarone_bg = "#EECCFD";
|
||||
set col_stronger_fg = "#c459d1";
|
||||
set col_weaker_fg = "#0e2a05";
|
||||
set col_entry_link = "#000000";
|
||||
set col_entry_vlink = "#000000";
|
||||
set col_sidebar_vlink = "#2d1e41";
|
||||
set col_strong_fg = "#614a62";
|
||||
set col_weak_bg = "#614a62";
|
||||
set col_neutral_bg = "#000000";
|
||||
set col_cmtbarone_fg = "#000000";
|
||||
set col_cmtbarscrn_bg = "#ffffff";
|
||||
set col_weak_fg = "#a1319a";
|
||||
set col_neutral_fg = "#614a62";
|
||||
|
||||
#NEWLAYER: nebula/ohblack
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Oh black";
|
||||
layerinfo "redist_uniq" = "nebula/ohblack";
|
||||
|
||||
set col_cmtbartwo_bg = "#ffffff";
|
||||
set col_cmtbarscrn_fg = "#000000";
|
||||
set col_entry_bg = "#ffffff";
|
||||
set col_weaker_bg = "#ffffff";
|
||||
set col_stronger_bg = "#ffffff";
|
||||
set col_cmtbartwo_fg = "#000000";
|
||||
set col_sidebar_link = "#606060";
|
||||
set col_strong_bg = "#ffffff";
|
||||
set col_cmtbarone_bg = "#ffffff";
|
||||
set col_stronger_fg = "#000000";
|
||||
set col_weaker_fg = "#000000";
|
||||
set col_entry_link = "#606060";
|
||||
set col_entry_vlink = "#606060";
|
||||
set col_sidebar_vlink = "#606060";
|
||||
set col_strong_fg = "#000000";
|
||||
set col_weak_bg = "#ffffff";
|
||||
set col_neutral_bg = "#ffffff";
|
||||
set col_cmtbarone_fg = "#000000";
|
||||
set col_cmtbarscrn_bg = "#ffffff";
|
||||
set col_weak_fg = "#000000";
|
||||
set col_neutral_fg = "#000000";
|
||||
|
||||
#NEWLAYER: nebula/ohcontrast
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Oh contrast";
|
||||
layerinfo "redist_uniq" = "nebula/ohcontrast";
|
||||
|
||||
set col_cmtbartwo_bg = "#000000";
|
||||
set col_cmtbarscrn_fg = "#ffffff";
|
||||
set col_entry_bg = "#000000";
|
||||
set col_weaker_bg = "#000000";
|
||||
set col_stronger_bg = "#000000";
|
||||
set col_cmtbartwo_fg = "#ffffff";
|
||||
set col_sidebar_link = "#c0c0c0";
|
||||
set col_strong_bg = "#000000";
|
||||
set col_cmtbarone_bg = "#000000";
|
||||
set col_stronger_fg = "#ffffff";
|
||||
set col_weaker_fg = "#000000";
|
||||
set col_entry_link = "#c0c0c0";
|
||||
set col_entry_vlink = "#c0c0c0";
|
||||
set col_sidebar_vlink = "#c0c0c0";
|
||||
set col_strong_fg = "#ffffff";
|
||||
set col_weak_bg = "#000000";
|
||||
set col_neutral_bg = "#000000";
|
||||
set col_cmtbarone_fg = "#ffffff";
|
||||
set col_cmtbarscrn_bg = "#000000";
|
||||
set col_weak_fg = "#ffffff";
|
||||
set col_neutral_fg = "#ffffff";
|
||||
|
||||
#NEWLAYER: nebula/ohbedtime
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Oh bed time";
|
||||
layerinfo "redist_uniq" = "nebula/ohbedtime";
|
||||
|
||||
set col_cmtbartwo_bg = "#5c60b6";
|
||||
set col_cmtbarscrn_fg = "#ffffff";
|
||||
set col_entry_bg = "#ffffff";
|
||||
set col_weaker_bg = "#5e5b7d";
|
||||
set col_stronger_bg = "#8381da";
|
||||
set col_cmtbartwo_fg = "#ffffff";
|
||||
set col_sidebar_link = "#000000";
|
||||
set col_strong_bg = "#8381da";
|
||||
set col_cmtbarone_bg = "#605f9a";
|
||||
set col_stronger_fg = "#ffffff";
|
||||
set col_weaker_fg = "#000000";
|
||||
set col_entry_link = "#000000";
|
||||
set col_entry_vlink = "#000000";
|
||||
set col_sidebar_vlink = "#000000";
|
||||
set col_strong_fg = "#ffffff";
|
||||
set col_weak_bg = "#ffffff";
|
||||
set col_neutral_bg = "#000000";
|
||||
set col_cmtbarone_fg = "#ffffff";
|
||||
set col_cmtbarscrn_bg = "#879afa";
|
||||
set col_weak_fg = "#3c3c60";
|
||||
set col_neutral_fg = "#080255";
|
||||
|
||||
#NEWLAYER: nebula/ohgreenywhite
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Oh greeny white";
|
||||
layerinfo "redist_uniq" = "nebula/ohgreenywhite";
|
||||
|
||||
set col_entry_bg = "#ffffff";
|
||||
set col_stronger_fg = "#ffffff";
|
||||
set col_cmtbarscrn_bg = "#93f390";
|
||||
set col_cmtbarone_bg = "#7fe278";
|
||||
set col_neutral_fg = "#550301";
|
||||
set col_cmtbartwo_bg = "#4a8f41";
|
||||
set col_sidebar_link = "#000000";
|
||||
set col_weaker_bg = "#546847";
|
||||
set col_strong_fg = "#ffffff";
|
||||
set col_neutral_bg = "#000000";
|
||||
set col_cmtbarscrn_fg = "#ffffff";
|
||||
set col_stronger_bg = "#69ac59";
|
||||
set col_cmtbartwo_fg = "#ffffff";
|
||||
set col_weak_bg = "#ffffff";
|
||||
set col_cmtbarone_fg = "#ffffff";
|
||||
set col_weaker_fg = "#000000";
|
||||
set col_entry_link = "#000000";
|
||||
set col_entry_vlink = "#000000";
|
||||
set col_strong_bg = "#69ac59";
|
||||
set col_weak_fg = "#366030";
|
||||
set col_sidebar_vlink = "#000000";
|
||||
|
||||
#NEWLAYER: nebula/ohchocchip
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Oh choc chip";
|
||||
layerinfo "redist_uniq" = "nebula/ohchocchip";
|
||||
|
||||
set col_cmtbartwo_bg = "#4A8F41";
|
||||
set col_cmtbarscrn_fg = "#ffffff";
|
||||
set col_entry_bg = "#977e3b";
|
||||
set col_weaker_bg = "#546847";
|
||||
set col_stronger_bg = "#69ac59";
|
||||
set col_cmtbartwo_fg = "#ffffff";
|
||||
set col_sidebar_link = "#000000";
|
||||
set col_strong_bg = "#69ac59";
|
||||
set col_cmtbarone_bg = "#7FE278";
|
||||
set col_stronger_fg = "#5b4b26";
|
||||
set col_weaker_fg = "#000000";
|
||||
set col_entry_link = "#000000";
|
||||
set col_entry_vlink = "#000000";
|
||||
set col_sidebar_vlink = "#000000";
|
||||
set col_strong_fg = "#5b4b26";
|
||||
set col_weak_bg = "#5b4b26";
|
||||
set col_neutral_bg = "#000000";
|
||||
set col_cmtbarone_fg = "#ffffff";
|
||||
set col_cmtbarscrn_bg = "#93F390";
|
||||
set col_weak_fg = "#ffffff";
|
||||
set col_neutral_fg = "#550301";
|
||||
|
||||
#NEWLAYER: nebula/ohcoffee
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Oh coffee";
|
||||
layerinfo "redist_uniq" = "nebula/ohcoffee";
|
||||
|
||||
set col_cmtbartwo_bg = "#AFB13E";
|
||||
set col_cmtbarscrn_fg = "#ffffff";
|
||||
set col_entry_bg = "#977e3b";
|
||||
set col_weaker_bg = "#effe8f";
|
||||
set col_stronger_bg = "#fbe46a";
|
||||
set col_cmtbartwo_fg = "#ffffff";
|
||||
set col_sidebar_link = "#000000";
|
||||
set col_strong_bg = "#fbe46a";
|
||||
set col_cmtbarone_bg = "#E2C956";
|
||||
set col_stronger_fg = "#5b4b26";
|
||||
set col_weaker_fg = "#000000";
|
||||
set col_entry_link = "#000000";
|
||||
set col_entry_vlink = "#000000";
|
||||
set col_sidebar_vlink = "#000000";
|
||||
set col_strong_fg = "#5b4b26";
|
||||
set col_weak_bg = "#5b4b26";
|
||||
set col_neutral_bg = "#000000";
|
||||
set col_cmtbarone_fg = "#ffffff";
|
||||
set col_cmtbarscrn_bg = "#FCDA3E";
|
||||
set col_weak_fg = "#ffffff";
|
||||
set col_neutral_fg = "#550301";
|
||||
|
||||
#NEWLAYER: nebula/ohred
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Oh red";
|
||||
layerinfo "redist_uniq" = "nebula/ohred";
|
||||
|
||||
set col_cmtbartwo_bg = "#983035";
|
||||
set col_cmtbarscrn_fg = "#ffffff";
|
||||
set col_entry_bg = "#d90d12";
|
||||
set col_weaker_bg = "#fe0410";
|
||||
set col_stronger_bg = "#dd6568";
|
||||
set col_cmtbartwo_fg = "#ffffff";
|
||||
set col_sidebar_link = "#000000";
|
||||
set col_strong_bg = "#dd6568";
|
||||
set col_cmtbarone_bg = "#d25c64";
|
||||
set col_stronger_fg = "#ffffff";
|
||||
set col_weaker_fg = "#000000";
|
||||
set col_entry_link = "#000000";
|
||||
set col_entry_vlink = "#000000";
|
||||
set col_sidebar_vlink = "#000000";
|
||||
set col_strong_fg = "#ffffff";
|
||||
set col_weak_bg = "#bc0811";
|
||||
set col_neutral_bg = "#000000";
|
||||
set col_cmtbarone_fg = "#ffffff";
|
||||
set col_cmtbarscrn_bg = "#D38086";
|
||||
set col_weak_fg = "#ffffff";
|
||||
set col_neutral_fg = "#550301";
|
||||
1625
ljcom/bin/upgrading/s2layers/opal/layout.s2
Normal file
1625
ljcom/bin/upgrading/s2layers/opal/layout.s2
Normal file
File diff suppressed because it is too large
Load Diff
BIN
ljcom/bin/upgrading/s2layers/opal/opal.jpg
Normal file
BIN
ljcom/bin/upgrading/s2layers/opal/opal.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
105
ljcom/bin/upgrading/s2layers/opal/themes.s2
Normal file
105
ljcom/bin/upgrading/s2layers/opal/themes.s2
Normal file
@@ -0,0 +1,105 @@
|
||||
#NEWLAYER: opal/irishluck
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "The Luck of the Irish";
|
||||
layerinfo redist_uniq = "opal/irishluck";
|
||||
layerinfo "source_viewable" = 1;
|
||||
set color_med = "#8BA485";
|
||||
set color_fg_font = "#01331E";
|
||||
set color_fg = "#A1CB78";
|
||||
set color_med_font = "#E5FCDE";
|
||||
set color_bg = "#0B4107";
|
||||
|
||||
#NEWLAYER: opal/undersea
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo redist_uniq = "opal/undersea";
|
||||
layerinfo "source_viewable" = 1;
|
||||
layerinfo "name" = "Under the Sea";
|
||||
set color_med = "#98A3A4";
|
||||
set color_fg = "#93CBCA";
|
||||
set color_med_font = "#526160";
|
||||
set color_bg = "#124D51";
|
||||
|
||||
#NEWLAYER: opal/forest
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo redist_uniq = "opal/forest";
|
||||
layerinfo "source_viewable" = 1;
|
||||
layerinfo "name" = "Natural Forest";
|
||||
set color_link = "#4C6502";
|
||||
set color_med = "#90a47a";
|
||||
set color_bg_font = "#ffeabf";
|
||||
set color_fg = "#cacba9";
|
||||
set color_med_font = "#eaf2cc";
|
||||
set color_bg = "#514541";
|
||||
set color_visited = "#846D06";
|
||||
|
||||
#NEWLAYER: opal/greybeard
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo redist_uniq = "opal/greybeard";
|
||||
layerinfo "source_viewable" = 1;
|
||||
layerinfo "name" = "Greybeard";
|
||||
set color_link = "#05445C";
|
||||
set color_med = "#6a6a6a";
|
||||
set color_fg_font = "#dddddd";
|
||||
set color_bg = "#424242";
|
||||
set color_visited = "#390856";
|
||||
set color_fg = "#7c7c7c";
|
||||
set color_med_font = "#E2E2E2";
|
||||
|
||||
#NEWLAYER: opal/desert
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo redist_uniq = "opal/desert";
|
||||
layerinfo "source_viewable" = 1;
|
||||
layerinfo "name" = "Spring Desert";
|
||||
set color_link = "#4c6502";
|
||||
set color_med = "#bc7f48";
|
||||
set color_fg_font = "#794234";
|
||||
set color_fg = "#cea36f";
|
||||
set color_med_font = "#F2E6C8";
|
||||
set color_bg = "#795021";
|
||||
|
||||
|
||||
#NEWLAYER: opal/carnvial
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo redist_uniq = "opal/carnvial";
|
||||
layerinfo "source_viewable" = 1;
|
||||
layerinfo "name" = "Carnvial";
|
||||
set color_med = "#9681b7";
|
||||
set color_fg = "#E9973F";
|
||||
set color_bg = "#2d4b9b";
|
||||
|
||||
#NEWLAYER: opal/snowcone
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo redist_uniq = "opal/snowcone";
|
||||
layerinfo "source_viewable" = 1;
|
||||
layerinfo "name" = "Snow Cone";
|
||||
set color_med = "#7c9bc1";
|
||||
set color_fg_font = "#4F6C9C";
|
||||
set color_fg = "#bfe2f8";
|
||||
set color_bg = "#8d54a0";
|
||||
|
||||
#NEWLAYER: opal/adobeclay
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo redist_uniq = "opal/adobeclay";
|
||||
layerinfo "source_viewable" = 1;
|
||||
layerinfo "name" = "Adobe Clay";
|
||||
set color_link = "#FF9422";
|
||||
set color_med = "#a4562b";
|
||||
set color_fg_font = "#33100b";
|
||||
set color_fg = "#c1643b";
|
||||
set color_med_font = "#fce7d5";
|
||||
set color_bg = "#7b4832";
|
||||
set color_visited = "#FFC437";
|
||||
|
||||
#NEWLAYER: opal/gentle
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo redist_uniq = "opal/gentle";
|
||||
layerinfo "source_viewable" = 1;
|
||||
layerinfo "name" = "Gentle";
|
||||
set color_bg_font = "#616568";
|
||||
set color_fg = "#ebdbd0";
|
||||
set color_visited = "#A97F63";
|
||||
set color_link = "#bd9a82";
|
||||
set color_med = "#b3c5c5";
|
||||
set color_bg = "#a2b2b1";
|
||||
set color_med_font = "#878894";
|
||||
set color_fg_font = "#757575";
|
||||
2285
ljcom/bin/upgrading/s2layers/smoothsailing/layout.s2
Normal file
2285
ljcom/bin/upgrading/s2layers/smoothsailing/layout.s2
Normal file
File diff suppressed because it is too large
Load Diff
612
ljcom/bin/upgrading/s2layers/smoothsailing/themes.s2
Normal file
612
ljcom/bin/upgrading/s2layers/smoothsailing/themes.s2
Normal file
@@ -0,0 +1,612 @@
|
||||
#NEWLAYER: smoothsailing/starry
|
||||
layerinfo "redist_uniq" = "smoothsailing/starry";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Starry Night";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#000000";
|
||||
set color_header_title_text = "#FFFFB9";
|
||||
set color_header_subtitle_text = "#dddddd";
|
||||
set color_header_menubar_background = "#000044";
|
||||
set color_header_menubar_text = "#FFFFB9";
|
||||
set color_header_menubar_background_hover = "#000000";
|
||||
set color_header_menubar_text_hover = "#dddddd";
|
||||
set color_header_borders = "#89a2be";
|
||||
|
||||
set color_body_links = "#ffffb9";
|
||||
set color_body_links_visited = "#dddddd";
|
||||
set color_body_titlebar_background = "#aaaaaa";
|
||||
set color_body_titlebar_text = "#000044";
|
||||
set color_body_footer_background = "#000000";
|
||||
set color_body_footer_text = "#ffffb9";
|
||||
set color_body_background = "#000044";
|
||||
set color_body_text = "#FFFFB9";
|
||||
|
||||
set color_body_entrytitle_background = "#000000";
|
||||
set color_body_entrytitle_background_alternate = "#aaaaaa";
|
||||
set color_body_entrytitle_border = "#89A2BE";
|
||||
set color_body_entrytitle_text = "#89a2be";
|
||||
set color_body_entrytitle_links = "#89a2be";
|
||||
set color_body_entry_background = "#000044";
|
||||
set color_body_entry_userinfo_background = "#000044";
|
||||
set color_body_entry_text = "#FFFFB9";
|
||||
|
||||
set color_month_borders = "#89A2BE";
|
||||
set color_month_title_background = "#aaaaaa";
|
||||
set color_month_title_text = "#000000";
|
||||
set color_month_dates = "#aaaaaa";
|
||||
set color_month_postcount = "#FFFFB9";
|
||||
|
||||
|
||||
|
||||
#NEWLAYER: smoothsailing/pink
|
||||
layerinfo "redist_uniq" = "smoothsailing/pink";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Pretty in Pink";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#CC4E5C";
|
||||
set color_header_title_text = "#FFEEFF";
|
||||
set color_header_subtitle_text = "#FFB6C1";
|
||||
set color_header_menubar_background = "#e6828f";
|
||||
set color_header_menubar_text = "#FFEEFF";
|
||||
set color_header_menubar_background_hover = "#CC4E5C";
|
||||
set color_header_menubar_text_hover = "#FFEEFF";
|
||||
set color_header_borders = "#FFEEFF";
|
||||
|
||||
set color_body_links = "#CC4E5C";
|
||||
set color_body_links_visited = "#CC4E5C";
|
||||
set color_body_titlebar_background = "#FFB6C1";
|
||||
set color_body_titlebar_text = "#CC4E5C";
|
||||
set color_body_footer_background = "#FFB6C1";
|
||||
set color_body_footer_text = "#CC4E5C";
|
||||
set color_body_background = "#FFEEFF";
|
||||
set color_body_text = "#CC4E5C";
|
||||
set color_body_entrytitle_background = "#FFB6C1";
|
||||
set color_body_entrytitle_background_alternate = "#e6828f";
|
||||
set color_body_entrytitle_border = "#CC4E5C";
|
||||
set color_body_entrytitle_text = "#CC4E5C";
|
||||
set color_body_entrytitle_links = "#CC4E5C";
|
||||
set color_body_entry_text = "#CC4E5C";
|
||||
set color_body_entry_background = "#FFEEFF";
|
||||
set color_body_entry_userinfo_background = "#FFEEFF";
|
||||
|
||||
set color_month_borders = "#CC4E5C";
|
||||
set color_month_title_background = "#FFB6C1";
|
||||
set color_month_title_text = "#CC4E5C";
|
||||
set color_month_dates = "#CC4E5C";
|
||||
set color_month_postcount = "#e6828f";
|
||||
|
||||
|
||||
|
||||
|
||||
#NEWLAYER: smoothsailing/easter
|
||||
layerinfo "redist_uniq" = "smoothsailing/easter";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Easter Basket";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#00B789";
|
||||
set color_header_title_text = "#FFFF82";
|
||||
set color_header_subtitle_text = "#005100";
|
||||
set color_header_menubar_background = "#FFFF82";
|
||||
set color_header_menubar_text = "#005100";
|
||||
set color_header_menubar_background_hover = "#C7A0CB";
|
||||
set color_header_menubar_text_hover = "#005100";
|
||||
set color_header_borders = "#009300";
|
||||
|
||||
set color_body_links = "#005100";
|
||||
set color_body_links_visited = "#005100";
|
||||
set color_body_titlebar_background = "#C7A0CB";
|
||||
set color_body_titlebar_text = "#005100";
|
||||
set color_body_footer_background = "#C7A0CB";
|
||||
set color_body_footer_text = "#005100";
|
||||
set color_body_background = "#DDDFF0";
|
||||
set color_body_text = "#005100";
|
||||
set color_body_entrytitle_background = "#FFFF82";
|
||||
set color_body_entrytitle_background_alternate = "#C7A0CB";
|
||||
set color_body_entrytitle_border = "#009300";
|
||||
set color_body_entrytitle_text = "#005100";
|
||||
set color_body_entrytitle_links = "#005100";
|
||||
set color_body_entry_text = "#005100";
|
||||
set color_body_entry_background = "#DDDFF0";
|
||||
set color_body_entry_userinfo_background = "#DDDFF0";
|
||||
|
||||
set color_month_borders = "#00B789";
|
||||
set color_month_title_background = "#FFFF82";
|
||||
set color_month_title_text = "#005100";
|
||||
set color_month_dates = "#C7A0CB";
|
||||
set color_month_postcount = "#005100";
|
||||
|
||||
|
||||
|
||||
|
||||
#NEWLAYER: smoothsailing/mocha
|
||||
layerinfo "redist_uniq" = "smoothsailing/mocha";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Mochachino";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#666666";
|
||||
set color_header_title_text = "#e6e6e6";
|
||||
set color_header_subtitle_text = "#B1A68B";
|
||||
set color_header_menubar_background = "#635a48";
|
||||
set color_header_menubar_text = "#b1a68b";
|
||||
set color_header_menubar_background_hover = "#b1a68b";
|
||||
set color_header_menubar_text_hover = "#666666";
|
||||
set color_header_borders = "#e6e6e6";
|
||||
|
||||
set color_body_links = "#464640";
|
||||
set color_body_links_visited = "#000000";
|
||||
set color_body_titlebar_background = "#B1A68B";
|
||||
set color_body_titlebar_text = "#e6e6e6";
|
||||
set color_body_footer_background = "#b1a68b";
|
||||
set color_body_footer_text = "#e6e6e6";
|
||||
set color_body_background = "#e6e6e6";
|
||||
set color_body_entrytitle_background = "#b1a68b";
|
||||
set color_body_entrytitle_background_alternate = "#796D51";
|
||||
set color_body_entrytitle_border = "#666666";
|
||||
set color_body_entrytitle_text = "#e6e6e6";
|
||||
set color_body_entrytitle_links = "#e6e6e6";
|
||||
set color_body_entry_text = "#464640";
|
||||
set color_body_entry_background = "#e6e6e6";
|
||||
set color_body_entry_userinfo_background = "#e6e6e6";
|
||||
|
||||
set color_month_borders = "#666666";
|
||||
set color_month_title_background = "#e6e6e6";
|
||||
set color_month_title_text = "#464640";
|
||||
set color_month_dates = "#464640";
|
||||
set color_month_postcount = "#796D51";
|
||||
|
||||
#NEWLAYER: smoothsailing/yellow
|
||||
layerinfo "redist_uniq" = "smoothsailing/yellow";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Insane Yellow";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#202020";
|
||||
set color_header_title_text = "#FFFF04";
|
||||
set color_header_subtitle_text = "#dddddd";
|
||||
set color_header_menubar_background = "#000000";
|
||||
set color_header_menubar_text = "#FFFFB9";
|
||||
set color_header_menubar_background_hover = "#202020";
|
||||
set color_header_menubar_text_hover = "#FFFFB9";
|
||||
set color_header_borders = "#FFFF04";
|
||||
|
||||
set color_body_links = "#aaaaaa";
|
||||
set color_body_links_visited = "#dddddd";
|
||||
set color_body_titlebar_background = "#aaaaaa";
|
||||
set color_body_titlebar_text = "#000000";
|
||||
set color_body_footer_background = "#202020";
|
||||
set color_body_footer_text = "#ffffb9";
|
||||
set color_body_background = "#000000";
|
||||
set color_body_text = "#FFFFB9";
|
||||
|
||||
set color_body_entrytitle_background = "#202020";
|
||||
set color_body_entrytitle_background_alternate = "#aaaaaa";
|
||||
set color_body_entrytitle_border = "#FFFF04";
|
||||
set color_body_entrytitle_text = "#FFFF04";
|
||||
set color_body_entrytitle_links = "#FFFF04";
|
||||
set color_body_entry_background = "#000000";
|
||||
set color_body_entry_userinfo_background = "#000000";
|
||||
set color_body_entry_text = "#aaaaaa";
|
||||
|
||||
set color_month_borders = "#FFFFB9";
|
||||
set color_month_title_background = "#aaaaaa";
|
||||
set color_month_title_text = "#000000";
|
||||
set color_month_dates = "#aaaaaa";
|
||||
set color_month_postcount = "#FFFFB9";
|
||||
|
||||
|
||||
#NEWLAYER: smoothsailing/forest
|
||||
layerinfo "redist_uniq" = "smoothsailing/forest";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "In the Forest";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#635a48";
|
||||
set color_header_title_text = "#e7dfcf";
|
||||
set color_header_subtitle_text = "#607c6d";
|
||||
set color_header_menubar_background = "#899ba3";
|
||||
set color_header_menubar_text = "#464640";
|
||||
set color_header_menubar_background_hover = "#e7dfcf";
|
||||
set color_header_menubar_text_hover = "#464640";
|
||||
set color_header_borders = "#464640";
|
||||
|
||||
set color_body_links = "#e7dfcf";
|
||||
set color_body_links_visited = "#e7dfcf";
|
||||
set color_body_titlebar_background = "#e7dfcf";
|
||||
set color_body_titlebar_text = "#464640";
|
||||
set color_body_footer_background = "#e7dfcf";
|
||||
set color_body_footer_text = "#464640";
|
||||
set color_body_background = "#607c6d";
|
||||
set color_body_text = "#e7dfcf";
|
||||
|
||||
set color_body_entrytitle_background = "#635a48";
|
||||
set color_body_entrytitle_background_alternate = "#464640";
|
||||
set color_body_entrytitle_border = "#e7dfcf";
|
||||
set color_body_entrytitle_text = "#e7dfcf";
|
||||
set color_body_entrytitle_links = "#e7dfcf";
|
||||
set color_body_entry_userinfo_background = "#626b5b";
|
||||
set color_body_entry_background = "#626b5b";
|
||||
set color_body_entry_text = "#e7dfcf";
|
||||
|
||||
set color_month_borders = "#464640";
|
||||
set color_month_title_background = "#e7dfcf";
|
||||
set color_month_title_text = "#464640";
|
||||
set color_month_dates = "#899ba3";
|
||||
set color_month_postcount = "#e7dfcf";
|
||||
|
||||
|
||||
|
||||
#NEWLAYER: smoothsailing/red
|
||||
layerinfo "redist_uniq" = "smoothsailing/red";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Seeing Red";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#bb0000";
|
||||
set color_header_title_text = "#ffffff";
|
||||
set color_header_subtitle_text = "#ffffff";
|
||||
set color_header_menubar_background = "#880000";
|
||||
set color_header_menubar_text = "#ffffff";
|
||||
set color_header_menubar_background_hover = "#ffffff";
|
||||
set color_header_menubar_text_hover = "#bb0000";
|
||||
set color_header_borders = "#ffffff";
|
||||
set color_body_links = "#880000";
|
||||
set color_body_links_visited = "#000000";
|
||||
set color_body_titlebar_background = "#bb0000";
|
||||
set color_body_titlebar_text = "#ffffff";
|
||||
set color_body_footer_background = "#bb0000";
|
||||
set color_body_footer_text = "#ffffff";
|
||||
set color_body_background = "#f6f6f6";
|
||||
set color_body_text = "#880000";
|
||||
set color_body_entrytitle_background = "#bb0000";
|
||||
set color_body_entrytitle_background_alternate = "#880000";
|
||||
set color_body_entrytitle_border = "#000000";
|
||||
set color_body_entrytitle_text = "#ffffff";
|
||||
set color_body_entrytitle_links = "#ffffff";
|
||||
set color_body_entry_background = "#f6f6f6";
|
||||
set color_body_entry_text = "#880000";
|
||||
set color_month_borders = "#880000";
|
||||
set color_month_title_background = "#bb0000";
|
||||
set color_month_title_text = "#ffffff";
|
||||
set color_month_dates = "#880000";
|
||||
set color_month_postcount = "#bb0000";
|
||||
|
||||
|
||||
|
||||
#NEWLAYER: smoothsailing/army
|
||||
layerinfo "redist_uniq" = "smoothsailing/army";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Army Attire";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#444444";
|
||||
set color_header_title_text = "#cccc99";
|
||||
set color_header_subtitle_text = "#e6e6e6";
|
||||
set color_header_menubar_background = "#665d34";
|
||||
set color_header_menubar_text = "#cccc99";
|
||||
set color_header_menubar_background_hover = "#cccc99";
|
||||
set color_header_menubar_text_hover = "#444444";
|
||||
set color_header_borders = "#e6e6e6";
|
||||
|
||||
set color_body_links = "#444444";
|
||||
set color_body_links_visited = "#000000";
|
||||
set color_body_titlebar_background = "#cccc99";
|
||||
set color_body_titlebar_text = "#665d34";
|
||||
set color_body_footer_background = "#cccc99";
|
||||
set color_body_footer_text = "#665d34";
|
||||
set color_body_background = "#e6e6e6";
|
||||
|
||||
set color_body_entrytitle_background = "#cccc99";
|
||||
set color_body_entrytitle_background_alternate = "#665d34";
|
||||
set color_body_entrytitle_border = "#444444";
|
||||
set color_body_entrytitle_text = "#665d34";
|
||||
set color_body_entrytitle_links = "#665d34";
|
||||
set color_body_entry_text = "#444444";
|
||||
set color_body_entry_background = "#e6e6e6";
|
||||
set color_body_entry_userinfo_background = "#e6e6e6";
|
||||
|
||||
set color_month_borders = "#444444";
|
||||
set color_month_title_background = "#e6e6e6";
|
||||
set color_month_title_text = "#444444";
|
||||
set color_month_dates = "#444444";
|
||||
set color_month_postcount = "#665d34";
|
||||
|
||||
|
||||
|
||||
#NEWLAYER: smoothsailing/midnight
|
||||
layerinfo "redist_uniq" = "smoothsailing/midnight";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Midnight";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#000000";
|
||||
set color_header_title_text = "#BEAA61";
|
||||
set color_header_subtitle_text = "#76456B";
|
||||
set color_header_menubar_background = "#76456B";
|
||||
set color_header_menubar_text = "#dddddd";
|
||||
set color_header_menubar_background_hover = "#000000";
|
||||
set color_header_menubar_text_hover = "#dddddd";
|
||||
set color_header_borders = "#dddddd";
|
||||
|
||||
set color_body_links = "#aaaaaa";
|
||||
set color_body_links_visited = "#dddddd";
|
||||
set color_body_titlebar_background = "#BEAA61";
|
||||
set color_body_titlebar_text = "#000000";
|
||||
set color_body_footer_background = "#76456B";
|
||||
set color_body_footer_text = "#dddddd";
|
||||
set color_body_background = "#000000";
|
||||
set color_body_text = "#aaaaaa";
|
||||
|
||||
set color_body_entrytitle_background = "#76456B";
|
||||
set color_body_entrytitle_background_alternate = "#888888";
|
||||
set color_body_entrytitle_border = "#cccccc";
|
||||
set color_body_entrytitle_text = "#dddddd";
|
||||
set color_body_entrytitle_links = "#dddddd";
|
||||
set color_body_entry_userinfo_background = "#000000";
|
||||
set color_body_entry_background = "#000000";
|
||||
set color_body_entry_text = "#aaaaaa";
|
||||
|
||||
set color_month_borders = "#dddddd";
|
||||
set color_month_title_background = "#aaaaaa";
|
||||
set color_month_title_text = "#000000";
|
||||
set color_month_dates = "#aaaaaa";
|
||||
set color_month_postcount = "#BEAA61";
|
||||
|
||||
|
||||
|
||||
#NEWLAYER: smoothsailing/violet
|
||||
layerinfo "redist_uniq" = "smoothsailing/violet";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Very Violet";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#7c52ab";
|
||||
set color_header_subtitle_text = "#dbcfe9";
|
||||
set color_header_menubar_background = "#bfaad7";
|
||||
set color_header_menubar_background_hover = "#7c52ab";
|
||||
set color_body_links_visited = "#563976";
|
||||
set color_body_titlebar_background = "#dbcfe9";
|
||||
set color_body_footer_background = "#bfaad7";
|
||||
set color_body_entrytitle_background = "#dbcfe9";
|
||||
|
||||
#NEWLAYER: smoothsailing/purple
|
||||
layerinfo "redist_uniq" = "smoothsailing/purple";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Bruised Purple";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_body_entrytitle_border = "#d4ddee";
|
||||
set color_body_footer_text = "#454b74";
|
||||
set color_month_title_text = "#8792bd";
|
||||
set color_header_borders = "#8792bd";
|
||||
set color_body_links_visited = "#dddddd";
|
||||
set color_header_menubar_text_hover = "#ffffff";
|
||||
set color_body_titlebar_text = "#454b74";
|
||||
set color_body_entrytitle_background_alternate = "#d4ddee";
|
||||
set color_body_entrytitle_links = "#6b7da6";
|
||||
set color_body_entry_background = "#454b74";
|
||||
set color_header_title_background = "#454b74";
|
||||
set color_body_entry_userinfo_background = "#454b74";
|
||||
set color_month_dates = "#8792bd";
|
||||
set color_body_links = "#ececec";
|
||||
set color_body_background = "#6b7da6";
|
||||
set color_month_postcount = "#8792bd";
|
||||
set color_body_entry_text = "#8792bd";
|
||||
set color_body_text = "#ffffff";
|
||||
set color_body_entrytitle_background = "#d4ddee";
|
||||
set color_header_menubar_text = "#ffffff";
|
||||
set color_body_entrytitle_text = "#454b74";
|
||||
|
||||
#NEWLAYER: smoothsailing/parrot
|
||||
layerinfo "redist_uniq" = "smoothsailing/parrot";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Parrot Feathers";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#009900";
|
||||
set color_header_title_text = "#f8f8f8";
|
||||
set color_header_subtitle_text = "#66ff66";
|
||||
set color_header_menubar_background = "#33cc33";
|
||||
set color_header_menubar_text = "#ffffff";
|
||||
set color_header_menubar_background_hover = "#66ff66";
|
||||
set color_header_menubar_text_hover = "#ffffff";
|
||||
set color_header_borders = "#ffffff";
|
||||
|
||||
set color_body_links = "#006600";
|
||||
set color_body_links_visited = "#000000";
|
||||
set color_body_titlebar_background = "#66cc66";
|
||||
set color_body_titlebar_text = "#ffffff";
|
||||
set color_body_footer_background = "#66cc66";
|
||||
set color_body_footer_text = "#ffffff";
|
||||
set color_body_background = "#f8f8f8";
|
||||
set color_body_text = "#000000";
|
||||
|
||||
set color_body_entrytitle_background = "#66cc66";
|
||||
set color_body_entrytitle_background_alternate = "#66ff66";
|
||||
set color_body_entrytitle_border = "#006600";
|
||||
set color_body_entrytitle_text = "#000000";
|
||||
set color_body_entrytitle_links = "#000000";
|
||||
set color_body_entry_background = "#f8f8f8";
|
||||
set color_body_entry_userinfo_background = "#f8f8f8";
|
||||
set color_body_entry_text = "#000000";
|
||||
|
||||
set color_month_borders = "#006600";
|
||||
set color_month_title_background = "#f8f8f8";
|
||||
set color_month_title_text = "#000000";
|
||||
set color_month_dates = "#000000";
|
||||
set color_month_postcount = "#006600";
|
||||
|
||||
#NEWLAYER: smoothsailing/toxic
|
||||
layerinfo "redist_uniq" = "smoothsailing/toxic";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Toxic Teal";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#7cb3b0";
|
||||
set color_header_title_text = "#496a68";
|
||||
set color_header_subtitle_text = "#c9eae8";
|
||||
set color_header_menubar_background = "#aededb";
|
||||
set color_header_menubar_text = "#496a68";
|
||||
set color_header_menubar_background_hover = "#c9eae8";
|
||||
set color_header_menubar_text_hover = "#496a68";
|
||||
set color_header_borders = "#496a68";
|
||||
|
||||
set color_body_links = "#496a68";
|
||||
set color_body_links_visited = "#000000";
|
||||
set color_body_titlebar_background = "#c9eae8";
|
||||
set color_body_titlebar_text = "#496a68";
|
||||
set color_body_footer_background = "#c9eae8";
|
||||
set color_body_footer_text = "#496a68";
|
||||
set color_body_background = "#496a68";
|
||||
set color_body_text = "#aededb";
|
||||
|
||||
set color_body_entrytitle_background = "#7cb3b0";
|
||||
set color_body_entrytitle_background_alternate = "#6e9e9b";
|
||||
set color_body_entrytitle_border = "#c9eae8";
|
||||
set color_body_entrytitle_text = "#000000";
|
||||
set color_body_entrytitle_links = "#000000";
|
||||
set color_body_entry_background = "#aededb";
|
||||
set color_body_entry_userinfo_background = "#aededb";
|
||||
set color_body_entry_text = "#000000";
|
||||
|
||||
set color_month_borders = "#496a68";
|
||||
set color_month_title_background = "#c9eae8";
|
||||
set color_month_title_text = "#000000";
|
||||
set color_month_dates = "#000000";
|
||||
set color_month_postcount = "#496a68";
|
||||
|
||||
#NEWLAYER: smoothsailing/banana
|
||||
layerinfo "redist_uniq" = "smoothsailing/banana";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Banana Tree";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#3D5D2E";
|
||||
set color_header_title_text = "#F6F6BB";
|
||||
set color_header_subtitle_text = "#E1D751";
|
||||
set color_header_menubar_background = "#E1D751";
|
||||
set color_header_menubar_text = "#3D5D2E";
|
||||
set color_header_menubar_background_hover = "#9A722E";
|
||||
set color_header_menubar_text_hover = "#F6F6BB";
|
||||
set color_header_borders = "#F6F6BB";
|
||||
|
||||
set color_body_links = "#3D5D2E";
|
||||
set color_body_links_visited = "#000000";
|
||||
set color_body_titlebar_background = "#9A722E";
|
||||
set color_body_titlebar_text = "#F6F6BB";
|
||||
set color_body_footer_background = "#3D5D2E";
|
||||
set color_body_footer_text = "#F6F6BB";
|
||||
set color_body_background = "#F6F6BB";
|
||||
set color_body_text = "#3D5D2E";
|
||||
|
||||
set color_body_entrytitle_background = "#3D5D2E";
|
||||
set color_body_entrytitle_background_alternate = "#9A722E";
|
||||
set color_body_entrytitle_border = "#9A722E";
|
||||
set color_body_entrytitle_text = "#E1D751";
|
||||
set color_body_entrytitle_links = "#E1D751";
|
||||
set color_body_entry_background = "#F6F6BB";
|
||||
set color_body_entry_userinfo_background = "#F6F6BB";
|
||||
set color_body_entry_text = "#000000";
|
||||
|
||||
set color_month_borders = "#9A722E";
|
||||
set color_month_title_background = "#F6F6BB";
|
||||
set color_month_title_text = "#3D5D2E";
|
||||
set color_month_dates = "#000000";
|
||||
set color_month_postcount = "#3D5D2E";
|
||||
|
||||
#NEWLAYER: smoothsailing/fire
|
||||
layerinfo "redist_uniq" = "smoothsailing/fire";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Under Fire";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#95261F";
|
||||
set color_header_title_text = "#F5EBC2";
|
||||
set color_header_subtitle_text = "#CA6036";
|
||||
set color_header_menubar_background = "#CA6036";
|
||||
set color_header_menubar_text = "#F5EBC2";
|
||||
set color_header_menubar_background_hover = "#DEB450";
|
||||
set color_header_menubar_text_hover = "#95261F";
|
||||
set color_header_borders = "#F5EBC2";
|
||||
|
||||
set color_body_links = "#95261F";
|
||||
set color_body_links_visited = "#000000";
|
||||
set color_body_titlebar_background = "#DEB450";
|
||||
set color_body_titlebar_text = "#95261F";
|
||||
set color_body_footer_background = "#95261F";
|
||||
set color_body_footer_text = "#F5EBC2";
|
||||
set color_body_background = "#F5EBC2";
|
||||
set color_body_text = "#000000";
|
||||
|
||||
set color_body_entrytitle_background = "#95261F";
|
||||
set color_body_entrytitle_background_alternate = "#CA6036";
|
||||
set color_body_entrytitle_border = "#DEB450";
|
||||
set color_body_entrytitle_text = "#F5EBC2";
|
||||
set color_body_entrytitle_links = "#F5EBC2";
|
||||
set color_body_entry_background = "#F5EBC2";
|
||||
set color_body_entry_userinfo_background = "#F5EBC2";
|
||||
set color_body_entry_text = "#000000";
|
||||
|
||||
set color_month_borders = "#95261F";
|
||||
set color_month_title_background = "#F5EBC2";
|
||||
set color_month_title_text = "#95261F";
|
||||
set color_month_dates = "#95261F";
|
||||
set color_month_postcount = "#CA6036";
|
||||
|
||||
#NEWLAYER: smoothsailing/chocolate
|
||||
layerinfo "redist_uniq" = "smoothsailing/chocolate";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Chocolate Caramel Creme";
|
||||
layerinfo author_name = "Michael Raffoul";
|
||||
layerinfo author_email = "masterslacker@livejournal.com";
|
||||
|
||||
set color_header_title_background = "#6D4506";
|
||||
set color_header_title_text = "#E1D6C0";
|
||||
set color_header_subtitle_text = "#CF9B48";
|
||||
set color_header_menubar_background = "#A2701F";
|
||||
set color_header_menubar_text = "#E1D6C0";
|
||||
set color_header_menubar_background_hover = "#CF9B48";
|
||||
set color_header_menubar_text_hover = "#E1D6C0";
|
||||
set color_header_borders = "#E1D6C0";
|
||||
|
||||
set color_body_links = "#6D4506";
|
||||
set color_body_links_visited = "#000000";
|
||||
set color_body_titlebar_background = "#CF9B48";
|
||||
set color_body_titlebar_text = "#E1D6C0";
|
||||
set color_body_footer_background = "#6D4506";
|
||||
set color_body_footer_text = "#E1D6C0";
|
||||
set color_body_background = "#E1D6C0";
|
||||
set color_body_text = "#000000";
|
||||
|
||||
set color_body_entrytitle_background = "#A2701F";
|
||||
set color_body_entrytitle_background_alternate = "#CF9B48";
|
||||
set color_body_entrytitle_border = "#6D4506";
|
||||
set color_body_entrytitle_text = "#E1D6C0";
|
||||
set color_body_entrytitle_links = "#E1D6C0";
|
||||
set color_body_entry_background = "#E1D6C0";
|
||||
set color_body_entry_userinfo_background = "#E1D6C0";
|
||||
set color_body_entry_text = "#000000";
|
||||
|
||||
set color_month_borders = "#A2701F";
|
||||
set color_month_title_background = "#E1D6C0";
|
||||
set color_month_title_text = "#6D4506";
|
||||
set color_month_dates = "#6D4506";
|
||||
set color_month_postcount = "#A2701F";
|
||||
1341
ljcom/bin/upgrading/s2layers/tranquilityii/layout.s2
Normal file
1341
ljcom/bin/upgrading/s2layers/tranquilityii/layout.s2
Normal file
File diff suppressed because it is too large
Load Diff
707
ljcom/bin/upgrading/s2layers/tranquilityii/themes.s2
Normal file
707
ljcom/bin/upgrading/s2layers/tranquilityii/themes.s2
Normal file
@@ -0,0 +1,707 @@
|
||||
#NEWLAYER: tranquilityii/plain
|
||||
layerinfo "redist_uniq" = "tranquilityii/plain";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Tranquility II - Plain Theme";
|
||||
layerinfo "author_name" = "Matthew Vince";
|
||||
|
||||
set c_main_border = "#fff";
|
||||
set c_menu_border = "#fff";
|
||||
set c_header_background = "#fff";
|
||||
set c_header_border = "#fff";
|
||||
set c_page_title = "#000";
|
||||
set c_page_background = "#fff";
|
||||
set c_page_text = "#333";
|
||||
set c_page_link = "#036";
|
||||
set c_page_link_visited = "#036";
|
||||
set c_page_link_hover = "#069";
|
||||
set c_page_link_active = "#069";
|
||||
set c_menu_background = "#fff";
|
||||
set c_menu_link = "#000";
|
||||
set c_menu_link_visited = "#000";
|
||||
set c_menu_link_hover = "#f00";
|
||||
set c_menu_link_active = "#f00";
|
||||
set c_menu_text_color = "#000";
|
||||
set c_menu_header_color = "#000";
|
||||
set c_menu_current = "#000";
|
||||
set c_entry_background = "#fff";
|
||||
set c_entry_link = "#000";
|
||||
set c_entry_link_visited = "#000";
|
||||
set c_entry_link_hover = "#000";
|
||||
set c_entry_link_active = "#000";
|
||||
set c_entry_text_color = "#000";
|
||||
set c_entry_title_color = "#000";
|
||||
set c_entry_border = "#999";
|
||||
set c_meta_background = "#fff";
|
||||
set c_meta_link = "#000";
|
||||
set c_meta_link_visited = "#000";
|
||||
set c_meta_link_hover = "#000";
|
||||
set c_meta_link_active = "#000";
|
||||
set c_meta_text_color = "#000";
|
||||
set c_footer_background = "#fff";
|
||||
set c_footer_link = "#000";
|
||||
set c_footer_link_visited = "#000";
|
||||
set c_footer_link_hover = "#000";
|
||||
set c_footer_link_active = "#000";
|
||||
set c_footer_text_color = "#000";
|
||||
set c_comment_one_link = "#000";
|
||||
set c_comment_one_link_visited = "#000";
|
||||
set c_comment_one_link_hover = "#000";
|
||||
set c_comment_one_link_active = "#000";
|
||||
set c_comment_one_text_color = "#000";
|
||||
set c_comment_one_title_color = "#000";
|
||||
set c_comment_one_background = "#fff";
|
||||
set c_comment_one_border = "#999";
|
||||
set c_comment_two_link = "#000";
|
||||
set c_comment_two_link_visited = "#000";
|
||||
set c_comment_two_link_hover = "#000";
|
||||
set c_comment_two_link_active = "#000";
|
||||
set c_comment_two_text_color = "#000";
|
||||
set c_comment_two_title_color = "#000";
|
||||
set c_comment_two_background = "#f2f2f2";
|
||||
set c_comment_two_border = "#999";
|
||||
set c_comment_screened_link = "#000";
|
||||
set c_comment_screened_link_visited = "#000";
|
||||
set c_comment_screened_link_hover = "#000";
|
||||
set c_comment_screened_link_active = "#000";
|
||||
set c_comment_screened_text_color = "#000";
|
||||
set c_comment_screened_title_color = "#000";
|
||||
set c_comment_screened_background = "#ccc";
|
||||
set c_comment_screened_border = "#999";
|
||||
|
||||
#NEWLAYER: tranquilityii/earth
|
||||
layerinfo "redist_uniq" = "tranquilityii/earth";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Tranquility II - Earth Theme";
|
||||
layerinfo "author_name" = "Matthew Vince";
|
||||
|
||||
set c_main_border = "#424B15";
|
||||
set c_header_background = "#667320";
|
||||
set c_header_border = "#667320";
|
||||
set c_page_title = "#fff";
|
||||
set c_page_background = "#667320";
|
||||
set c_page_text = "#333";
|
||||
set c_page_link = "#000";
|
||||
set c_page_link_visited = "#666";
|
||||
set c_page_link_hover = "#999";
|
||||
set c_page_link_active = "#999";
|
||||
set c_menu_border = "#424B15";
|
||||
set c_menu_background = "#88992B";
|
||||
set c_menu_link = "#fff";
|
||||
set c_menu_link_visited = "#424B15";
|
||||
set c_menu_link_hover = "#424B15";
|
||||
set c_menu_link_active = "#f00";
|
||||
set c_menu_text_color = "#fff";
|
||||
set c_menu_header_color = "#fff";
|
||||
set c_menu_current = "#fff";
|
||||
set f_menu_header_size = "140%";
|
||||
set c_entry_background = "#fff";
|
||||
set c_entry_link = "#99602B";
|
||||
set c_entry_link_visited = "#BF7836";
|
||||
set c_entry_link_hover = "#734820";
|
||||
set c_entry_link_active = "#734820";
|
||||
set c_entry_text_color = "#333";
|
||||
set c_entry_title_color = "#000";
|
||||
set c_entry_border = "#BFBFBF";
|
||||
set c_meta_background = "#fff";
|
||||
set c_meta_link = "#99602B";
|
||||
set c_meta_link_visited = "#BF7836";
|
||||
set c_meta_link_hover = "#734820";
|
||||
set c_meta_link_active = "#734820";
|
||||
set c_meta_text_color = "#666";
|
||||
set c_footer_background = "#667320";
|
||||
set c_footer_link = "#000";
|
||||
set c_footer_link_visited = "#000";
|
||||
set c_footer_link_hover = "#fff";
|
||||
set c_footer_link_active = "#000";
|
||||
set c_footer_text_color = "#000";
|
||||
set c_comment_one_link = "#99602B";
|
||||
set c_comment_one_link_visited = "#BF7836";
|
||||
set c_comment_one_link_hover = "#734820";
|
||||
set c_comment_one_link_active = "#734820";
|
||||
set c_comment_one_text_color = "#333";
|
||||
set c_comment_one_title_color = "#000";
|
||||
set c_comment_one_background = "#fff";
|
||||
set c_comment_one_border = "#999";
|
||||
set c_comment_two_link = "#99602B";
|
||||
set c_comment_two_link_visited = "#BF7836";
|
||||
set c_comment_two_link_hover = "#734820";
|
||||
set c_comment_two_link_active = "#734820";
|
||||
set c_comment_two_text_color = "#333";
|
||||
set c_comment_two_title_color = "#000";
|
||||
set c_comment_two_background = "#f2f2f2";
|
||||
set c_comment_two_border = "#999";
|
||||
set c_comment_screened_link = "#99602B";
|
||||
set c_comment_screened_link_visited = "#BF7836";
|
||||
set c_comment_screened_link_hover = "#734820";
|
||||
set c_comment_screened_link_active = "#734820";
|
||||
set c_comment_screened_text_color = "#333";
|
||||
set c_comment_screened_title_color = "#000";
|
||||
set c_comment_screened_background = "#ccc";
|
||||
set c_comment_screened_border = "#999";
|
||||
|
||||
#NEWLAYER: tranquilityii/money
|
||||
layerinfo "redist_uniq" = "tranquilityii/money";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Tranquility II - Money Theme";
|
||||
layerinfo "author_name" = "Matthew Vince";
|
||||
|
||||
set c_main_border = "#68754D";
|
||||
set c_header_background = "#ACC280";
|
||||
set c_header_border = "#ACC280";
|
||||
set c_page_title = "#3D3D3D";
|
||||
set c_page_background = "#ACC280";
|
||||
set c_page_text = "#3D3D3D";
|
||||
set c_page_link = "#000";
|
||||
set c_page_link_visited = "#666";
|
||||
set c_page_link_hover = "#999";
|
||||
set c_page_link_active = "#999";
|
||||
set c_menu_border = "#68754D";
|
||||
set c_menu_background = "#8A9C67";
|
||||
set c_menu_link = "#000";
|
||||
set c_menu_link_visited = "#000";
|
||||
set c_menu_link_hover = "#EBF7D4";
|
||||
set c_menu_link_active = "#ebf7d4";
|
||||
set c_menu_text_color = "#000";
|
||||
set c_menu_header_color = "#000";
|
||||
set c_menu_current = "#EBF7D4";
|
||||
set f_menu_header_size = "140%";
|
||||
set c_entry_background = "#fff";
|
||||
set c_entry_link = "#679C67";
|
||||
set c_entry_link_visited = "#80C280";
|
||||
set c_entry_link_hover = "#4D754D";
|
||||
set c_entry_link_active = "#4D754D";
|
||||
set c_entry_text_color = "#000";
|
||||
set c_entry_title_color = "#000";
|
||||
set c_entry_border = "#3D3D3D";
|
||||
set c_meta_background = "#fff";
|
||||
set c_meta_link = "#679C67";
|
||||
set c_meta_link_visited = "#80C280";
|
||||
set c_meta_link_hover = "#4D754D";
|
||||
set c_meta_link_active = "#4D754D";
|
||||
set c_meta_text_color = "#3D3D3D";
|
||||
set c_footer_background = "#ACC280";
|
||||
set c_footer_link = "#000";
|
||||
set c_footer_link_visited = "#000";
|
||||
set c_footer_link_hover = "#fff";
|
||||
set c_footer_link_active = "#000";
|
||||
set c_footer_text_color = "#000";
|
||||
set c_comment_one_link = "#679C67";
|
||||
set c_comment_one_link_visited = "#80C280";
|
||||
set c_comment_one_link_hover = "#4D754D";
|
||||
set c_comment_one_link_active = "#4D754D";
|
||||
set c_comment_one_text_color = "#000";
|
||||
set c_comment_one_title_color = "#000";
|
||||
set c_comment_one_background = "#fff";
|
||||
set c_comment_one_border = "#999";
|
||||
set c_comment_two_link = "#679C67";
|
||||
set c_comment_two_link_visited = "#80C280";
|
||||
set c_comment_two_link_hover = "#4D754D";
|
||||
set c_comment_two_link_active = "#4D754D";
|
||||
set c_comment_two_text_color = "#000";
|
||||
set c_comment_two_title_color = "#000";
|
||||
set c_comment_two_background = "#f2f2f2";
|
||||
set c_comment_two_border = "#999";
|
||||
set c_comment_screened_link = "#679C67";
|
||||
set c_comment_screened_link_visited = "#80C280";
|
||||
set c_comment_screened_link_hover = "#4D754D";
|
||||
set c_comment_screened_link_active = "#4D754D";
|
||||
set c_comment_screened_text_color = "#000";
|
||||
set c_comment_screened_title_color = "#000";
|
||||
set c_comment_screened_background = "#ccc";
|
||||
set c_comment_screened_border = "#999";
|
||||
set f_page = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_page_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_page_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_link = "Verdana, Helvetica, sans-serif";
|
||||
set f_menu = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_header = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_current = "Verdana, Helvetica, sans-serif";
|
||||
set f_entry = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_entry_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_entry_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_meta = "Verdana, Helvetica, sans-serif";
|
||||
set f_meta_link = "Verdana, Helvetica, sans-serif";
|
||||
set f_footer = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_footer_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
|
||||
#NEWLAYER: tranquilityii/winterice
|
||||
layerinfo "redist_uniq" = "tranquilityii/winterice";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Tranquility II - WinterIce Theme";
|
||||
layerinfo "author_name" = "Matthew Vince";
|
||||
|
||||
set c_main_border = "#000";
|
||||
set c_header_background = "#694D73";
|
||||
set c_header_border = "#694D73";
|
||||
set c_page_title = "#000";
|
||||
set c_page_background = "#694D73";
|
||||
set c_page_text = "#3D3D3D";
|
||||
set c_page_link = "#000";
|
||||
set c_page_link_visited = "#666";
|
||||
set c_page_link_hover = "#999";
|
||||
set c_page_link_active = "#999";
|
||||
set c_menu_border = "#694D73";
|
||||
set c_menu_background = "#694D73";
|
||||
set c_menu_link = "#fff";
|
||||
set c_menu_link_visited = "#fff";
|
||||
set c_menu_link_hover = "#C5A2D0";
|
||||
set c_menu_link_active = "#C5A2D0";
|
||||
set c_menu_text_color = "#fff";
|
||||
set c_menu_header_color = "#fff";
|
||||
set c_menu_current = "#C5A2D0";
|
||||
set f_menu_header_size = "140%";
|
||||
set c_entry_background = "#fff";
|
||||
set c_entry_link = "#5E71AE";
|
||||
set c_entry_link_visited = "#5E71AE";
|
||||
set c_entry_link_hover = "#808FBF";
|
||||
set c_entry_link_active = "#808FBF";
|
||||
set c_entry_text_color = "#000";
|
||||
set c_entry_title_color = "#000";
|
||||
set c_entry_border = "#3D3D3D";
|
||||
set c_meta_background = "#fff";
|
||||
set c_meta_link = "#B080BF";
|
||||
set c_meta_link_visited = "#C29FCB";
|
||||
set c_meta_link_hover = "#854D93";
|
||||
set c_meta_link_active = "#854D93";
|
||||
set c_meta_text_color = "#3D3D3D";
|
||||
set c_footer_background = "#694D73";
|
||||
set c_footer_link = "#fff";
|
||||
set c_footer_link_visited = "#fff";
|
||||
set c_footer_link_hover = "#fff";
|
||||
set c_footer_link_active = "#fff";
|
||||
set c_footer_text_color = "#fff";
|
||||
set c_comment_one_link = "#5E71AE";
|
||||
set c_comment_one_link_visited = "#5E71AE";
|
||||
set c_comment_one_link_hover = "#808FBF";
|
||||
set c_comment_one_link_active = "#808FBF";
|
||||
set c_comment_one_text_color = "#000";
|
||||
set c_comment_one_title_color = "#000";
|
||||
set c_comment_one_background = "#fff";
|
||||
set c_comment_one_border = "#999";
|
||||
set c_comment_two_link = "#5E71AE";
|
||||
set c_comment_two_link_visited = "#5E71AE";
|
||||
set c_comment_two_link_hover = "#808FBF";
|
||||
set c_comment_two_link_active = "#808FBF";
|
||||
set c_comment_two_text_color = "#000";
|
||||
set c_comment_two_title_color = "#000";
|
||||
set c_comment_two_background = "#f2f2f2";
|
||||
set c_comment_two_border = "#999";
|
||||
set c_comment_screened_link = "#5E71AE";
|
||||
set c_comment_screened_link_visited = "#5E71AE";
|
||||
set c_comment_screened_link_hover = "#808FBF";
|
||||
set c_comment_screened_link_active = "#808FBF";
|
||||
set c_comment_screened_text_color = "#000";
|
||||
set c_comment_screened_title_color = "#000";
|
||||
set c_comment_screened_background = "#ccc";
|
||||
set c_comment_screened_border = "#999";
|
||||
set f_page = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_page_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_page_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_link = "Verdana, Helvetica, sans-serif";
|
||||
set f_menu = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_header = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_current = "Verdana, Helvetica, sans-serif";
|
||||
set f_entry = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_entry_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_entry_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_meta = "Verdana, Helvetica, sans-serif";
|
||||
set f_meta_link = "Verdana, Helvetica, sans-serif";
|
||||
set f_footer = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_footer_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
|
||||
#NEWLAYER: tranquilityii/fire
|
||||
layerinfo "redist_uniq" = "tranquilityii/fire";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Tranquility II - Fire Theme";
|
||||
layerinfo "author_name" = "Matthew Vince";
|
||||
|
||||
set c_main_border = "#A65000";
|
||||
set c_header_background = "#A65000";
|
||||
set c_header_border = "#A65000";
|
||||
set c_page_title = "#000";
|
||||
set c_page_background = "#A65000";
|
||||
set c_page_text = "#3D3D3D";
|
||||
set c_page_link = "#000";
|
||||
set c_page_link_visited = "#666";
|
||||
set c_page_link_hover = "#999";
|
||||
set c_page_link_active = "#999";
|
||||
set c_menu_border = "#A68700";
|
||||
set c_menu_background = "#CCA700";
|
||||
set c_menu_link = "#fff";
|
||||
set c_menu_link_visited = "#FFD100";
|
||||
set c_menu_link_hover = "#CC4100";
|
||||
set c_menu_link_active = "#CC4100";
|
||||
set c_menu_text_color = "#fff";
|
||||
set c_menu_header_color = "#fff";
|
||||
set c_menu_current = "#CC4100";
|
||||
set f_menu_header_size = "140%";
|
||||
set c_entry_background = "#fff";
|
||||
set c_entry_link = "#CC6300";
|
||||
set c_entry_link_visited = "#F27500";
|
||||
set c_entry_link_hover = "#A65000";
|
||||
set c_entry_link_active = "#A65000";
|
||||
set c_entry_text_color = "#333";
|
||||
set c_entry_title_color = "#333";
|
||||
set c_entry_border = "#666";
|
||||
set c_meta_background = "#fff";
|
||||
set c_meta_link = "#CCA700";
|
||||
set c_meta_link_visited = "#F2C600";
|
||||
set c_meta_link_hover = "#A68700";
|
||||
set c_meta_link_active = "#A68700";
|
||||
set c_meta_text_color = "#3D3D3D";
|
||||
set c_footer_background = "#A65000";
|
||||
set c_footer_link = "#fff";
|
||||
set c_footer_link_visited = "#fff";
|
||||
set c_footer_link_hover = "#fff";
|
||||
set c_footer_link_active = "#fff";
|
||||
set c_footer_text_color = "#fff";
|
||||
set c_comment_one_link = "#CC6300";
|
||||
set c_comment_one_link_visited = "#F27500";
|
||||
set c_comment_one_link_hover = "#A65000";
|
||||
set c_comment_one_link_active = "#A65000";
|
||||
set c_comment_one_text_color = "#333";
|
||||
set c_comment_one_title_color = "#000";
|
||||
set c_comment_one_background = "#fff";
|
||||
set c_comment_one_border = "#999";
|
||||
set c_comment_two_link = "#CC6300";
|
||||
set c_comment_two_link_visited = "#F27500";
|
||||
set c_comment_two_link_hover = "#A65000";
|
||||
set c_comment_two_link_active = "#A65000";
|
||||
set c_comment_two_text_color = "#333";
|
||||
set c_comment_two_title_color = "#000";
|
||||
set c_comment_two_background = "#f2f2f2";
|
||||
set c_comment_two_border = "#999";
|
||||
set c_comment_screened_link = "#CC6300";
|
||||
set c_comment_screened_link_visited = "#F27500";
|
||||
set c_comment_screened_link_hover = "#A65000";
|
||||
set c_comment_screened_link_active = "#A65000";
|
||||
set c_comment_screened_text_color = "#333";
|
||||
set c_comment_screened_title_color = "#000";
|
||||
set c_comment_screened_background = "#ccc";
|
||||
set c_comment_screened_border = "#999";
|
||||
|
||||
#NEWLAYER: tranquilityii/mobile
|
||||
layerinfo "redist_uniq" = "tranquilityii/mobile";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Tranquility II - Mobile Theme";
|
||||
layerinfo "author_name" = "Matthew Vince";
|
||||
|
||||
set c_main_border = "#fff";
|
||||
set c_header_background = "#fff";
|
||||
set c_header_border = "#fff";
|
||||
set c_page_title = "#000";
|
||||
set c_page_background = "#fff";
|
||||
set c_page_text = "#000";
|
||||
set c_page_link = "#00f";
|
||||
set c_page_link_visited = "#999";
|
||||
set c_page_link_hover = "#f00";
|
||||
set c_page_link_active = "#f00";
|
||||
set c_menu_border = "#fff";
|
||||
set c_menu_background = "#fff";
|
||||
set c_menu_link = "#00f";
|
||||
set c_menu_link_visited = "#999";
|
||||
set c_menu_link_hover = "#f00";
|
||||
set c_menu_link_active = "#f00";
|
||||
set c_menu_text_color = "#000";
|
||||
set c_menu_header_color = "#00";
|
||||
set c_menu_current = "#000";
|
||||
set f_menu_header_size = "140%";
|
||||
set c_entry_background = "#fff";
|
||||
set c_entry_link = "#00f";
|
||||
set c_entry_link_visited = "#999";
|
||||
set c_entry_link_hover = "#f00";
|
||||
set c_entry_link_active = "#f00";
|
||||
set c_entry_text_color = "#000";
|
||||
set c_entry_title_color = "#000";
|
||||
set c_entry_border = "#fff";
|
||||
set c_meta_background = "#fff";
|
||||
set c_meta_link = "#00f";
|
||||
set c_meta_link_visited = "#999";
|
||||
set c_meta_link_hover = "#f00";
|
||||
set c_meta_link_active = "#f00";
|
||||
set c_meta_text_color = "#000";
|
||||
set c_footer_background = "#fff";
|
||||
set c_footer_link = "#00f";
|
||||
set c_footer_link_visited = "#999";
|
||||
set c_footer_link_hover = "#f00";
|
||||
set c_footer_link_active = "#f00";
|
||||
set c_footer_text_color = "#000";
|
||||
set c_comment_one_link = "#00f";
|
||||
set c_comment_one_link_visited = "#999";
|
||||
set c_comment_one_link_hover = "#f00";
|
||||
set c_comment_one_link_active = "#f00";
|
||||
set c_comment_one_text_color = "#000";
|
||||
set c_comment_one_title_color = "#000";
|
||||
set c_comment_one_background = "#fff";
|
||||
set c_comment_one_border = "#fff";
|
||||
set c_comment_two_link = "#00f";
|
||||
set c_comment_two_link_visited = "#999";
|
||||
set c_comment_two_link_hover = "#f00";
|
||||
set c_comment_two_link_active = "#f00";
|
||||
set c_comment_two_text_color = "#000";
|
||||
set c_comment_two_title_color = "#000";
|
||||
set c_comment_two_background = "#f2f2f2";
|
||||
set c_comment_two_border = "#fff";
|
||||
set c_comment_screened_link = "#00f";
|
||||
set c_comment_screened_link_visited = "#999";
|
||||
set c_comment_screened_link_hover = "#f00";
|
||||
set c_comment_screened_link_active = "#f00";
|
||||
set c_comment_screened_text_color = "#000";
|
||||
set c_comment_screened_title_color = "#000";
|
||||
set c_comment_screened_background = "#999";
|
||||
set c_comment_screened_border = "#fff";
|
||||
set menu_disable_summary = true;
|
||||
set css_style_overrides = "hr { display: block; } #menu { float: none; width: auto; } #content { margin-left: 0; } #container { margin: 0; padding: 0; text-align: left; width: 100%; }";
|
||||
|
||||
#NEWLAYER: tranquilityii/pinky
|
||||
layerinfo "redist_uniq" = "tranquilityii/pinky";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Tranquility II - Pinky Theme";
|
||||
layerinfo "author_name" = "Matthew Vince";
|
||||
|
||||
set c_main_border = "#242E35";
|
||||
set c_header_background = "#242E35";
|
||||
set c_header_border = "#242E35";
|
||||
set c_page_title = "#fff";
|
||||
set c_page_background = "#242E35";
|
||||
set c_page_text = "#fff";
|
||||
set c_page_link = "#f0c";
|
||||
set c_page_link_visited = "#FF82E5";
|
||||
set c_page_link_hover = "#B30090";
|
||||
set c_page_link_active = "#B30090";
|
||||
set c_menu_border = "#B4A361";
|
||||
set c_menu_background = "#ECE9D8";
|
||||
set c_menu_link = "#000";
|
||||
set c_menu_link_visited = "#999";
|
||||
set c_menu_link_hover = "#000";
|
||||
set c_menu_link_active = "#000";
|
||||
set c_menu_text_color = "#333";
|
||||
set c_menu_header_color = "#333";
|
||||
set c_menu_current = "#000";
|
||||
set f_menu_header_size = "140%";
|
||||
set c_entry_background = "#F8F7F1";
|
||||
set c_entry_link = "#f0c";
|
||||
set c_entry_link_visited = "#FF82E5";
|
||||
set c_entry_link_hover = "#B30090";
|
||||
set c_entry_link_active = "#B30090";
|
||||
set c_entry_text_color = "#333";
|
||||
set c_entry_title_color = "#666";
|
||||
set c_entry_border = "000";
|
||||
set c_meta_background = "#F8F7F1";
|
||||
set c_meta_link = "#f0c";
|
||||
set c_meta_link_visited = "#FF82E5";
|
||||
set c_meta_link_hover = "#B30090";
|
||||
set c_meta_link_active = "#B30090";
|
||||
set c_meta_text_color = "#666";
|
||||
set c_footer_background = "#242E35";
|
||||
set c_footer_link = "#fff";
|
||||
set c_footer_link_visited = "#fff";
|
||||
set c_footer_link_hover = "#fff";
|
||||
set c_footer_link_active = "#fff";
|
||||
set c_footer_text_color = "#fff";
|
||||
set c_comment_one_link = "#f0c";
|
||||
set c_comment_one_link_visited = "#FF82E5";
|
||||
set c_comment_one_link_hover = "#B30090";
|
||||
set c_comment_one_link_active = "#B30090";
|
||||
set c_comment_one_text_color = "#333";
|
||||
set c_comment_one_title_color = "#666";
|
||||
set c_comment_one_background = "#fff";
|
||||
set c_comment_one_border = "#999";
|
||||
set c_comment_two_link = "#f0c";
|
||||
set c_comment_two_link_visited = "#FF82E5";
|
||||
set c_comment_two_link_hover = "#B30090";
|
||||
set c_comment_two_link_active = "#B30090";
|
||||
set c_comment_two_text_color = "#333";
|
||||
set c_comment_two_title_color = "#666";
|
||||
set c_comment_two_background = "#f2f2f2";
|
||||
set c_comment_two_border = "#999";
|
||||
set c_comment_screened_link = "#f0c";
|
||||
set c_comment_screened_link_visited = "#FF82E5";
|
||||
set c_comment_screened_link_hover = "#B30090";
|
||||
set c_comment_screened_link_active = "#B30090";
|
||||
set c_comment_screened_text_color = "#333";
|
||||
set c_comment_screened_title_color = "#666";
|
||||
set c_comment_screened_background = "#ccc";
|
||||
set c_comment_screened_border = "#999";
|
||||
set f_page = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_page_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_page_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_link = "Verdana, Helvetica, sans-serif";
|
||||
set f_menu = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_header = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_current = "Verdana, Helvetica, sans-serif";
|
||||
set f_entry = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_entry_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_entry_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_meta = "Verdana, Helvetica, sans-serif";
|
||||
set f_meta_link = "Verdana, Helvetica, sans-serif";
|
||||
set f_footer = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_footer_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
|
||||
#NEWLAYER: tranquilityii/fresh
|
||||
layerinfo "redist_uniq" = "tranquilityii/fresh";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Tranquility II - Fresh Theme";
|
||||
layerinfo "author_name" = "Matthew Vince";
|
||||
|
||||
set c_main_border = "#7A97B2";
|
||||
set c_header_background = "#7A97B2";
|
||||
set c_header_border = "#7A97B2";
|
||||
set c_page_title = "#273849";
|
||||
set c_page_background = "#242E35";
|
||||
set c_page_text = "#fff";
|
||||
set c_page_link = "#036";
|
||||
set c_page_link_visited = "#036";
|
||||
set c_page_link_hover = "#069";
|
||||
set c_page_link_active = "#069";
|
||||
set c_menu_border = "#CFE0E6";
|
||||
set c_menu_background = "#CFE0E6";
|
||||
set c_menu_link = "#000";
|
||||
set c_menu_link_visited = "#999";
|
||||
set c_menu_link_hover = "#000";
|
||||
set c_menu_link_active = "#000";
|
||||
set c_menu_text_color = "#333";
|
||||
set c_menu_header_color = "#333";
|
||||
set c_menu_current = "#000";
|
||||
set f_menu_header_size = "140%";
|
||||
set c_entry_background = "#fff";
|
||||
set c_entry_link = "#036";
|
||||
set c_entry_link_visited = "#036";
|
||||
set c_entry_link_hover = "#069";
|
||||
set c_entry_link_active = "#069";
|
||||
set c_entry_text_color = "#333";
|
||||
set c_entry_title_color = "#999";
|
||||
set c_entry_border = "000";
|
||||
set c_meta_background = "#fff";
|
||||
set c_meta_link = "#036";
|
||||
set c_meta_link_visited = "#036";
|
||||
set c_meta_link_hover = "#069";
|
||||
set c_meta_link_active = "#069";
|
||||
set c_meta_text_color = "#999";
|
||||
set c_footer_background = "#7A97B2";
|
||||
set c_footer_link = "#fff";
|
||||
set c_footer_link_visited = "#fff";
|
||||
set c_footer_link_hover = "#fff";
|
||||
set c_footer_link_active = "#fff";
|
||||
set c_footer_text_color = "#fff";
|
||||
set c_comment_one_link = "#036";
|
||||
set c_comment_one_link_visited = "#036";
|
||||
set c_comment_one_link_hover = "#069";
|
||||
set c_comment_one_link_active = "#069";
|
||||
set c_comment_one_text_color = "#333";
|
||||
set c_comment_one_title_color = "#999";
|
||||
set c_comment_one_background = "#fff";
|
||||
set c_comment_one_border = "#999";
|
||||
set c_comment_two_link = "#036";
|
||||
set c_comment_two_link_visited = "#036";
|
||||
set c_comment_two_link_hover = "#069";
|
||||
set c_comment_two_link_active = "#069";
|
||||
set c_comment_two_text_color = "#333";
|
||||
set c_comment_two_title_color = "#999";
|
||||
set c_comment_two_background = "#f2f2f2";
|
||||
set c_comment_two_border = "#999";
|
||||
set c_comment_screened_link = "#036";
|
||||
set c_comment_screened_link_visited = "#036";
|
||||
set c_comment_screened_link_hover = "#069";
|
||||
set c_comment_screened_link_active = "#069";
|
||||
set c_comment_screened_text_color = "#333";
|
||||
set c_comment_screened_title_color = "#999";
|
||||
set c_comment_screened_background = "#ccc";
|
||||
set c_comment_screened_border = "#999";
|
||||
set f_page = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_page_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_page_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_link = "Verdana, Helvetica, sans-serif";
|
||||
set f_menu = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_header = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_menu_current = "Verdana, Helvetica, sans-serif";
|
||||
set f_entry = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_entry_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_entry_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_meta = "Verdana, Helvetica, sans-serif";
|
||||
set f_meta_link = "Verdana, Helvetica, sans-serif";
|
||||
set f_footer = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_footer_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment_title = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
set f_comment_link = "Tahoma, Verdana, Helvetica, sans-serif";
|
||||
|
||||
#NEWLAYER: tranquilityii/auto
|
||||
layerinfo "redist_uniq" = "tranquilityii/auto";
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Tranquility II - Auto Theme";
|
||||
layerinfo "author_name" = "Matthew Vince";
|
||||
|
||||
set c_main_border = "#515151";
|
||||
set c_header_background = "#515151";
|
||||
set c_header_border = "#515151";
|
||||
set c_page_title = "#fff";
|
||||
set c_page_background = "#515151";
|
||||
set c_page_text = "#333";
|
||||
set c_page_link = "#00B4FF";
|
||||
set c_page_link_visited = "#00B4FF";
|
||||
set c_page_link_hover = "#006894";
|
||||
set c_page_link_active = "#006894";
|
||||
set c_menu_border = "#ccc";
|
||||
set c_menu_background = "#eee";
|
||||
set c_menu_link = "#000";
|
||||
set c_menu_link_visited = "#999";
|
||||
set c_menu_link_hover = "#000";
|
||||
set c_menu_link_active = "#000";
|
||||
set c_menu_text_color = "#333";
|
||||
set c_menu_header_color = "#333";
|
||||
set c_menu_current = "#000";
|
||||
set f_menu_header_size = "140%";
|
||||
set c_entry_background = "#fff";
|
||||
set c_entry_link = "#00B4FF";
|
||||
set c_entry_link_visited = "#00B4FF";
|
||||
set c_entry_link_hover = "#006894";
|
||||
set c_entry_link_active = "#006894";
|
||||
set c_entry_text_color = "#333";
|
||||
set c_entry_title_color = "#999";
|
||||
set c_entry_border = "000";
|
||||
set c_meta_background = "#fff";
|
||||
set c_meta_link = "#036";
|
||||
set c_meta_link_visited = "#036";
|
||||
set c_meta_link_hover = "#069";
|
||||
set c_meta_link_active = "#069";
|
||||
set c_meta_text_color = "#999";
|
||||
set c_footer_background = "#515151";
|
||||
set c_footer_link = "#fff";
|
||||
set c_footer_link_visited = "#fff";
|
||||
set c_footer_link_hover = "#fff";
|
||||
set c_footer_link_active = "#fff";
|
||||
set c_footer_text_color = "#fff";
|
||||
set c_comment_one_link = "#00B4FF";
|
||||
set c_comment_one_link_visited = "#00B4FF";
|
||||
set c_comment_one_link_hover = "#006894";
|
||||
set c_comment_one_link_active = "#006894";
|
||||
set c_comment_one_text_color = "#333";
|
||||
set c_comment_one_title_color = "#999";
|
||||
set c_comment_one_background = "#fff";
|
||||
set c_comment_one_border = "#999";
|
||||
set c_comment_two_link = "#00B4FF";
|
||||
set c_comment_two_link_visited = "#00B4FF";
|
||||
set c_comment_two_link_hover = "#006894";
|
||||
set c_comment_two_link_active = "#006894";
|
||||
set c_comment_two_text_color = "#333";
|
||||
set c_comment_two_title_color = "#999";
|
||||
set c_comment_two_background = "#f2f2f2";
|
||||
set c_comment_two_border = "#999";
|
||||
set c_comment_screened_link = "#00B4FF";
|
||||
set c_comment_screened_link_visited = "#00B4FF";
|
||||
set c_comment_screened_link_hover = "#006894";
|
||||
set c_comment_screened_link_active = "#006894";
|
||||
set c_comment_screened_text_color = "#333";
|
||||
set c_comment_screened_title_color = "#999";
|
||||
set c_comment_screened_background = "#ccc";
|
||||
set c_comment_screened_border = "#999";
|
||||
1556
ljcom/bin/upgrading/s2layers/unearthed/layout.s2
Normal file
1556
ljcom/bin/upgrading/s2layers/unearthed/layout.s2
Normal file
File diff suppressed because it is too large
Load Diff
118
ljcom/bin/upgrading/s2layers/unearthed/themes.s2
Normal file
118
ljcom/bin/upgrading/s2layers/unearthed/themes.s2
Normal file
@@ -0,0 +1,118 @@
|
||||
#NEWLAYER: unearthed/rampant
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Rampant Tenderfoot";
|
||||
layerinfo redist_uniq = "unearthed/rampant";
|
||||
|
||||
set stronger_bgcolor = "#ff3300";
|
||||
set strong_bgcolor = "#ff8000";
|
||||
set neutral_bgcolor = "#ffb200";
|
||||
set weak_bgcolor = "#ffb380";
|
||||
set weaker_bgcolor = "#ffcc80";
|
||||
|
||||
#NEWLAYER: unearthed/acrid
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Acrid Slide";
|
||||
layerinfo redist_uniq = "unearthed/acrid";
|
||||
|
||||
set title_texture = "rough";
|
||||
set stronger_bgcolor = "#33ff00";
|
||||
set strong_bgcolor = "#0066b2";
|
||||
set neutral_bgcolor = "#00B266";
|
||||
set weak_bgcolor = "#99ff80";
|
||||
set weaker_bgcolor = "#ccffbf";
|
||||
|
||||
#NEWLAYER: unearthed/leisure
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Leisure Renewal";
|
||||
layerinfo redist_uniq = "unearthed/leisure";
|
||||
|
||||
set title_texture = "camouflage";
|
||||
set stronger_bgcolor = "#285577";
|
||||
set strong_bgcolor = "#3c3773";
|
||||
set neutral_bgcolor = "#287755";
|
||||
set weak_bgcolor = "#c0c0ec";
|
||||
set weaker_bgcolor = "#b1ecd3";
|
||||
|
||||
#NEWLAYER: unearthed/craftis
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Craftis";
|
||||
layerinfo redist_uniq = "unearthed/craftis";
|
||||
|
||||
set title_texture = "camouflage";
|
||||
set stronger_bgcolor = "#dd0000";
|
||||
set strong_bgcolor = "#aa4f39";
|
||||
set neutral_bgcolor = "#d2d2d2";
|
||||
set weak_bgcolor = "#fcffcf";
|
||||
set weaker_bgcolor = "#eeeeee";
|
||||
|
||||
#NEWLAYER: unearthed/unveiled
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Unveiled Metal";
|
||||
layerinfo redist_uniq = "unearthed/unveiled";
|
||||
|
||||
set title_texture = "brushed_metal";
|
||||
set stronger_bgcolor = "#666666";
|
||||
set strong_bgcolor = "#999999";
|
||||
set neutral_bgcolor = "#333333";
|
||||
set weak_bgcolor = "#cccccc";
|
||||
set weaker_bgcolor = "#eeeeee";
|
||||
|
||||
#NEWLAYER: unearthed/wait
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Wait Screw";
|
||||
layerinfo redist_uniq = "unearthed/wait";
|
||||
|
||||
set title_texture = "chalk";
|
||||
set stronger_bgcolor = "#009999";
|
||||
set strong_bgcolor = "#ff6600";
|
||||
set neutral_bgcolor = "#66cccc";
|
||||
set weak_bgcolor = "#ffb380";
|
||||
set weaker_bgcolor = "#eeeeee";
|
||||
|
||||
#NEWLAYER: unearthed/drinkdna
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Drinking DNA";
|
||||
layerinfo redist_uniq = "unearthed/drinkdna";
|
||||
|
||||
set title_texture = "cork";
|
||||
set stronger_bgcolor = "#4C9978";
|
||||
set strong_bgcolor = "#468C8C";
|
||||
set neutral_bgcolor = "#53A653";
|
||||
set weak_bgcolor = "#ACE6E6";
|
||||
set weaker_bgcolor = "#eeeeee";
|
||||
|
||||
#NEWLAYER: unearthed/gainful
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Gainful Magic";
|
||||
layerinfo redist_uniq = "unearthed/gainful";
|
||||
|
||||
set title_texture = "fibers";
|
||||
set stronger_bgcolor = "#DFDFA7";
|
||||
set strong_bgcolor = "#FFFF80";
|
||||
set neutral_bgcolor = "#AAAA39";
|
||||
set weak_bgcolor = "#eeeeee";
|
||||
set weaker_bgcolor = "#FFFFBF";
|
||||
|
||||
#NEWLAYER: unearthed/inaccurate
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Inaccurate Lingo";
|
||||
layerinfo redist_uniq = "unearthed/inaccurate";
|
||||
|
||||
set title_texture = "stucco";
|
||||
set stronger_bgcolor = "#FF8080";
|
||||
set strong_bgcolor = "#FF9980";
|
||||
set neutral_bgcolor = "#E572A5";
|
||||
set weak_bgcolor = "#F2B6D0";
|
||||
set weaker_bgcolor = "#eeeeee";
|
||||
|
||||
#NEWLAYER: unearthed/current
|
||||
layerinfo "type" = "theme";
|
||||
layerinfo "name" = "Current Protector";
|
||||
layerinfo redist_uniq = "unearthed/current";
|
||||
|
||||
set title_texture = "type";
|
||||
set stronger_bgcolor = "#B5D9D9";
|
||||
set strong_bgcolor = "#285577";
|
||||
set neutral_bgcolor = "#226666";
|
||||
set weak_bgcolor = "#7DA0BB";
|
||||
set weaker_bgcolor = "#B5D9D9";
|
||||
3248
ljcom/bin/upgrading/sv.dat
Normal file
3248
ljcom/bin/upgrading/sv.dat
Normal file
File diff suppressed because it is too large
Load Diff
221
ljcom/bin/upgrading/text-local.dat
Normal file
221
ljcom/bin/upgrading/text-local.dat
Normal file
@@ -0,0 +1,221 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
domain:100:faq
|
||||
domain:101:journal/news
|
||||
|
||||
# EnglishLJ is child of English for general domain:
|
||||
lang:100:en_LJ:English (LJ):sim:en
|
||||
langdomain:en_LJ:general
|
||||
|
||||
# EnglishLJ is root of FAQ & news journal:
|
||||
langdomain:en_LJ:faq:1
|
||||
langdomain:en_LJ:journal/news:1
|
||||
|
||||
# German is child of EnglishLJ for all domains:
|
||||
lang:101:de:German:diff:en_LJ
|
||||
langdomain:de:general
|
||||
langdomain:de:journal/news
|
||||
langdomain:de:faq
|
||||
|
||||
# Danish
|
||||
lang:102:da:Danish:diff:en_LJ
|
||||
langdomain:da:general
|
||||
langdomain:da:journal/news
|
||||
langdomain:da:faq
|
||||
|
||||
# Spanish
|
||||
lang:103:es:Spanish:diff:en_LJ
|
||||
langdomain:es:general
|
||||
langdomain:es:journal/news
|
||||
langdomain:es:faq
|
||||
|
||||
# French
|
||||
lang:104:fr:French:diff:en_LJ
|
||||
langdomain:fr:general
|
||||
langdomain:fr:journal/news
|
||||
langdomain:fr:faq
|
||||
|
||||
# Japanese
|
||||
lang:105:ja:Japanese:diff:en_LJ
|
||||
langdomain:ja:general
|
||||
langdomain:ja:journal/news
|
||||
langdomain:ja:faq
|
||||
|
||||
# Russian
|
||||
lang:106:ru:Russian:diff:en_LJ
|
||||
langdomain:ru:general
|
||||
langdomain:ru:journal/news
|
||||
langdomain:ru:faq
|
||||
|
||||
# Esperanto
|
||||
lang:107:eo:Esperanto:diff:en_LJ
|
||||
langdomain:eo:general
|
||||
langdomain:eo:journal/news
|
||||
langdomain:eo:faq
|
||||
|
||||
# Hebrew
|
||||
lang:108:he:Hebrew:diff:en_LJ
|
||||
langdomain:he:general
|
||||
langdomain:he:journal/news
|
||||
langdomain:he:faq
|
||||
|
||||
# Norwegian Bokmål
|
||||
lang:109:nb:Norwegian Bokmål:diff:en_LJ
|
||||
langdomain:nb:general
|
||||
langdomain:nb:journal/news
|
||||
langdomain:nb:faq
|
||||
|
||||
# Norwegian Nynorsk
|
||||
lang:110:nn:Norwegian Nynorsk:diff:en_LJ
|
||||
langdomain:nn:general
|
||||
langdomain:nn:journal/news
|
||||
langdomain:nn:faq
|
||||
|
||||
# Dutch
|
||||
lang:111:nl:Dutch:diff:en_LJ
|
||||
langdomain:nl:general
|
||||
langdomain:nl:journal/news
|
||||
langdomain:nl:faq
|
||||
|
||||
# Irish
|
||||
lang:112:ga:Irish:diff:en_LJ
|
||||
langdomain:ga:general
|
||||
langdomain:ga:journal/news
|
||||
langdomain:ga:faq
|
||||
|
||||
# Icelandic
|
||||
lang:113:is:Icelandic:diff:en_LJ
|
||||
langdomain:is:general
|
||||
langdomain:is:journal/news
|
||||
langdomain:is:faq
|
||||
|
||||
# European Portuguese
|
||||
lang:114:pt:Portuguese:diff:en_LJ
|
||||
langdomain:pt:general
|
||||
langdomain:pt:journal/news
|
||||
langdomain:pt:faq
|
||||
|
||||
# Swedish
|
||||
lang:115:sv:Swedish:diff:en_LJ
|
||||
langdomain:sv:general
|
||||
langdomain:sv:journal/news
|
||||
langdomain:sv:faq
|
||||
|
||||
# Polish
|
||||
lang:116:pl:Polish:diff:en_LJ
|
||||
langdomain:pl:general
|
||||
langdomain:pl:journal/news
|
||||
langdomain:pl:faq
|
||||
|
||||
# Finnish
|
||||
lang:117:fi:Finnish:diff:en_LJ
|
||||
langdomain:fi:general
|
||||
langdomain:fi:journal/news
|
||||
langdomain:fi:faq
|
||||
|
||||
# English - UK
|
||||
lang:118:en_GB:English (UK):sim:en_LJ
|
||||
langdomain:en_GB:general
|
||||
langdomain:en_GB:journal/news
|
||||
langdomain:en_GB:faq
|
||||
|
||||
# Hungarian
|
||||
lang:119:hu:Hungarian:diff:en_LJ
|
||||
langdomain:hu:general
|
||||
langdomain:hu:journal/news
|
||||
langdomain:hu:faq
|
||||
|
||||
# Malay
|
||||
lang:120:ms:Malay:diff:en_LJ
|
||||
langdomain:ms:general
|
||||
langdomain:ms:journal/news
|
||||
langdomain:ms:faq
|
||||
|
||||
# Chinese Simplified
|
||||
lang:121:zh:Chinese (Simplified):diff:en_LJ
|
||||
langdomain:zh:general
|
||||
langdomain:zh:journal/news
|
||||
langdomain:zh:faq
|
||||
|
||||
# Belarusian
|
||||
lang:122:be:Belarusian:diff:en_LJ
|
||||
langdomain:be:general
|
||||
langdomain:be:journal/news
|
||||
langdomain:be:faq
|
||||
|
||||
# Italian
|
||||
lang:123:it:Italian:diff:en_LJ
|
||||
langdomain:it:general
|
||||
langdomain:it:journal/news
|
||||
langdomain:it:faq
|
||||
|
||||
# Latvian
|
||||
lang:124:lv:Latvian:diff:en_LJ
|
||||
langdomain:lv:general
|
||||
langdomain:lv:journal/news
|
||||
langdomain:lv:faq
|
||||
|
||||
# Greek
|
||||
lang:125:gr:Greek:diff:en_LJ
|
||||
langdomain:gr:general
|
||||
langdomain:gr:journal/news
|
||||
langdomain:gr:faq
|
||||
|
||||
# Turkish
|
||||
lang:126:tr:Turkish:diff:en_LJ
|
||||
langdomain:tr:general
|
||||
langdomain:tr:journal/news
|
||||
langdomain:tr:faq
|
||||
|
||||
# Chinese Traditional
|
||||
lang:127:zh_TR:Chinese (Traditional):diff:zh
|
||||
langdomain:zh_TR:general
|
||||
langdomain:zh_TR:journal/news
|
||||
langdomain:zh_TR:faq
|
||||
|
||||
# Latin
|
||||
lang:128:la:Latin:diff:en_LJ
|
||||
langdomain:la:general
|
||||
langdomain:la:journal/news
|
||||
langdomain:la:faq
|
||||
|
||||
# Estonian
|
||||
lang:129:et:Estonian:diff:en_LJ
|
||||
langdomain:et:general
|
||||
langdomain:et:journal/news
|
||||
langdomain:et:faq
|
||||
|
||||
# Brazilian Portuguese
|
||||
lang:130:pt_BR:Brazilian Portuguese:diff:pt
|
||||
langdomain:pt_BR:general
|
||||
langdomain:pt_BR:journal/news
|
||||
langdomain:pt_BR:faq
|
||||
|
||||
# Ukrainian
|
||||
lang:131:uk:Ukrainian:diff:en_LJ
|
||||
langdomain:uk:general
|
||||
langdomain:uk:journal/news
|
||||
langdomain:uk:faq
|
||||
|
||||
# Lithuanian
|
||||
lang:132:lt:Lithuanian:diff:en_LJ
|
||||
langdomain:lt:general
|
||||
langdomain:lt:journal/news
|
||||
langdomain:lt:faq
|
||||
|
||||
# Hindi
|
||||
lang:133:hi:Hindi:diff:en_LJ
|
||||
langdomain:hi:general
|
||||
langdomain:hi:journal/news
|
||||
langdomain:hi:faq
|
||||
|
||||
# Basque
|
||||
lang:134:eu:Basque:diff:en_LJ
|
||||
langdomain:eu:general
|
||||
langdomain:eu:journal/news
|
||||
langdomain:eu:faq
|
||||
|
||||
# Afrikaans
|
||||
lang:135:af:Afrikaans:diff:en_LJ
|
||||
langdomain:af:general
|
||||
langdomain:af:journal/news
|
||||
langdomain:af:faq
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user