Merge branch '0.7.x' of git@gitorious.org:laconica/dev into 0.7.x
This commit is contained in:
commit
8cc19b90ee
11
EVENTS.txt
11
EVENTS.txt
|
@ -88,9 +88,18 @@ StartShowLocalNavBlock: Showing the local nav menu
|
||||||
EndShowLocalNavBlock: At the end of the local nav menu
|
EndShowLocalNavBlock: At the end of the local nav menu
|
||||||
- $action: the current action
|
- $action: the current action
|
||||||
|
|
||||||
StartShowHTML: Chance to set document content type, charset, language, DOCTYPE and html element properties
|
StartShowHTML: Chance to set document headers (e.g., content type, charset, language), DOCTYPE and html element properties
|
||||||
- $action: the current action
|
- $action: the current action
|
||||||
|
|
||||||
EndShowHTML: Showing after the html element
|
EndShowHTML: Showing after the html element
|
||||||
- $action: the current action
|
- $action: the current action
|
||||||
|
|
||||||
|
StartPublicGroupNav: Showing the public group nav menu
|
||||||
|
- $action: the current action
|
||||||
|
|
||||||
|
EndPublicGroupNav: At the end of the public group nav menu
|
||||||
|
- $action: the current action
|
||||||
|
|
||||||
|
RouterInitialized: After the router instance has been initialized
|
||||||
|
- $m: the Net_URL_Mapper that has just been set up
|
||||||
|
|
||||||
|
|
|
@ -324,11 +324,13 @@ class AvatarsettingsAction extends AccountSettingsAction
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If image is not being cropped assume pos & dimensions of original.
|
$file_d = ($filedata['width'] > $filedata['height'])
|
||||||
|
? $filedata['height'] : $filedata['width'];
|
||||||
|
|
||||||
$dest_x = $this->arg('avatar_crop_x') ? $this->arg('avatar_crop_x'):0;
|
$dest_x = $this->arg('avatar_crop_x') ? $this->arg('avatar_crop_x'):0;
|
||||||
$dest_y = $this->arg('avatar_crop_y') ? $this->arg('avatar_crop_y'):0;
|
$dest_y = $this->arg('avatar_crop_y') ? $this->arg('avatar_crop_y'):0;
|
||||||
$dest_w = $this->arg('avatar_crop_w') ? $this->arg('avatar_crop_w'):$filedata['width'];
|
$dest_w = $this->arg('avatar_crop_w') ? $this->arg('avatar_crop_w'):$file_d;
|
||||||
$dest_h = $this->arg('avatar_crop_h') ? $this->arg('avatar_crop_h'):$filedata['height'];
|
$dest_h = $this->arg('avatar_crop_h') ? $this->arg('avatar_crop_h'):$file_d;
|
||||||
$size = min($dest_w, $dest_h, MAX_ORIGINAL);
|
$size = min($dest_w, $dest_h, MAX_ORIGINAL);
|
||||||
|
|
||||||
$user = common_current_user();
|
$user = common_current_user();
|
||||||
|
|
|
@ -169,8 +169,14 @@ class FavoritedAction extends Action
|
||||||
|
|
||||||
function showContent()
|
function showContent()
|
||||||
{
|
{
|
||||||
|
if (common_config('db', 'type') == 'pgsql') {
|
||||||
|
$weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
|
||||||
|
} else {
|
||||||
|
$weightexpr='sum(exp(-(now() - fave.modified) / %s))';
|
||||||
|
}
|
||||||
|
|
||||||
$qry = 'SELECT notice.*, '.
|
$qry = 'SELECT notice.*, '.
|
||||||
'sum(exp(-(now() - fave.modified) / %s)) as weight ' .
|
$weightexpr . ' as weight ' .
|
||||||
'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
||||||
'GROUP BY fave.notice_id ' .
|
'GROUP BY fave.notice_id ' .
|
||||||
'ORDER BY weight DESC';
|
'ORDER BY weight DESC';
|
||||||
|
|
|
@ -152,6 +152,11 @@ class NewnoticeAction extends Action
|
||||||
}
|
}
|
||||||
|
|
||||||
$replyto = $this->trimmed('inreplyto');
|
$replyto = $this->trimmed('inreplyto');
|
||||||
|
#If an ID of 0 is wrongly passed here, it will cause a database error,
|
||||||
|
#so override it...
|
||||||
|
if ($replyto == 0) {
|
||||||
|
$replyto = 'false';
|
||||||
|
}
|
||||||
|
|
||||||
$notice = Notice::saveNew($user->id, $content, 'web', 1,
|
$notice = Notice::saveNew($user->id, $content, 'web', 1,
|
||||||
($replyto == 'false') ? null : $replyto);
|
($replyto == 'false') ? null : $replyto);
|
||||||
|
|
|
@ -585,7 +585,7 @@ class Notice extends Memcached_DataObject
|
||||||
$inbox = new Notice_inbox();
|
$inbox = new Notice_inbox();
|
||||||
$UT = common_config('db','type')=='pgsql'?'"user"':'user';
|
$UT = common_config('db','type')=='pgsql'?'"user"':'user';
|
||||||
$qry = 'INSERT INTO notice_inbox (user_id, notice_id, created) ' .
|
$qry = 'INSERT INTO notice_inbox (user_id, notice_id, created) ' .
|
||||||
"SELECT $UT.id, " . $this->id . ', "' . $this->created . '" ' .
|
"SELECT $UT.id, " . $this->id . ", '" . $this->created . "' " .
|
||||||
"FROM $UT JOIN subscription ON $UT.id = subscription.subscriber " .
|
"FROM $UT JOIN subscription ON $UT.id = subscription.subscriber " .
|
||||||
'WHERE subscription.subscribed = ' . $this->profile_id . ' ' .
|
'WHERE subscription.subscribed = ' . $this->profile_id . ' ' .
|
||||||
'AND NOT EXISTS (SELECT user_id, notice_id ' .
|
'AND NOT EXISTS (SELECT user_id, notice_id ' .
|
||||||
|
@ -655,7 +655,7 @@ class Notice extends Memcached_DataObject
|
||||||
$inbox = new Notice_inbox();
|
$inbox = new Notice_inbox();
|
||||||
$UT = common_config('db','type')=='pgsql'?'"user"':'user';
|
$UT = common_config('db','type')=='pgsql'?'"user"':'user';
|
||||||
$qry = 'INSERT INTO notice_inbox (user_id, notice_id, created, source) ' .
|
$qry = 'INSERT INTO notice_inbox (user_id, notice_id, created, source) ' .
|
||||||
"SELECT $UT.id, " . $this->id . ', "' . $this->created . '", 2 ' .
|
"SELECT $UT.id, " . $this->id . ", '" . $this->created . "', 2 " .
|
||||||
"FROM $UT JOIN group_member ON $UT.id = group_member.profile_id " .
|
"FROM $UT JOIN group_member ON $UT.id = group_member.profile_id " .
|
||||||
'WHERE group_member.group_id = ' . $group->id . ' ' .
|
'WHERE group_member.group_id = ' . $group->id . ' ' .
|
||||||
'AND NOT EXISTS (SELECT user_id, notice_id ' .
|
'AND NOT EXISTS (SELECT user_id, notice_id ' .
|
||||||
|
|
|
@ -34,6 +34,9 @@ $config['site']['path'] = 'laconica';
|
||||||
# If you want logging sent to a file instead of syslog
|
# If you want logging sent to a file instead of syslog
|
||||||
#$config['site']['logfile'] = '/tmp/laconica.log';
|
#$config['site']['logfile'] = '/tmp/laconica.log';
|
||||||
|
|
||||||
|
# Enables extra log information, for example full details of PEAR DB errors
|
||||||
|
#$config['site']['logdebug'] = true;
|
||||||
|
|
||||||
# This is a PEAR DB DSN, see http://pear.php.net/manual/en/package.database.db.intro-dsn.php
|
# This is a PEAR DB DSN, see http://pear.php.net/manual/en/package.database.db.intro-dsn.php
|
||||||
# Set it to match your actual database
|
# Set it to match your actual database
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ create table profile (
|
||||||
homepage varchar(255) /* comment 'identifying URL' */,
|
homepage varchar(255) /* comment 'identifying URL' */,
|
||||||
bio varchar(140) /* comment 'descriptive biography' */,
|
bio varchar(140) /* comment 'descriptive biography' */,
|
||||||
location varchar(255) /* comment 'physical location' */,
|
location varchar(255) /* comment 'physical location' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
|
|
||||||
textsearch tsvector
|
textsearch tsvector
|
||||||
|
@ -23,7 +23,7 @@ create table avatar (
|
||||||
mediatype varchar(32) not null /* comment 'file type' */,
|
mediatype varchar(32) not null /* comment 'file type' */,
|
||||||
filename varchar(255) null /* comment 'local filename, if local' */,
|
filename varchar(255) null /* comment 'local filename, if local' */,
|
||||||
url varchar(255) unique /* comment 'avatar location' */,
|
url varchar(255) unique /* comment 'avatar location' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
|
|
||||||
primary key(profile_id, width, height)
|
primary key(profile_id, width, height)
|
||||||
|
@ -34,7 +34,7 @@ create table sms_carrier (
|
||||||
id serial primary key /* comment 'primary key for SMS carrier' */,
|
id serial primary key /* comment 'primary key for SMS carrier' */,
|
||||||
name varchar(64) unique /* comment 'name of the carrier' */,
|
name varchar(64) unique /* comment 'name of the carrier' */,
|
||||||
email_pattern varchar(255) not null /* comment 'sprintf pattern for making an email address from a phone number' */,
|
email_pattern varchar(255) not null /* comment 'sprintf pattern for making an email address from a phone number' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified ' */
|
modified timestamp /* comment 'date this record was modified ' */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ create table "user" (
|
||||||
emailnotifyfav integer default 1 /* comment 'Notify by email of favorites' */,
|
emailnotifyfav integer default 1 /* comment 'Notify by email of favorites' */,
|
||||||
emailnotifynudge integer default 1 /* comment 'Notify by email of nudges' */,
|
emailnotifynudge integer default 1 /* comment 'Notify by email of nudges' */,
|
||||||
emailnotifymsg integer default 1 /* comment 'Notify by email of direct messages' */,
|
emailnotifymsg integer default 1 /* comment 'Notify by email of direct messages' */,
|
||||||
|
emailnotifyattn integer default 1 /* command 'Notify by email of @-replies' */,
|
||||||
emailmicroid integer default 1 /* comment 'whether to publish email microid' */,
|
emailmicroid integer default 1 /* comment 'whether to publish email microid' */,
|
||||||
language varchar(50) /* comment 'preferred language' */,
|
language varchar(50) /* comment 'preferred language' */,
|
||||||
timezone varchar(50) /* comment 'timezone' */,
|
timezone varchar(50) /* comment 'timezone' */,
|
||||||
|
@ -68,7 +69,7 @@ create table "user" (
|
||||||
autosubscribe integer default 0 /* comment 'automatically subscribe to users who subscribe to us' */,
|
autosubscribe integer default 0 /* comment 'automatically subscribe to users who subscribe to us' */,
|
||||||
urlshorteningservice varchar(50) default 'ur1.ca' /* comment 'service to use for auto-shortening URLs' */,
|
urlshorteningservice varchar(50) default 'ur1.ca' /* comment 'service to use for auto-shortening URLs' */,
|
||||||
inboxed integer default 0 /* comment 'has an inbox been created for this user?' */,
|
inboxed integer default 0 /* comment 'has an inbox been created for this user?' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */
|
modified timestamp /* comment 'date this record was modified' */
|
||||||
|
|
||||||
);
|
);
|
||||||
|
@ -81,7 +82,7 @@ create table remote_profile (
|
||||||
uri varchar(255) unique /* comment 'universally unique identifier, usually a tag URI' */,
|
uri varchar(255) unique /* comment 'universally unique identifier, usually a tag URI' */,
|
||||||
postnoticeurl varchar(255) /* comment 'URL we use for posting notices' */,
|
postnoticeurl varchar(255) /* comment 'URL we use for posting notices' */,
|
||||||
updateprofileurl varchar(255) /* comment 'URL we use for updates to this profile' */,
|
updateprofileurl varchar(255) /* comment 'URL we use for updates to this profile' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */
|
modified timestamp /* comment 'date this record was modified' */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -92,7 +93,7 @@ create table subscription (
|
||||||
sms integer default 1 /* comment 'deliver sms messages' */,
|
sms integer default 1 /* comment 'deliver sms messages' */,
|
||||||
token varchar(255) /* comment 'authorization token' */,
|
token varchar(255) /* comment 'authorization token' */,
|
||||||
secret varchar(255) /* comment 'token secret' */,
|
secret varchar(255) /* comment 'token secret' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
|
|
||||||
primary key (subscriber, subscribed)
|
primary key (subscriber, subscribed)
|
||||||
|
@ -108,7 +109,7 @@ create table notice (
|
||||||
content varchar(140) /* comment 'update content' */,
|
content varchar(140) /* comment 'update content' */,
|
||||||
rendered text /* comment 'HTML version of the content' */,
|
rendered text /* comment 'HTML version of the content' */,
|
||||||
url varchar(255) /* comment 'URL of any attachment (image, video, bookmark, whatever)' */,
|
url varchar(255) /* comment 'URL of any attachment (image, video, bookmark, whatever)' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
reply_to integer /* comment 'notice replied to (usually a guess)' */ references notice (id) ,
|
reply_to integer /* comment 'notice replied to (usually a guess)' */ references notice (id) ,
|
||||||
is_local integer default 0 /* comment 'notice was generated by a user' */,
|
is_local integer default 0 /* comment 'notice was generated by a user' */,
|
||||||
|
@ -123,7 +124,7 @@ create table notice_source (
|
||||||
code varchar(32) primary key not null /* comment 'source code' */,
|
code varchar(32) primary key not null /* comment 'source code' */,
|
||||||
name varchar(255) not null /* comment 'name of the source' */,
|
name varchar(255) not null /* comment 'name of the source' */,
|
||||||
url varchar(255) not null /* comment 'url to link to' */,
|
url varchar(255) not null /* comment 'url to link to' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */
|
modified timestamp /* comment 'date this record was modified' */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -131,7 +132,7 @@ create table reply (
|
||||||
|
|
||||||
notice_id integer not null /* comment 'notice that is the reply' */ references notice (id) ,
|
notice_id integer not null /* comment 'notice that is the reply' */ references notice (id) ,
|
||||||
profile_id integer not null /* comment 'profile replied to' */ references profile (id) ,
|
profile_id integer not null /* comment 'profile replied to' */ references profile (id) ,
|
||||||
modified timestamp not null default 'now' /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
replied_id integer /* comment 'notice replied to (not used, see notice.reply_to)' */,
|
replied_id integer /* comment 'notice replied to (not used, see notice.reply_to)' */,
|
||||||
|
|
||||||
primary key (notice_id, profile_id)
|
primary key (notice_id, profile_id)
|
||||||
|
@ -145,7 +146,7 @@ create table fave (
|
||||||
|
|
||||||
notice_id integer not null /* comment 'notice that is the favorite' */ references notice (id),
|
notice_id integer not null /* comment 'notice that is the favorite' */ references notice (id),
|
||||||
user_id integer not null /* comment 'user who likes this notice' */ references "user" (id) ,
|
user_id integer not null /* comment 'user who likes this notice' */ references "user" (id) ,
|
||||||
modified timestamp not null /* comment 'date this record was modified' */,
|
modified timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was modified' */,
|
||||||
primary key (notice_id, user_id)
|
primary key (notice_id, user_id)
|
||||||
|
|
||||||
);
|
);
|
||||||
|
@ -159,7 +160,7 @@ create table consumer (
|
||||||
consumer_key varchar(255) primary key /* comment 'unique identifier, root URL' */,
|
consumer_key varchar(255) primary key /* comment 'unique identifier, root URL' */,
|
||||||
seed char(32) not null /* comment 'seed for new tokens by this consumer' */,
|
seed char(32) not null /* comment 'seed for new tokens by this consumer' */,
|
||||||
|
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */
|
modified timestamp /* comment 'date this record was modified' */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -170,7 +171,7 @@ create table token (
|
||||||
type integer not null default 0 /* comment 'request or access' */,
|
type integer not null default 0 /* comment 'request or access' */,
|
||||||
state integer default 0 /* comment 'for requests; 0 = initial, 1 = authorized, 2 = used' */,
|
state integer default 0 /* comment 'for requests; 0 = initial, 1 = authorized, 2 = used' */,
|
||||||
|
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
|
|
||||||
primary key (consumer_key, tok)
|
primary key (consumer_key, tok)
|
||||||
|
@ -182,7 +183,7 @@ create table nonce (
|
||||||
nonce char(32) not null /* comment 'nonce' */,
|
nonce char(32) not null /* comment 'nonce' */,
|
||||||
ts timestamp not null /* comment 'timestamp sent' */,
|
ts timestamp not null /* comment 'timestamp sent' */,
|
||||||
|
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
|
|
||||||
primary key (consumer_key, tok, nonce),
|
primary key (consumer_key, tok, nonce),
|
||||||
|
@ -195,7 +196,7 @@ create table user_openid (
|
||||||
canonical varchar(255) primary key /* comment 'Canonical true URL' */,
|
canonical varchar(255) primary key /* comment 'Canonical true URL' */,
|
||||||
display varchar(255) not null unique /* comment 'URL for viewing, may be different from canonical' */,
|
display varchar(255) not null unique /* comment 'URL for viewing, may be different from canonical' */,
|
||||||
user_id integer not null /* comment 'user owning this URL' */ references "user" (id) ,
|
user_id integer not null /* comment 'user owning this URL' */ references "user" (id) ,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */
|
modified timestamp /* comment 'date this record was modified' */
|
||||||
|
|
||||||
);
|
);
|
||||||
|
@ -241,7 +242,7 @@ create table queue_item (
|
||||||
|
|
||||||
notice_id integer not null /* comment 'notice queued' */ references notice (id) ,
|
notice_id integer not null /* comment 'notice queued' */ references notice (id) ,
|
||||||
transport varchar(8) not null /* comment 'queue for what? "email", "jabber", "sms", "irc", ...' */,
|
transport varchar(8) not null /* comment 'queue for what? "email", "jabber", "sms", "irc", ...' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
claimed timestamp /* comment 'date this item was claimed' */,
|
claimed timestamp /* comment 'date this item was claimed' */,
|
||||||
|
|
||||||
primary key (notice_id, transport)
|
primary key (notice_id, transport)
|
||||||
|
@ -253,7 +254,7 @@ create index queue_item_created_idx on queue_item using btree(created);
|
||||||
create table notice_tag (
|
create table notice_tag (
|
||||||
tag varchar( 64 ) not null /* comment 'hash tag associated with this notice' */,
|
tag varchar( 64 ) not null /* comment 'hash tag associated with this notice' */,
|
||||||
notice_id integer not null /* comment 'notice tagged' */ references notice (id) ,
|
notice_id integer not null /* comment 'notice tagged' */ references notice (id) ,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
|
|
||||||
primary key (tag, notice_id)
|
primary key (tag, notice_id)
|
||||||
);
|
);
|
||||||
|
@ -265,7 +266,7 @@ create table foreign_service (
|
||||||
id int not null primary key /* comment 'numeric key for service' */,
|
id int not null primary key /* comment 'numeric key for service' */,
|
||||||
name varchar(32) not null unique /* comment 'name of the service' */,
|
name varchar(32) not null unique /* comment 'name of the service' */,
|
||||||
description varchar(255) /* comment 'description' */,
|
description varchar(255) /* comment 'description' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */
|
modified timestamp /* comment 'date this record was modified' */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -274,7 +275,7 @@ create table foreign_user (
|
||||||
service int not null /* comment 'foreign key to service' */ references foreign_service(id) ,
|
service int not null /* comment 'foreign key to service' */ references foreign_service(id) ,
|
||||||
uri varchar(255) not null unique /* comment 'identifying URI' */,
|
uri varchar(255) not null unique /* comment 'identifying URI' */,
|
||||||
nickname varchar(255) /* comment 'nickname on foreign service' */,
|
nickname varchar(255) /* comment 'nickname on foreign service' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
|
|
||||||
primary key (id, service)
|
primary key (id, service)
|
||||||
|
@ -288,8 +289,8 @@ create table foreign_link (
|
||||||
noticesync int not null default 1 /* comment 'notice synchronisation, bit 1 = sync outgoing, bit 2 = sync incoming, bit 3 = filter local replies' */,
|
noticesync int not null default 1 /* comment 'notice synchronisation, bit 1 = sync outgoing, bit 2 = sync incoming, bit 3 = filter local replies' */,
|
||||||
friendsync int not null default 2 /* comment 'friend synchronisation, bit 1 = sync outgoing, bit 2 = sync incoming */,
|
friendsync int not null default 2 /* comment 'friend synchronisation, bit 1 = sync outgoing, bit 2 = sync incoming */,
|
||||||
profilesync int not null default 1 /* comment 'profile synchronization, bit 1 = sync outgoing, bit 2 = sync incoming' */,
|
profilesync int not null default 1 /* comment 'profile synchronization, bit 1 = sync outgoing, bit 2 = sync incoming' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp not null /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
|
|
||||||
primary key (user_id,foreign_id,service)
|
primary key (user_id,foreign_id,service)
|
||||||
);
|
);
|
||||||
|
@ -299,7 +300,7 @@ create table foreign_subscription (
|
||||||
service int not null /* comment 'service where relationship happens' */ references foreign_service(id) ,
|
service int not null /* comment 'service where relationship happens' */ references foreign_service(id) ,
|
||||||
subscriber int not null /* comment 'subscriber on foreign service' */ ,
|
subscriber int not null /* comment 'subscriber on foreign service' */ ,
|
||||||
subscribed int not null /* comment 'subscribed user' */ ,
|
subscribed int not null /* comment 'subscribed user' */ ,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
|
|
||||||
primary key (service, subscriber, subscribed)
|
primary key (service, subscriber, subscribed)
|
||||||
);
|
);
|
||||||
|
@ -311,7 +312,7 @@ create table invitation (
|
||||||
user_id int not null /* comment 'who sent the invitation' */ references "user" (id),
|
user_id int not null /* comment 'who sent the invitation' */ references "user" (id),
|
||||||
address varchar(255) not null /* comment 'invitation sent to' */,
|
address varchar(255) not null /* comment 'invitation sent to' */,
|
||||||
address_type varchar(8) not null /* comment 'address type ("email", "jabber", "sms") '*/,
|
address_type varchar(8) not null /* comment 'address type ("email", "jabber", "sms") '*/,
|
||||||
created timestamp not null /* comment 'date this record was created' */
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */
|
||||||
|
|
||||||
);
|
);
|
||||||
create index invitation_address_idx on invitation using btree(address,address_type);
|
create index invitation_address_idx on invitation using btree(address,address_type);
|
||||||
|
@ -326,7 +327,7 @@ create table message (
|
||||||
content varchar(140) /* comment 'message content' */,
|
content varchar(140) /* comment 'message content' */,
|
||||||
rendered text /* comment 'HTML version of the content' */,
|
rendered text /* comment 'HTML version of the content' */,
|
||||||
url varchar(255) /* comment 'URL of any attachment (image, video, bookmark, whatever)' */,
|
url varchar(255) /* comment 'URL of any attachment (image, video, bookmark, whatever)' */,
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
source varchar(32) /* comment 'source of comment, like "web", "im", or "clientname"' */
|
source varchar(32) /* comment 'source of comment, like "web", "im", or "clientname"' */
|
||||||
|
|
||||||
|
@ -339,7 +340,7 @@ create table notice_inbox (
|
||||||
|
|
||||||
user_id integer not null /* comment 'user receiving the message' */ references "user" (id),
|
user_id integer not null /* comment 'user receiving the message' */ references "user" (id),
|
||||||
notice_id integer not null /* comment 'notice received' */ references notice (id),
|
notice_id integer not null /* comment 'notice received' */ references notice (id),
|
||||||
created timestamp not null /* comment 'date the notice was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date the notice was created' */,
|
||||||
source integer default 1 /* comment 'reason it is in the inbox; 1=subscription' */,
|
source integer default 1 /* comment 'reason it is in the inbox; 1=subscription' */,
|
||||||
|
|
||||||
primary key (user_id, notice_id)
|
primary key (user_id, notice_id)
|
||||||
|
@ -382,7 +383,7 @@ create table user_group (
|
||||||
stream_logo varchar(255) /* comment 'stream-sized logo' */,
|
stream_logo varchar(255) /* comment 'stream-sized logo' */,
|
||||||
mini_logo varchar(255) /* comment 'mini logo' */,
|
mini_logo varchar(255) /* comment 'mini logo' */,
|
||||||
|
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */
|
modified timestamp /* comment 'date this record was modified' */
|
||||||
|
|
||||||
);
|
);
|
||||||
|
@ -394,7 +395,7 @@ create table group_member (
|
||||||
profile_id integer not null /* comment 'foreign key to profile table' */ references profile (id),
|
profile_id integer not null /* comment 'foreign key to profile table' */ references profile (id),
|
||||||
is_admin integer default 0 /* comment 'is this user an admin?' */,
|
is_admin integer default 0 /* comment 'is this user an admin?' */,
|
||||||
|
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
|
|
||||||
primary key (group_id, profile_id)
|
primary key (group_id, profile_id)
|
||||||
|
@ -405,7 +406,7 @@ create table related_group (
|
||||||
group_id integer not null /* comment 'foreign key to user_group' */ references user_group (id) ,
|
group_id integer not null /* comment 'foreign key to user_group' */ references user_group (id) ,
|
||||||
related_group_id integer not null /* comment 'foreign key to user_group' */ references user_group (id),
|
related_group_id integer not null /* comment 'foreign key to user_group' */ references user_group (id),
|
||||||
|
|
||||||
created timestamp not null /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
|
|
||||||
primary key (group_id, related_group_id)
|
primary key (group_id, related_group_id)
|
||||||
|
|
||||||
|
@ -414,7 +415,7 @@ create table related_group (
|
||||||
create table group_inbox (
|
create table group_inbox (
|
||||||
group_id integer not null /* comment 'group receiving the message' references user_group (id) */,
|
group_id integer not null /* comment 'group receiving the message' references user_group (id) */,
|
||||||
notice_id integer not null /* comment 'notice received' references notice (id) */,
|
notice_id integer not null /* comment 'notice received' references notice (id) */,
|
||||||
created timestamp not null /* comment 'date the notice was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date the notice was created' */,
|
||||||
|
|
||||||
primary key (group_id, notice_id)
|
primary key (group_id, notice_id)
|
||||||
);
|
);
|
||||||
|
|
|
@ -43,7 +43,11 @@ function handleError($error)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
common_log(LOG_ERR, "PEAR error: " . $error->getMessage());
|
$logmsg = "PEAR error: " . $error->getMessage();
|
||||||
|
if(common_config('site', 'logdebug')) {
|
||||||
|
$logmsg .= " : ". $error->getDebugInfo();
|
||||||
|
}
|
||||||
|
common_log(LOG_ERR, $logmsg);
|
||||||
$msg = sprintf(_('The database for %s isn\'t responding correctly, '.
|
$msg = sprintf(_('The database for %s isn\'t responding correctly, '.
|
||||||
'so the site won\'t work properly. '.
|
'so the site won\'t work properly. '.
|
||||||
'The site admins probably know about the problem, '.
|
'The site admins probably know about the problem, '.
|
||||||
|
|
|
@ -37,10 +37,3 @@
|
||||||
$('#avatar_crop_w').val(c.w);
|
$('#avatar_crop_w').val(c.w);
|
||||||
$('#avatar_crop_h').val(c.h);
|
$('#avatar_crop_h').val(c.h);
|
||||||
};
|
};
|
||||||
|
|
||||||
function checkCoords() {
|
|
||||||
if (parseInt($('#avatar_crop_w').val())) return true;
|
|
||||||
alert('Please select a crop region then press submit.');
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,7 @@ $config =
|
||||||
'theme' => 'default',
|
'theme' => 'default',
|
||||||
'path' => $_path,
|
'path' => $_path,
|
||||||
'logfile' => null,
|
'logfile' => null,
|
||||||
|
'logdebug' => false,
|
||||||
'fancy' => false,
|
'fancy' => false,
|
||||||
'locale_path' => INSTALLDIR.'/locale',
|
'locale_path' => INSTALLDIR.'/locale',
|
||||||
'language' => 'en_US',
|
'language' => 'en_US',
|
||||||
|
|
|
@ -45,7 +45,7 @@ class GroupsByMembersSection extends GroupSection
|
||||||
{
|
{
|
||||||
function getGroups()
|
function getGroups()
|
||||||
{
|
{
|
||||||
$qry = 'SELECT user_group.*, count(*) as value ' .
|
$qry = 'SELECT user_group.id, count(*) as value ' .
|
||||||
'FROM user_group JOIN group_member '.
|
'FROM user_group JOIN group_member '.
|
||||||
'ON user_group.id = group_member.group_id ' .
|
'ON user_group.id = group_member.group_id ' .
|
||||||
'GROUP BY user_group.id ' .
|
'GROUP BY user_group.id ' .
|
||||||
|
|
|
@ -45,7 +45,7 @@ class GroupsByPostsSection extends GroupSection
|
||||||
{
|
{
|
||||||
function getGroups()
|
function getGroups()
|
||||||
{
|
{
|
||||||
$qry = 'SELECT user_group.*, count(*) as value ' .
|
$qry = 'SELECT user_group.id, count(*) as value ' .
|
||||||
'FROM user_group JOIN group_inbox '.
|
'FROM user_group JOIN group_inbox '.
|
||||||
'ON user_group.id = group_inbox.group_id ' .
|
'ON user_group.id = group_inbox.group_id ' .
|
||||||
'GROUP BY user_group.id ' .
|
'GROUP BY user_group.id ' .
|
||||||
|
|
|
@ -58,8 +58,14 @@ class GroupTagCloudSection extends TagCloudSection
|
||||||
|
|
||||||
function getTags()
|
function getTags()
|
||||||
{
|
{
|
||||||
|
if (common_config('db', 'type') == 'pgsql') {
|
||||||
|
$weightexpr='sum(exp(-extract(epoch from (now() - notice_tag.created)) / %s))';
|
||||||
|
} else {
|
||||||
|
$weightexpr='sum(exp(-(now() - notice_tag.created) / %s))';
|
||||||
|
}
|
||||||
|
|
||||||
$qry = 'SELECT notice_tag.tag, '.
|
$qry = 'SELECT notice_tag.tag, '.
|
||||||
'sum(exp(-(now() - notice_tag.created)/%s)) as weight ' .
|
$weightexpr . ' as weight ' .
|
||||||
'FROM notice_tag JOIN notice ' .
|
'FROM notice_tag JOIN notice ' .
|
||||||
'ON notice_tag.notice_id = notice.id ' .
|
'ON notice_tag.notice_id = notice.id ' .
|
||||||
'JOIN group_inbox on group_inbox.notice_id = notice.id ' .
|
'JOIN group_inbox on group_inbox.notice_id = notice.id ' .
|
||||||
|
|
|
@ -58,8 +58,14 @@ class PersonalTagCloudSection extends TagCloudSection
|
||||||
|
|
||||||
function getTags()
|
function getTags()
|
||||||
{
|
{
|
||||||
|
if (common_config('db', 'type') == 'pgsql') {
|
||||||
|
$weightexpr='sum(exp(-extract(epoch from (now() - notice_tag.created)) / %s))';
|
||||||
|
} else {
|
||||||
|
$weightexpr='sum(exp(-(now() - notice_tag.created) / %s))';
|
||||||
|
}
|
||||||
|
|
||||||
$qry = 'SELECT notice_tag.tag, '.
|
$qry = 'SELECT notice_tag.tag, '.
|
||||||
'sum(exp(-(now() - notice_tag.created)/%s)) as weight ' .
|
$weightexpr . ' as weight ' .
|
||||||
'FROM notice_tag JOIN notice ' .
|
'FROM notice_tag JOIN notice ' .
|
||||||
'ON notice_tag.notice_id = notice.id ' .
|
'ON notice_tag.notice_id = notice.id ' .
|
||||||
'WHERE notice.profile_id = %d ' .
|
'WHERE notice.profile_id = %d ' .
|
||||||
|
|
|
@ -48,10 +48,16 @@ class PopularNoticeSection extends NoticeSection
|
||||||
{
|
{
|
||||||
function getNotices()
|
function getNotices()
|
||||||
{
|
{
|
||||||
$qry = 'SELECT notice.*, '.
|
if (common_config('db', 'type') == 'pgsql') {
|
||||||
'sum(exp(-(now() - fave.modified) / %s)) as weight ' .
|
$weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
|
||||||
|
} else {
|
||||||
|
$weightexpr='sum(exp(-(now() - fave.modified) / %s))';
|
||||||
|
}
|
||||||
|
|
||||||
|
$qry = 'SELECT notice.id, '.
|
||||||
|
$weightexpr . ' as weight ' .
|
||||||
'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
||||||
'GROUP BY fave.notice_id ' .
|
'GROUP BY notice.id ' .
|
||||||
'ORDER BY weight DESC';
|
'ORDER BY weight DESC';
|
||||||
|
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
|
|
|
@ -39,6 +39,7 @@ require_once INSTALLDIR.'/lib/widget.php';
|
||||||
* @category Output
|
* @category Output
|
||||||
* @package Laconica
|
* @package Laconica
|
||||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
* @author Evan Prodromou <evan@controlyourself.ca>
|
||||||
|
* @author Sarven Capadisli <csarven@controlyourself.ca>
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://laconi.ca/
|
* @link http://laconi.ca/
|
||||||
*
|
*
|
||||||
|
@ -73,6 +74,7 @@ class PublicGroupNav extends Widget
|
||||||
|
|
||||||
$this->action->elementStart('ul', array('class' => 'nav'));
|
$this->action->elementStart('ul', array('class' => 'nav'));
|
||||||
|
|
||||||
|
if (Event::handle('StartPublicGroupNav', array($this))) {
|
||||||
$this->out->menuItem(common_local_url('public'), _('Public'),
|
$this->out->menuItem(common_local_url('public'), _('Public'),
|
||||||
_('Public timeline'), $action_name == 'public', 'nav_timeline_public');
|
_('Public timeline'), $action_name == 'public', 'nav_timeline_public');
|
||||||
|
|
||||||
|
@ -90,6 +92,8 @@ class PublicGroupNav extends Widget
|
||||||
$this->out->menuItem(common_local_url('favorited'), _('Popular'),
|
$this->out->menuItem(common_local_url('favorited'), _('Popular'),
|
||||||
_("Popular notices"), $action_name == 'favorited', 'nav_timeline_favorited');
|
_("Popular notices"), $action_name == 'favorited', 'nav_timeline_favorited');
|
||||||
|
|
||||||
|
Event::handle('EndPublicGroupNav', array($this));
|
||||||
|
}
|
||||||
$this->action->elementEnd('ul');
|
$this->action->elementEnd('ul');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -393,6 +393,8 @@ class Router
|
||||||
array('action' => 'showstream'),
|
array('action' => 'showstream'),
|
||||||
array('nickname' => '[a-zA-Z0-9]{1,64}'));
|
array('nickname' => '[a-zA-Z0-9]{1,64}'));
|
||||||
|
|
||||||
|
Event::handle('RouterInitialized', array($m));
|
||||||
|
|
||||||
return $m;
|
return $m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,21 @@
|
||||||
*
|
*
|
||||||
* @package Laconica
|
* @package Laconica
|
||||||
* @author Meitar Moscovitz <meitar@maymay.net>
|
* @author Meitar Moscovitz <meitar@maymay.net>
|
||||||
|
* @author Sarven Capadisli <csarven@controlyourself.ca>
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://laconi.ca/
|
* @link http://laconi.ca/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Go linear. */
|
body {
|
||||||
|
font-size:2.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wrap {
|
||||||
|
width:95%;
|
||||||
|
}
|
||||||
|
|
||||||
#header,
|
#header,
|
||||||
#header address,
|
#header address,
|
||||||
#site_nav_global_primary,
|
|
||||||
#anon_notice,
|
#anon_notice,
|
||||||
#site_nav_local_views .nav,
|
#site_nav_local_views .nav,
|
||||||
#form_notice,
|
#form_notice,
|
||||||
|
@ -24,49 +31,120 @@
|
||||||
.notice .notice-options a,
|
.notice .notice-options a,
|
||||||
.pagination,
|
.pagination,
|
||||||
.pagination .nav,
|
.pagination .nav,
|
||||||
.aside .section { float: none; }
|
.aside .section {
|
||||||
|
float:none;
|
||||||
|
}
|
||||||
|
|
||||||
.notice-options .notice_reply,
|
.notice-options .notice_reply,
|
||||||
.notice-options .notice_delete,
|
.notice-options .notice_delete,
|
||||||
.notice-options .form_favor,
|
.notice-options .form_favor,
|
||||||
.notice-options .form_disfavor { position: static; }
|
.notice-options .form_disfavor {
|
||||||
|
position:static;
|
||||||
|
}
|
||||||
|
|
||||||
#form_notice,
|
#form_notice,
|
||||||
#anon_notice,
|
#anon_notice,
|
||||||
#content_inner,
|
#footer,
|
||||||
#footer { width: auto; }
|
#form_notice .form_actions input.submit {
|
||||||
|
width:auto;
|
||||||
|
}
|
||||||
|
|
||||||
/* And liquid. */
|
.form_settings label {
|
||||||
#wrap { width: 95%; }
|
width:25%;
|
||||||
|
}
|
||||||
|
.form_settings .form_data p.form_guide {
|
||||||
|
margin-left:26%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Make things bigger on smaller screens. */
|
#site_nav_global_primary {
|
||||||
body { font-size: 2em; }
|
width:75%;
|
||||||
.notices { font-size: 1.5em; }
|
}
|
||||||
|
|
||||||
#site_nav_global_primary, #site_nav_global_secondary { text-align: center; }
|
.entity_profile {
|
||||||
|
width:65%;
|
||||||
|
}
|
||||||
|
.entity_actions {
|
||||||
|
margin-left:0;
|
||||||
|
}
|
||||||
|
|
||||||
.notice div.entry-content { margin-left: 0; }
|
#form_notice,
|
||||||
address { margin: 0; }
|
#anon_notice {
|
||||||
|
clear:both;
|
||||||
|
}
|
||||||
|
|
||||||
#anon_notice, #footer { clear: left; font-size: .5em; }
|
#content,
|
||||||
|
#aside_primary {
|
||||||
|
width:96%;
|
||||||
|
padding-left:2%;
|
||||||
|
padding-right:2%;
|
||||||
|
}
|
||||||
|
|
||||||
#form_notice textarea { width: 80%; height: 5em; }
|
#site_notice {
|
||||||
#form_notice .form_note { right: 20%; top: 6em; }
|
position:static;
|
||||||
#form_notice .form_actions input.submit { width: auto; }
|
float:right;
|
||||||
|
clear:right;
|
||||||
|
width:75%;
|
||||||
|
margin-right:0;
|
||||||
|
margin-bottom:11px;
|
||||||
|
}
|
||||||
|
|
||||||
#content { padding: 18px 0; width: 100%; }
|
.notices {
|
||||||
#content h1, #page_notice, #content_inner { padding: 0 18px; }
|
font-size:1.5em;
|
||||||
.notices .entry-title, .notices div.entry-content { width: 90%; }
|
}
|
||||||
.notice .author .photo { height: 4.5em; width: 4.5em; } /* about double physical size; TODO: do this scaling better */
|
|
||||||
.notice-options { position: absolute; top: 0; right: 0; padding-left: 7%; width: 3%; }
|
|
||||||
.notice-options .notice_delete a { float: left; } /* Works, but feels like it shouldn't. */
|
|
||||||
/* TODO: Make the icons of the notice options bigger. Probably with mobile-specific images. */
|
|
||||||
.pagination .nav { overflow: auto; }
|
|
||||||
|
|
||||||
#aside_primary { margin: 10px 0 0 0; border: none; padding: 0; width: 100%; }
|
#form_notice textarea {
|
||||||
#popular_notices { float: none; width: auto; }
|
width:80%;
|
||||||
/* Columns for supplemental info. */
|
height:5em;
|
||||||
.aside .section { clear: none; padding: 9px; width: 45%; }
|
}
|
||||||
#top_groups_by_post { float: left; }
|
#form_notice .form_note {
|
||||||
#featured_users { float: right; }
|
right:20%;
|
||||||
#export_data { display: none; }
|
top:6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.vcard .photo,
|
||||||
|
.section .vcard .photo {
|
||||||
|
margin-right:18px;
|
||||||
|
}
|
||||||
|
.notice,
|
||||||
|
.profile {
|
||||||
|
margin-bottom:18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notices .entry-title,
|
||||||
|
.notices div.entry-content {
|
||||||
|
width:90%;
|
||||||
|
}
|
||||||
|
.notice div.entry-content {
|
||||||
|
margin-left:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice .author .photo {
|
||||||
|
height:4.5em;
|
||||||
|
width:4.5em;
|
||||||
|
}
|
||||||
|
.notice-options {
|
||||||
|
position:absolute;
|
||||||
|
top:0;
|
||||||
|
right:0;
|
||||||
|
padding-left:7%;
|
||||||
|
width:3%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice-options .notice_delete a {
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
.pagination .nav {
|
||||||
|
overflow:auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#export_data {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#site_nav_local_views li {
|
||||||
|
margin-right:4px;
|
||||||
|
}
|
||||||
|
#site_nav_local_views a {
|
||||||
|
padding:18px 11px;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user