diff options
64 files changed, 1535 insertions, 833 deletions
@@ -1,11 +1,11 @@ -Hubzilla -======== +Hubzilla - Community Server +=========================== -###Websites. Redefined. +Websites. Redefined. +-------------------- - -![Hubzilla](images/ghash-32.png) +![Hubzilla](images/hubzilla_house_arrows.png) **What are Hubs?** @@ -50,7 +50,7 @@ define ( 'PLATFORM_NAME', 'hubzilla' ); define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'H'); define ( 'ZOT_REVISION', 1 ); -define ( 'DB_UPDATE_VERSION', 1151 ); +define ( 'DB_UPDATE_VERSION', 1152 ); /** * @brief Constant with a HTML line break. @@ -82,7 +82,7 @@ $DIRECTORY_FALLBACK_SERVERS = array( 'https://zotid.net', 'https://red.zottel.red', 'https://gravizot.de', - 'https://my.federated.social', + 'https://my.federated.social' ); diff --git a/doc/bugs.bb b/doc/bugs.bb new file mode 100644 index 000000000..1a27e66ba --- /dev/null +++ b/doc/bugs.bb @@ -0,0 +1,45 @@ +[h2]Bugs, Issues, and things that go bump in the night...[/h2] +[h3]Something went wrong! Who is charge of fixing it?[/h3] + +[b]Hubzilla Community Server[/b] + +Hubzilla Community Server is open source software which is maintained by "the community" - essentially unpaid volunteers. + +[b]Hubzilla Enterprise Server[/b] + +Hubzilla Enterprise Server is commercial software with a variety of support plans depending on the specific license terms. + + +The first thing you need to do is talk to your hub administrator - the person who runs and manages your site. They are in the unique position of having access to the internal software and database and [b]logfiles[/b] and will need to be involved in fixing your problem. Other people "on the net" can't really help with this. The first thing the hub administrator needs to do is look at their logs and/or try to reproduce the problem. So try to be as helpful and courteous as possible in helping them look into the problem. + +To find your hub administrator (if you don't know who they are) please look at [url=[baseurl]/siteinfo]this page[/url]. If they have not provided any contact info on that page or provided an "Impressum" there, see [url=[baseurl]/siteinfo/json]this site info summary[/url] under the heading "admin:". + +[h3]I'm a hub administrator; what do I do?[/h3] + +The software instructions which provide this server are open source and are available for your inspection. If an error message was reported, often one can do a search on the source files for that error message and find out what triggered it. With this information and the site logfiles it may be possible to figure out the sequence of events leading to the error. There could also be other sites involved, and the problem may not even be on your site but elsewhere in the network. Try to pin down the communication endpoints (hubs or sites) involved in the problem and contact the administrator of that site or those sites. Please try and provide an event time of when things went wrong so it can be found in the logs. Work with the other administrator(s) to try and find the cause of the problem. Logfiles are your friend. When something happens in the software that we didn't expect, it is nearly always logged. + +[h3]The white screen of death[/h3] + +If you get a blank white screen when doing something, this is almost always a code or syntax error. There are instructions in your .htconfig.php file for enabling syntax logging. We recommend all sites use this. With syntax logging enabled repeat the sequence which led to the error and it should log the offending line of code. Hopefully you will be able to fix the problem with this information. When you do, please submit the fix "upstream" so that we can share the fix with the rest of the project members and other communities. This is a key benefit of using open source software - we share with each other and everybody benefits. + +[h3]I'm stumped. I can't figure out what is wrong.[/h3] + +[b]Hubzilla Enterprise Server[/b] + +Please make contact with the vendor - who will have provided you with support contact details. Preferably this contact will be made by the hub administrator so that he/she can assist us in collecting the necessary issue details. We will assign a ticket and notify you of progress. + + +[b]Hubzilla Community Server[/b] + +At this point it might be worthwhile discussing the issue on one of the online forums. There may be several of these and some may be more suited to your spoken language. As a last resort, try "Channel One", which is in English. + +If the community developers can't help you right away, understand that they are volunteers and may have a lot of other work and demands on their time. At this point you need to file a bug report. You will need an account on github.com to do this. So register, and then visit https://github.com/redmatrix/hubzilla/issues +. Create an issue here and provide all the same information that you provided online. Don't leave out anything. + +Then you wait. If it's a high profile issue, it may get fixed quickly. But nobody is in charge of fixing bugs. If it lingers without resolution, please spend some more time investigating the problem. Ask about anything you don't understand related to the behaviour. You will learn more about how the software works and quite possibly figure out why it isn't working now. Ultimately it is somebody in the community who is going to fix this and you are a member of the community; and this is how the open source process works. + + +[b]In either case[/b] + +Other developers working to fix the problem may need to find out more, so do your homework and document what is happening and everything you've tried. Don't say "I did xyz and it didn't work." That doesn't tell us anything. Tell us precisely what steps you took and what you expected the result to be, and precisely what happened as a result. If there were any error messages, don't say "there was an error message". Tell us exactly what the message said. +
\ No newline at end of file diff --git a/doc/dav_dolphin.bb b/doc/dav_dolphin.bb index a1ebba394..ae60a6d52 100644 --- a/doc/dav_dolphin.bb +++ b/doc/dav_dolphin.bb @@ -1,8 +1,8 @@ [b]Using The Cloud - Dolphin[/b]
-Visit webdavs://example.com/cloud where "example.com" is the URL of your hub.
+Visit webdavs://example.com/dav where "example.com" is the URL of your hub.
-When prompted for a username and password, enter your username (the first part of your webbie - no @ or domain name) and password for your normal account.
+When prompted for a username and password, enter your channel name (the first part of your webbie - no @ or domain name) and password for your normal account.
Note, if you are already logged in to the web interface via Konqueror, you will not be prompted for further authentication.
diff --git a/doc/dav_mount.bb b/doc/dav_mount.bb index d8cb2e08e..0fd3d4691 100644 --- a/doc/dav_mount.bb +++ b/doc/dav_mount.bb @@ -25,14 +25,14 @@ Edit /etc/fstab to include your cloud directory by adding
[code]
-[baseurl]/cloud/ /mount/point davfs user,noauto,uid=<DesktopUser>,file_mode=600,dir_mode=700 0 1
+[baseurl]/dav/ /mount/point davfs user,noauto,uid=<DesktopUser>,file_mode=600,dir_mode=700 0 1
[/code]
Where [baseurl] is the URL of your hub, /mount/point is the location you want to mount the cloud, and <DesktopUser> is the user you log in to one your computer. Note that if you are mounting as a normal user (not root) the mount point must be in your home directory.
For example, if I wanted to mount my cloud to a directory called 'cloud' in my home directory, and my username was bob, my fstab would be
-[code][baseurl]/cloud/ /home/bob/cloud davfs user,noauto,uid=bob,file_mode=600,dir_mode=700 0 1[/code]
+[code][baseurl]/dav/ /home/bob/cloud davfs user,noauto,uid=bob,file_mode=600,dir_mode=700 0 1[/code]
Now, create the mount point.
@@ -49,7 +49,7 @@ Create a file called 'secrets' and add your cloud login credentials
[code]
-[baseurl]/cloud <username> <password>
+[baseurl]/dav <username> <password>
[/code]
Where <username> and <password> are the username and password [i]for your hub[/i].
@@ -60,7 +60,7 @@ Don't let this file be writeable by anyone who doesn't need it with Finally, mount the drive.
-[code]mount [baseurl]/cloud[/code]
+[code]mount [baseurl]/dav[/code]
You can now find your cloud at /home/bob/cloud and use it as though it were part of your local filesystem - even if the applications you are using have no dav support themselves.
diff --git a/doc/dav_nautilus.bb b/doc/dav_nautilus.bb index 51663b6de..c8911cda8 100644 --- a/doc/dav_nautilus.bb +++ b/doc/dav_nautilus.bb @@ -2,8 +2,8 @@ 1. Open a File browsing window (that's Nautilus)
2. Select File > Connect to server from the menu
-3. Type davs://<domain_name>/cloud/<your_username> and click Connect
-4. You will be prompted for your username (same as above) and password
+3. Type davs://<domain_name>/dav/<your_channelname> and click Connect
+4. You will be prompted for your channel name (same as above) and password
5. Your personal DAV directory will be shown in the window
#include doc/macros/cloud_footer.bb;
diff --git a/doc/dav_nemo.bb b/doc/dav_nemo.bb index 2c88b0782..f2d994fbb 100644 --- a/doc/dav_nemo.bb +++ b/doc/dav_nemo.bb @@ -3,16 +3,16 @@ For (file browser) Nemo 1.8.2 under Linux Mint 15, Cinnamon 1.8.8. Nemo ist the standard file browser there.
1st way
-type "davs://yourusername@friendicared.net/cloud" in the address bar
+type "davs://<domain_name>/dav/<your_channelname>" in the address bar.
2nd way
Menu > file > connect to server
Fill the dialog
-- Server: friendicared.net
+- Server: hubzilla_domain_name
- Type: Secure WebDAV (https)
-- Folder: /cloud
-- Username: yourusername
-- Passwort: yourpasswort
+- Folder: /dav
+- Username: yourchannelname
+- Password: yourpassword
Once open you can set a bookmark.
diff --git a/doc/dav_windows.bb b/doc/dav_windows.bb index 0eaffd4d0..96862e2b5 100644 --- a/doc/dav_windows.bb +++ b/doc/dav_windows.bb @@ -4,8 +4,8 @@ RedDav using Windows 7 graphical user interface wizard: 1. Left-click the Start-button to open the start menu.
2. Right-click the My computer icon to access its menu.
3. Left-click Map network drive... to open the connection dialog wizard.
-4. Type #^[url=https://example.net/cloud/your_user_name]https://example.net/cloud/your_user_name[/url] in the textbox and click the Complete button where "example.net" is the URL of your hub.
-5. Type your Red account's user name. IMPORTANT - NO at-sign or domain name.
-6. Type your Red password
+4. Type #^[url=https://example.net/dav/your_channel_name]https://example.net/dav/your_channel_name[/url] in the textbox and click the Complete button where "example.net" is the URL of your hub.
+5. Type your Hubzilla account's user name. IMPORTANT - NO at-sign or domain name.
+6. Type your Hubzilla password
#include doc/macros/cloud_footer.bb;
diff --git a/doc/members.bb b/doc/members.bb index 705154b56..13339ef2d 100644 --- a/doc/members.bb +++ b/doc/members.bb @@ -22,3 +22,4 @@ [zrl=[baseurl]/help/addons]Help With Addons[/zrl] [zrl=[baseurl]/help/diaspora_compat]Diaspora Communications Compatibility (Diaspora and Friendica)[/zrl] [zrl=[baseurl]/help/faq_members]FAQ For Members[/zrl] +[zrl=[baseurl]/help/bugs]Bugs, Issues, and things that go bump in the night...[/zrl] diff --git a/doc/to_do_code.bb b/doc/to_do_code.bb index 94421bab0..b5c7b9903 100644 --- a/doc/to_do_code.bb +++ b/doc/to_do_code.bb @@ -4,7 +4,7 @@ We need much more than this, but here are areas where developers can help. Pleas [li]Documentation - see Red Documentation Project To-Do List[/li]
[li]Include TOS link in registration/verification email[/li]
-[li](done) forum widget with unread counts (requires the DB schema changes from v3/hubzilla to be viable)[/li]
+[li]Auto preview posts/comments (configurable timer kicks in the preview if not 0)[/li]
[li]Create bug tracker module[/li]
[li]translation plugins - moses or apertium[/li]
[li]plugins - provide 'disable' which is softer than 'uninstall' for those plugins which create additional DB tables[/li]
@@ -45,7 +45,7 @@ We need much more than this, but here are areas where developers can help. Pleas [li]Create mobile clients for the top platforms - which involves extending the API so that we can do stuff far beyond the current crop of Twitter/Statusnet clients. Ditto for mobile themes. We can probably use something like the Friendica Android app as a base to start from.[/li]
[li](in progress Habeas Codice) Implement owned and exchangeable "things".[/li]
[li]Family Account creation - using service classes (an account holder can create a certain number of sub-accounts which are all tied to their subscription - if the subscription lapses they all go away).[/li]
-[li]Put mod_admin under Comanche[/li]
+
In many cases some of the work has already been started and code exists so that you needn't start from scratch. Please contact one of the developer channels like Channel One (one@zothub.com) before embarking and we can tell you what we already have and provide some insights on how we envision these features fitting together.
diff --git a/images/hubzilla_house_arrows.png b/images/hubzilla_house_arrows.png Binary files differnew file mode 100644 index 000000000..56402a96b --- /dev/null +++ b/images/hubzilla_house_arrows.png diff --git a/include/Import/import_diaspora.php b/include/Import/import_diaspora.php index fca9fa4f2..a0f473b50 100644 --- a/include/Import/import_diaspora.php +++ b/include/Import/import_diaspora.php @@ -57,6 +57,10 @@ function import_diaspora($data) { $channel_id = $c['channel']['channel_id']; + // Hubzilla only: Turn on the Diaspora protocol so that follow requests will be sent. + + set_pconfig($channel_id,'system','diaspora_allowed','1'); + // todo - add auto follow settings, (and strip exif in hubzilla) $location = escape_tags($data['user']['profile']['location']); @@ -70,7 +74,6 @@ function import_diaspora($data) { ); if($data['user']['profile']['nsfw']) { - // fixme for hubzilla which doesn't use pageflags any more q("update channel set channel_pageflags = (channel_pageflags | %d) where channel_id = %d", intval(PAGE_ADULT), intval($channel_id) diff --git a/include/api.php b/include/api.php index 6d71cfc33..a77bf15f7 100644 --- a/include/api.php +++ b/include/api.php @@ -896,6 +896,55 @@ require_once('include/items.php'); api_register_func('api/red/item/new','red_item_new', true); + function red_item(&$a, $type) { + + if (api_user() === false) { + logger('api_red_item_new: no user'); + return false; + } + + if($_REQUEST['mid']) { + $arr = array('mid' => $_REQUEST['mid']); + } + elseif($_REQUEST['item_id']) { + $arr = array('item_id' => $_REQUEST['item_id']); + } + else + json_return_and_die(array()); + + $arr['start'] = 0; + $arr['records'] = 999999; + $arr['item_type'] = '*'; + + $i = items_fetch($arr,$a->get_channel(),get_observer_hash()); + + if(! $i) + json_return_and_die(array()); + + $ret = array(); + $tmp = array(); + $str = ''; + foreach($i as $ii) { + $tmp[] = encode_item($ii,true); + if($str) + $str .= ','; + $str .= $ii['id']; + } + $ret['item'] = $tmp; + if($str) { + $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item.id in ( $str ) "); + + if($r) + $ret['item_id'] = $r; + } + + json_return_and_die($ret); + } + + api_register_func('api/red/item/full','red_item', true); + + + function api_get_status($xchan_hash) { require_once('include/security.php'); diff --git a/include/attach.php b/include/attach.php index 620c7620c..513486bfc 100644 --- a/include/attach.php +++ b/include/attach.php @@ -405,6 +405,9 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { require_once('include/photos.php'); + + call_hooks('photo_upload_begin',$arr); + $ret = array('success' => false); $channel_id = $channel['channel_id']; $sql_options = ''; @@ -451,15 +454,28 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { $hash = $arr['resource_id']; } elseif($options !== 'update') { - if(! x($_FILES,'userfile')) { - $ret['message'] = t('No source file.'); - return $ret; - } + $f = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => ''); - $src = $_FILES['userfile']['tmp_name']; - $filename = basename($_FILES['userfile']['name']); - $filesize = intval($_FILES['userfile']['size']); + call_hooks('photo_upload_file',$f); + call_hooks('attach_upload_file',$f); + if (x($f,'src') && x($f,'filesize')) { + $src = $f['src']; + $filename = $f['filename']; + $filesize = $f['filesize']; + $type = $f['type']; + + } else { + + if(! x($_FILES,'userfile')) { + $ret['message'] = t('No source file.'); + return $ret; + } + + $src = $_FILES['userfile']['tmp_name']; + $filename = basename($_FILES['userfile']['name']); + $filesize = intval($_FILES['userfile']['size']); + } } $existing_size = 0; @@ -615,6 +631,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { if(($maxfilesize) && ($filesize > $maxfilesize)) { $ret['message'] = sprintf( t('File exceeds size limit of %d'), $maxfilesize); @unlink($src); + call_hooks('photo_upload_end',$ret); return $ret; } @@ -627,10 +644,11 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { if(($r) && (($r[0]['total'] + $filesize) > ($limit - $existing_size))) { $ret['message'] = upgrade_message(true) . sprintf(t("You have reached your limit of %1$.0f Mbytes attachment storage."), $limit / 1024000); @unlink($src); + call_hooks('photo_upload_end',$ret); return $ret; } } - $mimetype = z_mime_content_type($filename); + $mimetype = ((isset($type) && $type) ? $type : z_mime_content_type($filename)); } $os_basepath = 'store/' . $channel['channel_address'] . '/' ; @@ -658,7 +676,6 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { else $edited = $created; - if($options === 'replace') { $r = q("update attach set filename = '%s', filetype = '%s', folder = '%s', filesize = %d, os_storage = %d, is_photo = %d, data = '%s', edited = '%s' where id = %d and uid = %d", dbesc($filename), @@ -714,6 +731,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { ); } else { + $r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, filetype, folder, filesize, revision, os_storage, is_photo, data, created, edited, allow_cid, allow_gid,deny_cid, deny_gid ) VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ", intval($channel['channel_account_id']), @@ -738,6 +756,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { } if($is_photo) { + $args = array( 'source' => $source, 'visible' => 0, 'resource_id' => $hash, 'album' => basename($pathname), 'os_path' => $os_basepath . $os_relpath, 'filename' => $filename, 'getimagesize' => $gis, 'directory' => $direct); if($arr['contact_allow']) $args['contact_allow'] = $arr['contact_allow']; @@ -772,6 +791,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { if(! $r) { $ret['message'] = t('File upload failed. Possible system limit or action terminated.'); + call_hooks('photo_upload_end',$ret); return $ret; } @@ -784,13 +804,17 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { if(! $r) { $ret['message'] = t('Stored file could not be verified. Upload failed.'); + call_hooks('photo_upload_end',$ret); return $ret; } $ret['success'] = true; $ret['data'] = $r[0]; - + if(! $is_photo) { + // This would've been called already with a success result in photos_upload() if it was a photo. + call_hooks('photo_upload_end',$ret); + } return $ret; } diff --git a/include/chat.php b/include/chat.php index 05bb02bb9..a0646265a 100644 --- a/include/chat.php +++ b/include/chat.php @@ -91,6 +91,8 @@ function chatroom_destroy($channel,$arr) { return $ret; } + create_sync_packet($channel['channel_id'],array('chatroom' => $r)); + q("delete from chatroom where cr_id = %d", intval($r[0]['cr_id']) ); diff --git a/include/conversation.php b/include/conversation.php index a3fdf39df..fb8ef8585 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1137,6 +1137,7 @@ function status_editor($a, $x, $popup = false) { '$newpost' => 'true', '$baseurl' => $a->get_baseurl(true), '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), + '$pretext' => ((x($x,'pretext')) ? $x['pretext'] : ''), '$geotag' => $geotag, '$nickname' => $x['nickname'], '$ispublic' => t('Visible to <strong>everybody</strong>'), diff --git a/include/event.php b/include/event.php index 6670bc53b..44c172e98 100644 --- a/include/event.php +++ b/include/event.php @@ -446,6 +446,20 @@ function event_addtocal($item_id, $uid) { intval($channel['channel_id']) ); + $item['resource_id'] = $event['event_hash']; + $item['resource_type'] = 'event'; + + $i = array($item); + xchan_query($i); + $sync_item = fetch_post_tags($i); + $z = q("select * from event where event_hash = '%s' and uid = %d limit 1", + dbesc($event['event_hash']), + intval($channel['channel_id']) + ); + if($z) { + build_sync_packet($channel['channel_id'],array('event_item' => array(encode_item($sync_item[0],true)),'event' => $z)); + } + return true; } } @@ -959,4 +973,4 @@ function tasks_fetch($arr) { return $ret; -}
\ No newline at end of file +} diff --git a/include/identity.php b/include/identity.php index 115baddc1..b5235e7ff 100644 --- a/include/identity.php +++ b/include/identity.php @@ -5,7 +5,7 @@ require_once('include/zot.php'); require_once('include/crypto.php'); - +require_once('include/menu.php'); /** * @brief Called when creating a new channel. @@ -566,13 +566,57 @@ function identity_basic_export($channel_id, $items = false) { if($r) $ret['obj'] = $r; - $r = q("select * from app where app_channel = %d", intval($channel_id) ); if($r) $ret['app'] = $r; + $r = q("select * from chatroom where cr_uid = %d", + intval($channel_id) + ); + if($r) + $ret['chatroom'] = $r; + + + $r = q("select * from event where uid = %d", + intval($channel_id) + ); + if($r) + $ret['event'] = $r; + + $r = q("select * from item where resource_type = 'event' and uid = %d", + intval($channel_id) + ); + if($r) { + $ret['event_item'] = array(); + xchan_query($r); + $r = fetch_post_tags($r,true); + foreach($r as $rr) + $ret['event_item'][] = encode_item($rr,true); + } + + $x = menu_list($channel_id); + if($x) { + $ret['menu'] = array(); + for($y = 0; $y < count($x); $y ++) { + $m = menu_fetch($x[$y]['menu_name'],$channel_id,$ret['channel']['channel_hash']); + if($m) + $ret['menu'][] = menu_element($m); + } + } + + $x = menu_list($channel_id); + if($x) { + $ret['menu'] = array(); + for($y = 0; $y < count($x); $y ++) { + $m = menu_fetch($x[$y]['menu_name'],$channel_id,$ret['channel']['channel_hash']); + if($m) + $ret['menu'][] = menu_element($m); + } + } + + if(! $items) return $ret; @@ -594,14 +638,17 @@ function identity_basic_export($channel_id, $items = false) { /** @warning this may run into memory limits on smaller systems */ - /** export one year of posts. If you want to export and import all posts you have to start with + + /** export three months of posts. If you want to export and import all posts you have to start with * the first year and export/import them in ascending order. + * + * Don't export linked resource items. we'll have to pull those out separately. */ - $r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created > %s - INTERVAL %s", + $r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created > %s - INTERVAL %s and resource_type = '' order by created", intval($channel_id), db_utcnow(), - db_quoteinterval('1 YEAR') + db_quoteinterval('3 MONTH') ); if($r) { $ret['item'] = array(); @@ -635,7 +682,7 @@ function identity_export_year($channel_id,$year,$month = 0) { else $maxdate = datetime_convert('UTC','UTC',$year+1 . '-01-01 00:00:00'); - $r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created >= '%s' and created < '%s' order by created", + $r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created >= '%s' and created < '%s' and resource_type = '' order by created", intval($channel_id), dbesc($mindate), dbesc($maxdate) @@ -649,7 +696,6 @@ function identity_export_year($channel_id,$year,$month = 0) { $ret['item'][] = encode_item($rr,true); } - $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item_id.uid = %d and item.created >= '%s' and item.created < '%s' order by created ", intval($channel_id), diff --git a/include/import.php b/include/import.php index 6ce572ea2..ad8bcd84e 100644 --- a/include/import.php +++ b/include/import.php @@ -1,5 +1,6 @@ <?php +require_once('include/menu.php'); function import_channel($channel) { @@ -49,6 +50,11 @@ function import_channel($channel) { unset($channel['channel_id']); $channel['channel_account_id'] = get_account_id(); $channel['channel_primary'] = (($seize) ? 1 : 0); + + if($channel['channel_pageflags'] & PAGE_ALLOWCODE) { + if(! is_site_admin()) + $channel['channel_pageflags'] = $channel['channel_pageflags'] ^ PAGE_ALLOWCODE; + } dbesc_array($channel); @@ -349,7 +355,7 @@ function sync_apps($channel,$apps) { intval($channel['channel_id']) ); if($x) { - if($x[0]['app_edited'] >= $obj['app_edited']) + if($x[0]['app_edited'] >= $app['app_edited']) continue; $exists = true; } @@ -377,4 +383,424 @@ function sync_apps($channel,$apps) { } } } -}
\ No newline at end of file +} + + + +function import_chatrooms($channel,$chatrooms) { + + if($channel && $chatrooms) { + foreach($chatrooms as $chatroom) { + + if(! $chatroom['cr_name']) + continue; + + unset($chatroom['cr_id']); + unset($chatroom['cr_aid']); + unset($chatroom['cr_uid']); + + $chatroom['cr_aid'] = $channel['channel_account_id']; + $chatroom['cr_uid'] = $channel['channel_id']; + + dbesc_array($chatroom); + $r = dbq("INSERT INTO chatroom (`" + . implode("`, `", array_keys($chatroom)) + . "`) VALUES ('" + . implode("', '", array_values($chatroom)) + . "')" + ); + } + } +} + + + +function sync_chatrooms($channel,$chatrooms) { + + if($channel && $chatrooms) { + foreach($chatrooms as $chatroom) { + + if(! $chatroom['cr_name']) + continue; + + if(array_key_exists('cr_deleted',$chatroom) && $chatroom['cr_deleted']) { + q("delete from chatroom where cr_name = '%s' and cr_uid = %d limit 1", + dbesc($chatroom['cr_name']), + intval($channel['channel_id']) + ); + continue; + } + + + unset($chatroom['cr_id']); + unset($chatroom['cr_aid']); + unset($chatroom['cr_uid']); + + if(! $chatroom['cr_created'] || $chatroom['cr_created'] === NULL_DATE) + $chatroom['cr_created'] = datetime_convert(); + if(! $chatroom['cr_edited'] || $chatroom['cr_edited'] === NULL_DATE) + $chatroom['cr_edited'] = datetime_convert(); + + $chatroom['cr_aid'] = $channel['channel_account_id']; + $chatroom['cr_uid'] = $channel['channel_id']; + + $exists = false; + + $x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1", + dbesc($chatroom['cr_name']), + intval($channel['channel_id']) + ); + if($x) { + if($x[0]['cr_edited'] >= $chatroom['cr_edited']) + continue; + $exists = true; + } + $name = $chatroom['cr_name']; + + if($exists) { + foreach($chatroom as $k => $v) { + $r = q("UPDATE chatroom SET `%s` = '%s' WHERE cr_name = '%s' AND cr_uid = %d", + dbesc($k), + dbesc($v), + dbesc($name), + intval($channel['channel_id']) + ); + } + } + else { + dbesc_array($chatroom); + $r = dbq("INSERT INTO chatroom (`" + . implode("`, `", array_keys($chatroom)) + . "`) VALUES ('" + . implode("', '", array_values($chatroom)) + . "')" + ); + } + } + } +} + + + +function import_items($channel,$items) { + + if($channel && $items) { + $allow_code = false; + $r = q("select account_id, account_roles, channel_pageflags from account left join channel on channel_account_id = account_id + where channel_id = %d limit 1", + intval($channel['channel_id']) + ); + if($r) { + if(($r[0]['account_roles'] & ACCOUNT_ROLE_ALLOWCODE) || ($r[0]['channel_pageflags'] & PAGE_ALLOWCODE)) { + $allow_code = true; + } + } + + foreach($items as $i) { + $item = get_item_elements($i,$allow_code); + if(! $item) + continue; + + $r = q("select id, edited from item where mid = '%s' and uid = %d limit 1", + dbesc($item['mid']), + intval($channel['channel_id']) + ); + if($r) { + if($item['edited'] > $r[0]['edited']) { + $item['id'] = $r[0]['id']; + $item['uid'] = $channel['channel_id']; + item_store_update($item); + continue; + } + } + else { + $item['aid'] = $channel['channel_account_id']; + $item['uid'] = $channel['channel_id']; + $item_result = item_store($item); + } + + } + } +} + + +function sync_items($channel,$items) { + import_items($channel,$items); +} + + + +function import_item_ids($channel,$itemids) { + if($channel && $itemids) { + foreach($itemids as $i) { + $r = q("select id from item where mid = '%s' and uid = %d limit 1", + dbesc($i['mid']), + intval($channel['channel_id']) + ); + if(! $r) + continue; + $z = q("select * from item_id where service = '%s' and sid = '%s' and iid = %d and uid = %d limit 1", + dbesc($i['service']), + dbesc($i['sid']), + intval($r[0]['id']), + intval($channel['channel_id']) + ); + if(! $z) { + q("insert into item_id (iid,uid,sid,service) values(%d,%d,'%s','%s')", + intval($r[0]['id']), + intval($channel['channel_id']), + dbesc($i['sid']), + dbesc($i['service']) + ); + } + } + } +} + +function import_events($channel,$events) { + + if($channel && $events) { + foreach($events as $event) { + unset($event['id']); + $event['aid'] = $channel['channel_account_id']; + $event['uid'] = $channel['channel_id']; + + dbesc_array($event); + $r = dbq("INSERT INTO event (`" + . implode("`, `", array_keys($event)) + . "`) VALUES ('" + . implode("', '", array_values($event)) + . "')" + ); + } + } +} + + +function sync_events($channel,$events) { + + if($channel && $events) { + foreach($events as $event) { + + if((! $event['event_hash']) || (! $event['start'])) + continue; + + if($event['event_deleted']) { + $r = q("delete from event where event_hash = '%s' and uid = %d limit 1", + dbesc($event['event_hash']), + intval($channel['channel_id']) + ); + continue; + } + + unset($event['id']); + $event['aid'] = $channel['channel_account_id']; + $event['uid'] = $channel['channel_id']; + + $exists = false; + + $x = q("select * from event where event_hash = '%s' and uid = %d limit 1", + dbesc($event['event_hash']), + intval($channel['channel_id']) + ); + if($x) { + if($x[0]['edited'] >= $event['edited']) + continue; + $exists = true; + } + + if($exists) { + foreach($event as $k => $v) { + $r = q("UPDATE event SET `%s` = '%s' WHERE event_hash = '%s' AND uid = %d", + dbesc($k), + dbesc($v), + dbesc($event['event_hash']), + intval($channel['channel_id']) + ); + } + } + else { + dbesc_array($event); + $r = dbq("INSERT INTO event (`" + . implode("`, `", array_keys($event)) + . "`) VALUES ('" + . implode("', '", array_values($event)) + . "')" + ); + } + } + } +} + + +function import_menus($channel,$menus) { + + if($channel && $menus) { + foreach($menus as $menu) { + $m = array(); + $m['menu_channel_id'] = $channel['channel_id']; + $m['menu_name'] = $menu['pagetitle']; + $m['menu_desc'] = $menu['desc']; + if($menu['created']) + $m['menu_created'] = datetime_convert($menu['created']); + if($menu['edited']) + $m['menu_edited'] = datetime_convert($menu['edited']); + + $m['menu_flags'] = 0; + if($menu['flags']) { + if(in_array('bookmark',$menu['flags'])) + $m['menu_flags'] |= MENU_BOOKMARK; + if(in_array('system',$menu['flags'])) + $m['menu_flags'] |= MENU_SYSTEM; + + } + + $menu_id = menu_create($m); + + if($menu_id) { + if(is_array($menu['items'])) { + foreach($menu['items'] as $it) { + $mitem = array(); + + $mitem['mitem_link'] = str_replace('[baseurl]',z_root(),$it['link']); + $mitem['mitem_desc'] = escape_tags($it['desc']); + $mitem['mitem_order'] = intval($it['order']); + if(is_array($it['flags'])) { + $mitem['mitem_flags'] = 0; + if(in_array('zid',$it['flags'])) + $mitem['mitem_flags'] |= MENU_ITEM_ZID; + if(in_array('new-window',$it['flags'])) + $mitem['mitem_flags'] |= MENU_ITEM_NEWWIN; + if(in_array('chatroom',$it['flags'])) + $mitem['mitem_flags'] |= MENU_ITEM_CHATROOM; + } + menu_add_item($menu_id,$channel['channel_id'],$mitem); + } + } + } + } + } +} + + +function sync_menus($channel,$menus) { + + if($channel && $menus) { + foreach($menus as $menu) { + $m = array(); + $m['menu_channel_id'] = $channel['channel_id']; + $m['menu_name'] = $menu['pagetitle']; + $m['menu_desc'] = $menu['desc']; + if($menu['created']) + $m['menu_created'] = datetime_convert($menu['created']); + if($menu['edited']) + $m['menu_edited'] = datetime_convert($menu['edited']); + + $m['menu_flags'] = 0; + if($menu['flags']) { + if(in_array('bookmark',$menu['flags'])) + $m['menu_flags'] |= MENU_BOOKMARK; + if(in_array('system',$menu['flags'])) + $m['menu_flags'] |= MENU_SYSTEM; + + } + + $editing = false; + + $r = q("select * from menu where menu_name = '%s' and menu_channel_id = %d limit 1", + dbesc($m['menu_name']), + intval($channel['channel_id']) + ); + if($r) { + if($r[0]['menu_edited'] >= $m['menu_edited']) + continue; + if($menu['menu_deleted']) { + menu_delete_id($r[0]['menu_id'],$channel['channel_id']); + continue; + } + $menu_id = $r[0]['menu_id']; + $m['menu_id'] = $r[0]['menu_id']; + $x = menu_edit($m); + if(! $x) + continue; + $editing = true; + } + if(! $editing) { + $menu_id = menu_create($m); + } + if($menu_id) { + if($editing) { + // don't try syncing - just delete all the entries and start over + q("delete from menu_item where mitem_menu_id = %d", + intval($menu_id) + ); + } + + if(is_array($menu['items'])) { + foreach($menu['items'] as $it) { + $mitem = array(); + + $mitem['mitem_link'] = str_replace('[baseurl]',z_root(),$it['link']); + $mitem['mitem_desc'] = escape_tags($it['desc']); + $mitem['mitem_order'] = intval($it['order']); + if(is_array($it['flags'])) { + $mitem['mitem_flags'] = 0; + if(in_array('zid',$it['flags'])) + $mitem['mitem_flags'] |= MENU_ITEM_ZID; + if(in_array('new-window',$it['flags'])) + $mitem['mitem_flags'] |= MENU_ITEM_NEWWIN; + if(in_array('chatroom',$it['flags'])) + $mitem['mitem_flags'] |= MENU_ITEM_CHATROOM; + } + menu_add_item($menu_id,$channel['channel_id'],$mitem); + } + } + } + } + } +} + + + +function import_likes($channel,$likes) { + if($channel && $likes) { + foreach($likes as $like) { + if($like['deleted']) { + q("delete from likes where liker = '%s' and likee = '%s' and verb = '%s' and target_type = '%s' and target_id = '%s'", + dbesc($like['liker']), + dbesc($like['likee']), + dbesc($like['verb']), + dbesc($like['target_type']), + dbesc($like['target_id']) + ); + continue; + } + + unset($like['id']); + unset($like['iid']); + $like['channel_id'] = $channel['channel_id']; + $r = q("select * from likes where liker = '%s' and likee = '%s' and verb = '%s' and target_type = '%s' and target_id = '%s' and i_mid = '%s'", + dbesc($like['liker']), + dbesc($like['likee']), + dbesc($like['verb']), + dbesc($like['target_type']), + dbesc($like['target_id']), + dbesc($like['i_mid']) + ); + if($r) + continue; + + dbesc_array($config); + $r = dbq("INSERT INTO likes (`" + . implode("`, `", array_keys($like)) + . "`) VALUES ('" + . implode("', '", array_values($like)) + . "')" ); + } + } +} + + + + + diff --git a/include/items.php b/include/items.php index 9807831e3..28fd8502b 100755 --- a/include/items.php +++ b/include/items.php @@ -833,10 +833,13 @@ function title_is_body($title, $body) { } -function get_item_elements($x) { +function get_item_elements($x,$allow_code = false) { $arr = array(); - $arr['body'] = (($x['body']) ? htmlspecialchars($x['body'],ENT_COMPAT,'UTF-8',false) : ''); + if($allow_code) + $arr['body'] = $x['body']; + else + $arr['body'] = (($x['body']) ? htmlspecialchars($x['body'],ENT_COMPAT,'UTF-8',false) : ''); $key = get_config('system','pubkey'); @@ -1309,7 +1312,7 @@ function encode_item($item,$mirror = false) { $x['comment_scope'] = $c_scope; if($item['term']) - $x['tags'] = encode_item_terms($item['term']); + $x['tags'] = encode_item_terms($item['term'],$mirror); if($item['diaspora_meta']) { $z = json_decode($item['diaspora_meta'],true); @@ -1401,11 +1404,16 @@ function encode_item_xchan($xchan) { return $ret; } -function encode_item_terms($terms) { +function encode_item_terms($terms,$mirror = false) { $ret = array(); $allowed_export_terms = array( TERM_UNKNOWN, TERM_HASHTAG, TERM_MENTION, TERM_CATEGORY, TERM_BOOKMARK ); + if($mirror) { + $allowed_export_terms[] = TERM_PCATEGORY; + $allowed_export_terms[] = TERM_FILE; + } + if($terms) { foreach($terms as $term) { if(in_array($term['type'],$allowed_export_terms)) @@ -3322,7 +3330,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent) { dbesc($title), dbesc($body), intval($item_wall), - $intval($item_origin), + intval($item_origin), intval($item_id) ); @@ -4632,10 +4640,12 @@ function zot_feed($uid,$observer_hash,$arr) { $items = array(); - /** @FIXME fix this part for PostgreSQL */ + /** @FIXME re-unite these SQL statements. There is no need for them to be separate. The mySQL is convoluted with misuse of group by. As it stands, there is a slight difference where the postgres version doesn't remove the duplicate parents up to 100. In practice this doesn't matter. It could be made to match behavior by adding "distinct on (parent) " to the front of the selection list, at a not-worth-it performance penalty (page temp results to disk). duplicates are still ignored in the in() clause, you just get less than 100 parents if there are many children. */ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - return array(); + $groupby = ''; + } else { + $groupby = 'GROUP BY parent'; } $item_normal = item_normal(); @@ -4645,7 +4655,7 @@ function zot_feed($uid,$observer_hash,$arr) { WHERE uid != %d $item_normal AND item_wall = 1 - and item_private = 0 $sql_extra GROUP BY parent ORDER BY created ASC $limit", + and item_private = 0 $sql_extra $groupby ORDER BY created ASC $limit", intval($uid) ); } @@ -4653,7 +4663,7 @@ function zot_feed($uid,$observer_hash,$arr) { $r = q("SELECT parent, created, postopts from item WHERE uid = %d $item_normal AND item_wall = 1 - $sql_extra GROUP BY parent ORDER BY created ASC $limit", + $sql_extra $groupby ORDER BY created ASC $limit", intval($uid) ); } @@ -4724,6 +4734,12 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C if($arr['wall']) $sql_options .= " and item_wall = 1 "; + + if($arr['item_id']) + $sql_options .= " and parent = " . intval($arr['item_id']) . " "; + + if($arr['mid']) + $sql_options .= " and parent_mid = '" . dbesc($arr['mid']) . "' "; $sql_extra = " AND item.parent IN ( SELECT parent FROM item WHERE item_thread_top = 1 $sql_options ) "; @@ -4850,11 +4866,15 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C require_once('include/security.php'); $sql_extra .= item_permissions_sql($channel['channel_id'],$observer_hash); + if($arr['pages']) $item_restrict = " AND item_type = " . ITEM_TYPE_WEBPAGE . " "; else $item_restrict = " AND item_type = 0 "; + if($arr['item_type'] === '*') + $item_restrict = ''; + if ($arr['nouveau'] && ($client_mode & CLIENT_MODE_LOAD) && $channel) { // "New Item View" - show all items unthreaded in reverse created date order diff --git a/include/menu.php b/include/menu.php index 7ed931a59..075372515 100644 --- a/include/menu.php +++ b/include/menu.php @@ -6,7 +6,7 @@ require_once('include/bbcode.php'); function menu_fetch($name,$uid,$observer_xchan) { - $sql_options = permissions_sql($uid); + $sql_options = permissions_sql($uid,$observer_xchan); $r = q("select * from menu where menu_channel_id = %d and menu_name = '%s' limit 1", intval($uid), @@ -238,7 +238,6 @@ function menu_edit($arr) { return false; } - $r = q("select * from menu where menu_id = %d and menu_channel_id = %d limit 1", intval($menu_id), intval($menu_channel_id) @@ -388,3 +387,14 @@ function menu_del_item($menu_id,$uid,$item_id) { return $r; } +function menu_sync_packet($uid,$observer_hash,$menu_id,$delete = false) { + $r = menu_fetch_id($menu_id,$uid); + if($r) { + $m = menu_fetch($r['menu_name'],$uid,$observer_hash); + if($m) { + if($delete) + $m['menu_delete'] = 1; + build_sync_packet($uid,array('menu' => array(menu_element($m)))); + } + } +} diff --git a/include/message.php b/include/message.php index 396e3162c..efe1a7710 100644 --- a/include/message.php +++ b/include/message.php @@ -49,6 +49,7 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=' // look for any existing conversation structure + if(strlen($replyto)) { $r = q("select convid from mail where channel_id = %d and ( mid = '%s' or parent_mid = '%s' ) limit 1", intval(local_channel()), diff --git a/include/network.php b/include/network.php index 75729d6e4..d3320f3ee 100644 --- a/include/network.php +++ b/include/network.php @@ -1137,6 +1137,8 @@ function discover_by_webbie($webbie) { if($hcard) { $vcard = scrape_vcard($hcard); $vcard['nick'] = substr($webbie,0,strpos($webbie,'@')); + if(! $vcard['fn']) + $vcard['fn'] = $webbie; } $r = q("select * from xchan where xchan_hash = '%s' limit 1", diff --git a/include/photos.php b/include/photos.php index b4129fbf1..49aab6865 100644 --- a/include/photos.php +++ b/include/photos.php @@ -27,7 +27,7 @@ function photo_upload($channel, $observer, $args) { return $ret; } - call_hooks('photo_upload_begin', $args); +// call_hooks('photo_upload_begin', $args); /* * Determine the album to use @@ -84,7 +84,7 @@ function photo_upload($channel, $observer, $args) { } else { $f = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => ''); - call_hooks('photo_upload_file',$f); +// call_hooks('photo_upload_file',$f); if (x($f,'src') && x($f,'filesize')) { $src = $f['src']; @@ -226,11 +226,8 @@ function photo_upload($channel, $observer, $args) { $width_x_height = $ph->getWidth() . 'x' . $ph->getHeight(); - $mid = item_message_id(); - // Create item container - $item_hidden = (($visible) ? 0 : 1 ); $lat = $lon = null; diff --git a/include/security.php b/include/security.php index 7cc93fc06..380505a79 100644 --- a/include/security.php +++ b/include/security.php @@ -256,7 +256,7 @@ function item_permissions_sql($owner_id, $remote_observer = null) { $regexop = db_getfunc('REGEXP'); $sql = sprintf( " AND ( NOT (deny_cid like '%s' OR deny_gid $regexop '%s') - AND ( allow_cid like '%s' OR allow_gid $regexop '%s' OR ( allow_cid = '' AND allow_gid = '') ) + AND ( allow_cid like '%s' OR allow_gid $regexop '%s' OR ( allow_cid = '' AND allow_gid = '' AND item_private = 0 ) ) ) ", dbesc(protect_sprintf( '%<' . $observer . '>%')), @@ -291,7 +291,7 @@ function public_permissions_sql($observer_hash) { $regexop = db_getfunc('REGEXP'); $sql = sprintf( " OR (( NOT (deny_cid like '%s' OR deny_gid $regexop '%s') - AND ( allow_cid like '%s' OR allow_gid $regexop '%s' OR ( allow_cid = '' AND allow_gid = '') ) + AND ( allow_cid like '%s' OR allow_gid $regexop '%s' OR ( allow_cid = '' AND allow_gid = '' AND item_private = 0 ) ) )) ", dbesc(protect_sprintf( '%<' . $observer_hash . '>%')), diff --git a/include/widgets.php b/include/widgets.php index 42d9db19a..5e40bf54a 100644 --- a/include/widgets.php +++ b/include/widgets.php @@ -1007,7 +1007,9 @@ function widget_forums($arr) { $perms_sql = item_permissions_sql(local_channel()) . item_normal(); - $r1 = q("select * from abook left join xchan on abook_xchan = xchan_hash where xchan_pubforum = 1 and abook_channel = %d order by xchan_name $limit ", + $r1 = q("select * from abook left join xchan on abook_xchan = xchan_hash where ( xchan_pubforum = 1 or ((abook_their_perms & %d ) != 0 and (abook_their_perms & %d ) = 0) ) and abook_channel = %d order by xchan_name $limit ", + intval(PERMS_W_TAGWALL), + intval(PERMS_W_STREAM), intval(local_channel()) ); if(! $r1) @@ -1034,7 +1036,7 @@ function widget_forums($arr) { foreach($r1 as $rr) { if($unseen && (! intval($rr['unseen']))) continue; - $o .= '<li><span class="pull-right">' . ((intval($rr['unseen'])) ? intval($rr['unseen']) : '') . '</span><a href="network?f=&cid=' . $rr['abook_id'] . '" ><img src="' . $rr['xchan_photo_s'] . '" style="width: 16px; height: 16px;" /> ' . $rr['xchan_name'] . '</a></li>'; + $o .= '<li><span class="pull-right">' . ((intval($rr['unseen'])) ? intval($rr['unseen']) : '') . '</span><a href="network?f=&pf=1&cid=' . $rr['abook_id'] . '" ><img src="' . $rr['xchan_photo_s'] . '" style="width: 16px; height: 16px;" /> ' . $rr['xchan_name'] . '</a></li>'; } $o .= '</ul></div>'; } @@ -1074,4 +1076,63 @@ function widget_helpindex($arr) { $o .= '</ul></div>'; return $o; +} + + + +function widget_admin($arr) { + + /* + * Side bar links + */ + + if(! is_site_admin()) { + return login(false); + } + + + $a = get_app(); + $o = ''; + + // array( url, name, extra css classes ) + + $aside = array( + 'site' => array(z_root() . '/admin/site/', t('Site'), 'site'), + 'users' => array(z_root() . '/admin/users/', t('Accounts'), 'users'), + 'channels' => array(z_root() . '/admin/channels/', t('Channels'), 'channels'), + 'plugins' => array(z_root() . '/admin/plugins/', t('Plugins'), 'plugins'), + 'themes' => array(z_root() . '/admin/themes/', t('Themes'), 'themes'), + 'queue' => array(z_root() . '/admin/queue', t('Inspect queue'), 'queue'), + 'profs' => array(z_root() . '/admin/profs', t('Profile Config'), 'profs'), + 'dbsync' => array(z_root() . '/admin/dbsync/', t('DB updates'), 'dbsync') + + ); + + /* get plugins admin page */ + + $r = q("SELECT * FROM addon WHERE plugin_admin = 1"); + + $aside['plugins_admin'] = array(); + if($r) { + foreach ($r as $h){ + $plugin = $h['name']; + $aside['plugins_admin'][] = array(z_root() . '/admin/plugins/' . $plugin, $plugin, 'plugin'); + // temp plugins with admin + $a->plugins_admin[] = $plugin; + } + } + + $aside['logs'] = array(z_root() . '/admin/logs/', t('Logs'), 'logs'); + + $o .= replace_macros(get_markup_template('admin_aside.tpl'), array( + '$admin' => $aside, + '$admtxt' => t('Admin'), + '$plugadmtxt' => t('Plugin Features'), + '$logtxt' => t('Logs'), + '$h_pending' => t('User registrations waiting for confirmation'), + '$admurl'=> z_root() . '/admin/' + )); + + return $o; + }
\ No newline at end of file diff --git a/include/zot.php b/include/zot.php index fecaa7ad2..0e00f39b4 100644 --- a/include/zot.php +++ b/include/zot.php @@ -294,9 +294,19 @@ function zot_refresh($them, $channel = null, $force = false) { if ($them['hubloc_url']) { $url = $them['hubloc_url']; } else { - $r = q("select hubloc_url, hubloc_primary from hubloc where hubloc_hash = '%s'", - dbesc($them['xchan_hash']) - ); + $r = null; + + if(array_key_exists('xchan_addr',$them) && $them['xchan_addr']) { + $r = q("select hubloc_url, hubloc_primary from hubloc where hubloc_addr = '%s'", + dbesc($them['xchan_addr']) + ); + } + if(! $r) { + $r = q("select hubloc_url, hubloc_primary from hubloc where hubloc_hash = '%s'", + dbesc($them['xchan_hash']) + ); + } + if ($r) { foreach ($r as $rr) { if (intval($rr['hubloc_primary'])) { @@ -962,7 +972,7 @@ function zot_process_response($hub, $arr, $outq) { ); } - logger('zot_process_response: ' . print_r($x,true), LOGGER_DATA); + logger('zot_process_response: ' . print_r($x,true), LOGGER_DEBUG); } /** @@ -2226,7 +2236,7 @@ function sync_locations($sender, $arr, $absolute = false) { // Absolute sync - make sure the current primary is correctly reflected in the xchan $pr = hubloc_change_primary($r[0]); if($pr) { - $what .= 'xchan_primary'; + $what .= 'xchan_primary '; $changed = true; } } @@ -2878,9 +2888,30 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) { if(array_key_exists('obj',$arr) && $arr['obj']) sync_objs($channel,$arr['obj']); + if(array_key_exists('likes',$arr) && $arr['likes']) + import_likes($channel,$arr['likes']); + if(array_key_exists('app',$arr) && $arr['app']) sync_apps($channel,$arr['app']); + if(array_key_exists('chatroom',$arr) && $arr['chatroom']) + sync_chatrooms($channel,$arr['chatroom']); + + if(array_key_exists('event',$arr) && $arr['event']) + sync_events($channel,$arr['event']); + + if(array_key_exists('event_item',$arr) && $arr['event_item']) + sync_items($channel,$arr['event_item']); + + if(array_key_exists('item',$arr) && $arr['item']) + sync_items($channel,$arr['item']); + + if(array_key_exists('item_id',$arr) && $arr['item_id']) + sync_items($channel,$arr['item_id']); + + if(array_key_exists('menu',$arr) && $arr['menu']) + sync_menus($channel,$arr['menu']); + if(array_key_exists('channel',$arr) && is_array($arr['channel']) && count($arr['channel'])) { if(array_key_exists('channel_page_flags',$arr['channel']) && intval($arr['channel']['channel_pageflags'])) { $arr['channel']['channel_removed'] = (($arr['channel']['channel_pageflags'] & 0x8000) ? 1 : 0); diff --git a/install/update.php b/install/update.php index 8e531b595..339d0cb25 100644 --- a/install/update.php +++ b/install/update.php @@ -1,6 +1,6 @@ <?php -define( 'UPDATE_VERSION' , 1151 ); +define( 'UPDATE_VERSION' , 1152 ); /** * @@ -1733,16 +1733,6 @@ function update_r1148() { $r1 = q("alter table likes add i_mid char(255) not null default '' "); $r2 = q("create index i_mid on likes ( i_mid ) "); - $r3 = q("select likes.*, item.mid from from likes left join item on likes.iid = item.id"); - if($r3) { - foreach($r3 as $rr) { - q("update likes set i_mid = '%s' where id = $d", - dbesc($rr['mid']), - intval($rr['id']) - ); - } - } - if($r1 && $r2) return UPDATE_SUCCESS; return UPDATE_FAILED; @@ -1798,3 +1788,19 @@ function update_r1150() { } +function update_r1151() { + + $r3 = q("select likes.*, item.mid from likes left join item on likes.iid = item.id"); + if($r3) { + foreach($r3 as $rr) { + q("update likes set i_mid = '%s' where id = $d", + dbesc($rr['mid']), + intval($rr['id']) + ); + } + } + + + return UPDATE_SUCCESS; + +} diff --git a/mod/admin.php b/mod/admin.php index 89207e4fa..2b7bb007d 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -84,48 +84,6 @@ function admin_content(&$a) { return login(false); } - /* - * Side bar links - */ - - // array( url, name, extra css classes ) - - $aside = array( - 'site' => array($a->get_baseurl(true)."/admin/site/", t("Site") , "site"), - 'users' => array($a->get_baseurl(true)."/admin/users/", t("Accounts") , "users"), - 'channels' => array($a->get_baseurl(true)."/admin/channels/", t("Channels") , "channels"), - 'plugins' => array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"), - 'themes' => array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"), - 'queue' => array(z_root() . '/admin/queue', t('Inspect queue'), 'queue'), -// 'hubloc' => array($a->get_baseurl(true)."/admin/hubloc/", t("Server") , "server"), - 'profs' => array(z_root() . '/admin/profs', t('Profile Config'), 'profs'), - 'dbsync' => array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync") - - ); - - /* get plugins admin page */ - - $r = q("SELECT * FROM addon WHERE plugin_admin = 1"); - $aside['plugins_admin'] = array(); - foreach ($r as $h){ - $plugin = $h['name']; - $aside['plugins_admin'][] = array($a->get_baseurl(true) . '/admin/plugins/' . $plugin, $plugin, 'plugin'); - // temp plugins with admin - $a->plugins_admin[] = $plugin; - } - - $aside['logs'] = Array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs"); - - $t = get_markup_template("admin_aside.tpl"); - $a->page['aside'] .= replace_macros( $t, array( - '$admin' => $aside, - '$admtxt' => t('Admin'), - '$plugadmtxt' => t('Plugin Features'), - '$logtxt' => t('Logs'), - '$h_pending' => t('User registrations waiting for confirmation'), - '$admurl'=> $a->get_baseurl(true)."/admin/" - )); - /* * Page content diff --git a/mod/chat.php b/mod/chat.php index c2c11d0ab..9ad58bc32 100644 --- a/mod/chat.php +++ b/mod/chat.php @@ -62,11 +62,13 @@ function chat_post(&$a) { chatroom_create($channel,$arr); - $x = q("select cr_id from chatroom where cr_name = '%s' and cr_uid = %d limit 1", + $x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1", dbesc($room), intval(local_channel()) ); + create_sync_packet(0, array('chatroom' => $x)); + if($x) goaway(z_root() . '/chat/' . $channel['channel_address'] . '/' . $x[0]['cr_id']); diff --git a/mod/editblock.php b/mod/editblock.php index b4d954ef5..9269676b1 100644 --- a/mod/editblock.php +++ b/mod/editblock.php @@ -111,6 +111,7 @@ function editblock_content(&$a) { $a->page['htmlhead'] .= replace_macros(get_markup_template('jot-header.tpl'), array( '$baseurl' => $a->get_baseurl(), '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), + '$pretext' => '', '$ispublic' => ' ', // t('Visible to <strong>everybody</strong>'), '$geotag' => '', '$nickname' => $channel['channel_address'], diff --git a/mod/editlayout.php b/mod/editlayout.php index 6ea7f4100..fc68cfe3c 100644 --- a/mod/editlayout.php +++ b/mod/editlayout.php @@ -105,6 +105,7 @@ function editlayout_content(&$a) { $a->page['htmlhead'] .= replace_macros(get_markup_template('jot-header.tpl'), array( '$baseurl' => $a->get_baseurl(), '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), + '$pretext' => '', '$ispublic' => ' ', // t('Visible to <strong>everybody</strong>'), '$geotag' => $geotag, '$nickname' => $channel['channel_address'], diff --git a/mod/editpost.php b/mod/editpost.php index daca7c154..d4dc35ef8 100644 --- a/mod/editpost.php +++ b/mod/editpost.php @@ -47,6 +47,7 @@ function editpost_content(&$a) { $a->page['htmlhead'] .= replace_macros(get_markup_template('jot-header.tpl'), array( '$baseurl' => $a->get_baseurl(), '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), + '$pretext' => '', '$ispublic' => ' ', // t('Visible to <strong>everybody</strong>'), '$geotag' => $geotag, '$nickname' => $channel['channel_address'], diff --git a/mod/editwebpage.php b/mod/editwebpage.php index 974e8cc38..0192fd9c0 100644 --- a/mod/editwebpage.php +++ b/mod/editwebpage.php @@ -146,6 +146,7 @@ function editwebpage_content(&$a) { $a->page['htmlhead'] .= replace_macros(get_markup_template('jot-header.tpl'), array( '$baseurl' => $a->get_baseurl(), '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), + '$pretext' => '', '$ispublic' => ' ', // t('Visible to <strong>everybody</strong>'), '$geotag' => $geotag, '$nickname' => $channel['channel_address'], diff --git a/mod/events.php b/mod/events.php index 9120f8713..d76602a33 100755 --- a/mod/events.php +++ b/mod/events.php @@ -205,6 +205,23 @@ function events_post(&$a) { $item_id = event_store_item($datarray,$event); + if($item_id) { + $r = q("select * from item where id = %d", + intval($item_id) + ); + if($r) { + xchan_query($r); + $sync_item = fetch_post_tags($r); + $z = q("select * from event where event_hash = '%s' and uid = %d limit 1", + dbesc($r[0]['resource_id']), + intval($channel['channel_id']) + ); + if($z) { + build_sync_packet($channel['channel_id'],array('event_item' => array(encode_item($sync_item[0],true)),'event' => $z)); + } + } + } + if($share) proc_run('php',"include/notifier.php","event","$item_id"); @@ -528,6 +545,9 @@ function events_content(&$a) { dbesc($event_id), intval(local_channel()) ); + + $sync_event = $r[0]; + if($r) { $r = q("delete from event where event_hash = '%s' and uid = %d limit 1", dbesc($event_id), @@ -538,6 +558,9 @@ function events_content(&$a) { dbesc($event_id), intval(local_channel()) ); + $sync_event['event_deleted'] = 1; + build_sync_packet(0,array('event' => array($sync_event))); + info( t('Event removed') . EOL); } else { diff --git a/mod/import.php b/mod/import.php index c2ed82a0a..563967aa2 100644 --- a/mod/import.php +++ b/mod/import.php @@ -161,7 +161,6 @@ function import_post(&$a) { } - if($completed < 3) { if($data['photo']) { @@ -169,8 +168,8 @@ function import_post(&$a) { import_channel_photo(base64url_decode($data['photo']['data']),$data['photo']['type'],get_account_id(),$channel['channel_id']); } - if(is_array($data['profiles'])) - import_profiles($channel,$data['profiles']); + if(is_array($data['profile'])) + import_profiles($channel,$data['profile']); logger('import step 3'); $_SESSION['import_step'] = 3; @@ -433,65 +432,35 @@ function import_post(&$a) { if(is_array($data['obj'])) import_objs($channel,$data['obj']); + if(is_array($data['likes'])) + import_likes($channel,$data['likes']); + if(is_array($data['app'])) import_apps($channel,$data['app']); - $saved_notification_flags = notifications_off($channel['channel_id']); + if(is_array($data['chatroom'])) + import_chatrooms($channel,$data['chatroom']); - if($import_posts && array_key_exists('item',$data) && $data['item']) { + if(is_array($data['event'])) + import_events($channel,$data['event']); - foreach($data['item'] as $i) { - $item = get_item_elements($i); + if(is_array($data['event_item'])) + import_items($channel,$data['event_item']); - $r = q("select id, edited from item where mid = '%s' and uid = %d limit 1", - dbesc($item['mid']), - intval($channel['channel_id']) - ); - if($r) { - if($item['edited'] > $r[0]['edited']) { - $item['id'] = $r[0]['id']; - $item['uid'] = $channel['channel_id']; - item_store_update($item); - continue; - } - } - else { - $item['aid'] = $channel['channel_account_id']; - $item['uid'] = $channel['channel_id']; - $item_result = item_store($item); - } + if(is_array($data['menu'])) + import_menus($channel,$data['menu']); + - } + $saved_notification_flags = notifications_off($channel['channel_id']); - } + if($import_posts && array_key_exists('item',$data) && $data['item']) + import_items($channel,$data['item']); notifications_on($channel['channel_id'],$saved_notification_flags); - if(array_key_exists('item_id',$data) && $data['item_id']) { - foreach($data['item_id'] as $i) { - $r = q("select id from item where mid = '%s' and uid = %d limit 1", - dbesc($i['mid']), - intval($channel['channel_id']) - ); - if(! $r) - continue; - $z = q("select * from item_id where service = '%s' and sid = '%s' and iid = %d and uid = %d limit 1", - dbesc($i['service']), - dbesc($i['sid']), - intval($r[0]['id']), - intval($channel['channel_id']) - ); - if(! $z) { - q("insert into item_id (iid,uid,sid,service) values(%d,%d,'%s','%s')", - intval($r[0]['id']), - intval($channel['channel_id']), - dbesc($i['sid']), - dbesc($i['service']) - ); - } - } - } + if(array_key_exists('item_id',$data) && $data['item_id']) + import_item_ids($channel,$data['item_id']); // FIXME - ensure we have a self entry if somebody is trying to pull a fast one diff --git a/mod/import_items.php b/mod/import_items.php index 1e54c0deb..6b97939c9 100644 --- a/mod/import_items.php +++ b/mod/import_items.php @@ -1,5 +1,6 @@ <?php +require_once('include/import.php'); function import_items_post(&$a) { @@ -88,57 +89,13 @@ function import_items_post(&$a) { $saved_notification_flags = notifications_off($channel['channel_id']); if(array_key_exists('item',$data) && $data['item']) { - - foreach($data['item'] as $i) { - $item = get_item_elements($i); - - $r = q("select id, edited from item where mid = '%s' and uid = %d limit 1", - dbesc($item['mid']), - intval($channel['channel_id']) - ); - if($r) { - if($item['edited'] > $r[0]['edited']) { - $item['id'] = $r[0]['id']; - $item['uid'] = $channel['channel_id']; - item_store_update($item); - continue; - } - } - else { - $item['aid'] = $channel['channel_account_id']; - $item['uid'] = $channel['channel_id']; - $item_result = item_store($item); - } - - } - + import_items($channel,$data['item']); } notifications_on($channel['channel_id'],$saved_notification_flags); if(array_key_exists('item_id',$data) && $data['item_id']) { - foreach($data['item_id'] as $i) { - $r = q("select id from item where mid = '%s' and uid = %d limit 1", - dbesc($i['mid']), - intval($channel['channel_id']) - ); - if(! $r) - continue; - $z = q("select * from item_id where service = '%s' and sid = '%s' and iid = %d and uid = %d limit 1", - dbesc($i['service']), - dbesc($i['sid']), - intval($r[0]['id']), - intval($channel['channel_id']) - ); - if(! $z) { - q("insert into item_id (iid,uid,sid,service) values(%d,%d,'%s','%s')", - intval($r[0]['id']), - intval($channel['channel_id']), - dbesc($i['sid']), - dbesc($i['service']) - ); - } - } + import_item_ids($channel,$data['item_id']); } info( t('Import completed') . EOL); diff --git a/mod/item.php b/mod/item.php index c93560771..d0cf59091 100644 --- a/mod/item.php +++ b/mod/item.php @@ -805,6 +805,19 @@ function item_post(&$a) { update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid); + if(! $parent) { + $r = q("select * from item where id = %d", + intval($post_id) + ); + if($r) { + xchan_query($r); + $sync_item = fetch_post_tags($r); + $rid = q("select * from item_id where iid = %d", + intval($post_id) + ); + build_sync_packet($uid,array('item' => array(encode_item($sync_item[0],true)),'item_id' => $rid)); + } + } if(! $nopush) proc_run('php', "include/notifier.php", 'edit_post', $post_id); @@ -884,14 +897,28 @@ function item_post(&$a) { // NOTREACHED } - if($parent) { + + update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid); + + if(($parent) && ($parent != $post_id)) { // Store the comment signature information in case we need to relay to Diaspora $ditem = $datarray; $ditem['author'] = $observer; store_diaspora_comment_sig($ditem,$channel,$parent_item, $post_id, (($walltowall_comment) ? 1 : 0)); } - - update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid); + else { + $r = q("select * from item where id = %d", + intval($post_id) + ); + if($r) { + xchan_query($r); + $sync_item = fetch_post_tags($r); + $rid = q("select * from item_id where iid = %d", + intval($post_id) + ); + build_sync_packet($uid,array('item' => array(encode_item($sync_item[0],true)),'item_id' => $rid)); + } + } $datarray['id'] = $post_id; $datarray['llink'] = $a->get_baseurl() . '/display/' . $channel['channel_address'] . '/' . $post_id; @@ -903,6 +930,11 @@ function item_post(&$a) { logger('post_complete'); + + + + + // figure out how to return, depending on from whence we came if($api_source) diff --git a/mod/like.php b/mod/like.php index 42ff9bb8a..ce8bc3063 100755 --- a/mod/like.php +++ b/mod/like.php @@ -219,13 +219,23 @@ function like_content(&$a) { ); if($z) { + $z[0]['deleted'] = 1; + build_sync_packet($ch[0]['channel_id'],array('likes' => $z)); + q("delete from likes where id = %d limit 1", intval($z[0]['id']) ); - drop_item($z[0]['iid'],false); - if($interactive) { - notice( t('Previous action reversed.') . EOL); - return $o; + if($z[0]['i_mid']) { + $r = q("select id from item where mid = '%s' and uid = %d limit 1", + dbesc($z[0]['i_mid']), + intval($ch[0]['channel_id']) + ); + if($r) + drop_item($r[0]['id'],false); + if($interactive) { + notice( t('Previous action reversed.') . EOL); + return $o; + } } killme(); } @@ -490,7 +500,18 @@ function like_content(&$a) { dbesc($obj_id), dbesc(($target) ? $target : $object) ); - }; + $r = q("select * from likes where liker = '%s' and likee = '%s' and i_mid = '%s' and verb = '%s' and target_type = '%s' and target_id = '%s' ", + dbesc($observer['xchan_hash']), + dbesc($ch[0]['channel_hash']), + dbesc($mid), + dbesc($activity), + dbesc(($tgttype)? $tgttype : $objtype), + dbesc($obj_id) + ); + if($r) + build_sync_packet($ch[0]['channel_id'],array('likes' => $r)); + + } proc_run('php',"include/notifier.php","like","$post_id"); diff --git a/mod/menu.php b/mod/menu.php index 7763c4ed1..bfc45adef 100644 --- a/mod/menu.php +++ b/mod/menu.php @@ -37,6 +37,7 @@ function menu_post(&$a) { $_REQUEST['menu_id'] = intval(argv(1)); $r = menu_edit($_REQUEST); if($r) { + menu_sync_packet($uid,get_observer_hash(),$menu_id); //info( t('Menu updated.') . EOL); goaway(z_root() . '/mitem/' . $menu_id . (($a->is_sys) ? '?f=&sys=1' : '')); } @@ -45,7 +46,9 @@ function menu_post(&$a) { } else { $r = menu_create($_REQUEST); - if($r) { + if($r) { + menu_sync_packet($uid,get_observer_hash(),$r); + //info( t('Menu created.') . EOL); goaway(z_root() . '/mitem/' . $r . (($a->is_sys) ? '?f=&sys=1' : '')); } @@ -56,6 +59,8 @@ function menu_post(&$a) { } + + function menu_content(&$a) { $uid = local_channel(); @@ -121,6 +126,7 @@ function menu_content(&$a) { if(intval(argv(1))) { if(argc() == 3 && argv(2) == 'drop') { + menu_sync_packet($uid,get_observer_hash(),intval(argv(1)),true); $r = menu_delete_id(intval(argv(1)),$uid); if(!$r) notice( t('Menu could not be deleted.'). EOL); diff --git a/mod/mitem.php b/mod/mitem.php index 0fadd1548..d6572bd56 100644 --- a/mod/mitem.php +++ b/mod/mitem.php @@ -64,6 +64,7 @@ function mitem_post(&$a) { $_REQUEST['mitem_id'] = $mitem_id; $r = menu_edit_item($_REQUEST['menu_id'],$uid,$_REQUEST); if($r) { + menu_sync_packet($uid,get_observer_hash(),$_REQUEST['menu_id']); //info( t('Menu element updated.') . EOL); goaway(z_root() . '/mitem/' . $_REQUEST['menu_id'] . (($a->is_sys) ? '?f=&sys=1' : '')); } @@ -74,6 +75,7 @@ function mitem_post(&$a) { else { $r = menu_add_item($_REQUEST['menu_id'],$uid,$_REQUEST); if($r) { + menu_sync_packet($uid,get_observer_hash(),$_REQUEST['menu_id']); //info( t('Menu element added.') . EOL); if($_REQUEST['submit']) { goaway(z_root() . '/menu' . (($a->is_sys) ? '?f=&sys=1' : '')); @@ -202,7 +204,9 @@ function mitem_content(&$a) { $lockstate = (($mitem['allow_cid'] || $mitem['allow_gid'] || $mitem['deny_cid'] || $mitem['deny_gid']) ? 'lock' : 'unlock'); if(argc() == 4 && argv(3) == 'drop') { + menu_sync_packet($uid,get_observer_hash(),$mitem['mitem_menu_id']); $r = menu_del_item($mitem['mitem_menu_id'], $uid, intval(argv(2))); + menu_sync_packet($uid,get_observer_hash(),$mitem['mitem_menu_id']); if($r) info( t('Menu item deleted.') . EOL); else diff --git a/mod/network.php b/mod/network.php index d5e305687..53de975a4 100644 --- a/mod/network.php +++ b/mod/network.php @@ -115,6 +115,8 @@ function network_content(&$a, $update = 0, $load = false) { $file = ((x($_GET,'file')) ? $_GET['file'] : ''); + $deftag = ''; + if(x($_GET,'search') || x($_GET,'file')) $nouveau = true; if($cid) { @@ -130,7 +132,10 @@ function network_content(&$a, $update = 0, $load = false) { goaway($a->get_baseurl(true) . '/network'); // NOTREACHED } - $def_acl = array('allow_cid' => '<' . $r[0]['abook_xchan'] . '>'); + if($_GET['pf'] === '1') + $deftag = '@' . t('forum') . '+' . intval($cid) . '+'; + else + $def_acl = array('allow_cid' => '<' . $r[0]['abook_xchan'] . '>'); } if(! $update) { @@ -153,17 +158,21 @@ function network_content(&$a, $update = 0, $load = false) { 'deny_gid' => $channel['channel_deny_gid'] ); + $private_editing = ((($group || $cid) && (! intval($_GET['pf']))) ? true : false); + $x = array( 'is_owner' => true, 'allow_location' => ((intval(get_pconfig($channel['channel_id'],'system','use_browser_location'))) ? '1' : ''), 'default_location' => $channel['channel_location'], 'nickname' => $channel['channel_address'], - 'lockstate' => (($group || $cid || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'), - 'acl' => populate_acl((($group || $cid) ? $def_acl : $channel_acl)), - 'bang' => (($group || $cid) ? '!' : ''), + 'lockstate' => (($private_editing || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'), + 'acl' => populate_acl((($private_editing) ? $def_acl : $channel_acl)), + 'bang' => (($private_editing) ? '!' : ''), 'visitor' => true, 'profile_uid' => local_channel() ); + if($deftag) + $x['pretext'] = $deftag; $status_editor = status_editor($a,$x); $o .= $status_editor; @@ -223,7 +232,7 @@ function network_content(&$a, $update = 0, $load = false) { if($r) { $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($r[0]['abook_xchan']) . "' or owner_xchan = '" . dbesc($r[0]['abook_xchan']) . "' ) $item_normal ) "; $title = replace_macros(get_markup_template("section_title.tpl"),array( - '$title' => t('Connection: ') . $r[0]['xchan_name'] + '$title' => '<a href="' . zid($r[0]['xchan_url']) . '" ><img src="' . zid($r[0]['xchan_photo_s']) . '" alt="' . urlencode($r[0]['xchan_name']) . '" /></a> <a href="' . zid($r[0]['xchan_url']) . '" >' . $r[0]['xchan_name'] . '</a>' )); $o = $tabs; $o .= $title; diff --git a/mod/photos.php b/mod/photos.php index d06a8e69c..f48603d71 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -85,7 +85,7 @@ function photos_post(&$a) { $owner_record = $s[0]; - $acl = AccessList($a->data['channel']); + $acl = new AccessList($a->data['channel']); if((argc() > 3) && (argv(2) === 'album')) { diff --git a/mod/profile_photo.php b/mod/profile_photo.php index 13923a655..7564a3f69 100644 --- a/mod/profile_photo.php +++ b/mod/profile_photo.php @@ -130,7 +130,7 @@ function profile_photo_post(&$a) { if($r) { $base_image = $r[0]; - $base_image['data'] = dbunescbin($base_image['data']); + $base_image['data'] = (($r[0]['os_storage']) ? @file_get_contents($base_image['data']) : dbunescbin($base_image['data'])); $im = photo_factory($base_image['data'], $base_image['type']); if($im->is_valid()) { @@ -238,16 +238,19 @@ function profile_photo_post(&$a) { notice( t('Image upload failed.') . EOL ); return; } + $os_storage = false; + foreach($i as $ii) { if(intval($ii['scale']) < 2) { $smallest = intval($ii['scale']); + $os_storage = intval($ii['os_storage']); $imagedata = $ii['data']; $filetype = $ii['type']; } } } -// $imagedata = @file_get_contents($src); + $imagedata = (($os_storage) ? @file_get_contents($imagedata) : $imagedata); $ph = photo_factory($imagedata, $filetype); if(! $ph->is_valid()) { @@ -332,7 +335,7 @@ function profile_photo_content(&$a) { goaway($a->get_baseurl() . '/profiles'); } - $r = q("SELECT `data`, `type` FROM photo WHERE id = %d and uid = %d limit 1", + $r = q("SELECT `data`, `type`, resource_id, os_storage FROM photo WHERE id = %d and uid = %d limit 1", intval($r[0]['id']), intval(local_channel()) @@ -342,9 +345,31 @@ function profile_photo_content(&$a) { return; } - $ph = photo_factory(dbunescbin($r[0]['data']), $r[0]['type']); - // go ahead as if we have just uploaded a new photo to crop - profile_photo_crop_ui_head($a, $ph); + if(intval($r[0]['os_storage'])) + $data = @file_get_contents($r[0]['data']); + else + $data = dbunescbin($r[0]['data']); + + $ph = photo_factory($data, $r[0]['type']); + $smallest = 0; + if($ph->is_valid()) { + // go ahead as if we have just uploaded a new photo to crop + $i = q("select resource_id, scale from photo where resource_id = '%s' and uid = %d order by scale", + dbesc($r[0]['resource_id']), + intval(local_channel()) + ); + + if($i) { + $hash = $i[0]['resource_id']; + foreach($i as $ii) { + if(intval($ii['scale']) < 2) { + $smallest = intval($ii['scale']); + } + } + } + } + + profile_photo_crop_ui_head($a, $ph, $hash, $smallest); } $profiles = q("select id, profile_name as name, is_default from profile where uid = %d", diff --git a/mod/public.php b/mod/public.php index 2106be7a6..45edda6c0 100644 --- a/mod/public.php +++ b/mod/public.php @@ -22,7 +22,7 @@ function public_content(&$a, $update = 0, $load = false) { $maxheight = get_config('system','home_divmore_height'); if(! $maxheight) - $maxheight = 75; + $maxheight = 400; $o .= '<div id="live-public"></div>' . "\r\n"; $o .= "<script> var profile_uid = " . ((intval(local_channel())) ? local_channel() : (-1)) @@ -80,10 +80,12 @@ function public_content(&$a, $update = 0, $load = false) { $a->data['firehose'] = intval($sys['channel_id']); } + if(get_config('system','public_list_mode')) + $page_mode = 'list'; + else + $page_mode = 'client'; - $page_mode = 'list'; - $simple_update = (($update) ? " and item.item_unseen = 1 " : ''); if($update && $_SESSION['loadtime']) diff --git a/mod/rpost.php b/mod/rpost.php index 4a6b87cc6..d519a996b 100644 --- a/mod/rpost.php +++ b/mod/rpost.php @@ -94,15 +94,13 @@ function rpost_content(&$a) { $channel = $a->get_channel(); - $channel_acl = array( - 'allow_cid' => $channel['channel_allow_cid'], - 'allow_gid' => $channel['channel_allow_gid'], - 'deny_cid' => $channel['channel_deny_cid'], - 'deny_gid' => $channel['channel_deny_gid'] - ); + + $acl = new AccessList($channel); + + $channel_acl = $acl->get(); if($_REQUEST['url']) { - $x = z_fetch_url(z_root() . '/urlinfo?f=&url=' . urlencode($_REQUEST['url'])); + $x = z_fetch_url(z_root() . '/linkinfo?f=&url=' . urlencode($_REQUEST['url'])); if($x['success']) $_REQUEST['body'] = $_REQUEST['body'] . $x['body']; } @@ -112,8 +110,7 @@ function rpost_content(&$a) { 'allow_location' => ((intval(get_pconfig($channel['channel_id'],'system','use_browser_location'))) ? '1' : ''), 'default_location' => $channel['channel_location'], 'nickname' => $channel['channel_address'], - 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] - || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'), + 'lockstate' => (($acl->is_private()) ? 'lock' : 'unlock'), 'acl' => populate_acl($channel_acl), 'bang' => '', 'visitor' => true, diff --git a/mod/zfinger.php b/mod/zfinger.php index ba80fc9b6..54ea52bc9 100644 --- a/mod/zfinger.php +++ b/mod/zfinger.php @@ -116,7 +116,7 @@ function zfinger_init(&$a) { $t = q("select abook_my_perms from abook where abook_channel = %d and abook_self = 1 limit 1", intval($e['channel_id']) ); - if($t && ($t[0]['abook_my_perms'] & PERMS_W_TAGWALL)) + if(($t) && (($t[0]['abook_my_perms'] & PERMS_W_TAGWALL) && (! ($t[0]['abook_my_perms'] & PERMS_W_STREAM)))) $public_forum = true; } diff --git a/version.inc b/version.inc index da2499cde..763c01a75 100644 --- a/version.inc +++ b/version.inc @@ -1 +1 @@ -2015-09-02.1143 +2015-09-10.1151 diff --git a/view/es/messages.po b/view/es/messages.po index 995124a85..044a6c49c 100644 --- a/view/es/messages.po +++ b/view/es/messages.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Redmatrix\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-08-21 00:04-0700\n" -"PO-Revision-Date: 2015-08-29 14:42+0000\n" +"POT-Creation-Date: 2015-09-04 00:04-0700\n" +"PO-Revision-Date: 2015-09-08 11:08+0000\n" "Last-Translator: Manuel Jiménez Friaza <mjfriaza@openmailbox.org>\n" "Language-Team: Spanish (http://www.transifex.com/Friendica/red-matrix/language/es/)\n" "MIME-Version: 1.0\n" @@ -37,9 +37,9 @@ msgstr "Fotos de perfil" #: ../../include/menu.php:107 ../../include/page_widgets.php:8 #: ../../include/page_widgets.php:36 ../../include/RedDAV/RedBrowser.php:266 #: ../../include/ItemObject.php:100 ../../include/apps.php:254 -#: ../../mod/webpages.php:181 ../../mod/thing.php:227 -#: ../../mod/connections.php:382 ../../mod/connections.php:395 -#: ../../mod/connections.php:414 ../../mod/blocks.php:153 +#: ../../mod/webpages.php:181 ../../mod/thing.php:255 +#: ../../mod/connections.php:242 ../../mod/connections.php:255 +#: ../../mod/connections.php:274 ../../mod/blocks.php:153 #: ../../mod/editpost.php:106 ../../mod/editlayout.php:133 #: ../../mod/editwebpage.php:178 ../../mod/editblock.php:134 #: ../../mod/menu.php:103 ../../mod/settings.php:650 ../../mod/layouts.php:183 @@ -84,7 +84,7 @@ msgstr "RSS/Atom" #: ../../include/contact_selectors.php:79 ../../mod/admin.php:822 #: ../../mod/admin.php:831 ../../mod/id.php:15 ../../mod/id.php:16 -#: ../../boot.php:1553 +#: ../../boot.php:1552 msgid "Email" msgstr "Correo electrónico" @@ -129,7 +129,7 @@ msgstr "No se ha encontrado el nombre de usuario en el fichero importado." msgid "Unable to create a unique channel address. Import failed." msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación." -#: ../../include/Import/import_diaspora.php:140 ../../mod/import.php:530 +#: ../../include/Import/import_diaspora.php:140 ../../mod/import.php:562 msgid "Import completed." msgstr "Importación completada." @@ -262,7 +262,7 @@ msgstr "AAAA-MM-DD o MM-DD" msgid "Required" msgstr "Obligatorio" -#: ../../include/datetime.php:262 ../../boot.php:2354 +#: ../../include/datetime.php:262 ../../boot.php:2353 msgid "never" msgstr "nunca" @@ -357,9 +357,9 @@ msgstr "Modo seguro" #: ../../mod/menu.php:147 ../../mod/filestorage.php:151 #: ../../mod/filestorage.php:159 ../../mod/admin.php:428 #: ../../mod/settings.php:579 ../../mod/removeme.php:60 -#: ../../mod/connedit.php:635 ../../mod/connedit.php:663 +#: ../../mod/connedit.php:647 ../../mod/connedit.php:675 #: ../../view/theme/redbasic/php/config.php:104 -#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555 +#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1554 msgid "No" msgstr "No" @@ -371,7 +371,7 @@ msgstr "No" #: ../../mod/filestorage.php:159 ../../mod/admin.php:430 #: ../../mod/settings.php:579 ../../mod/removeme.php:60 #: ../../view/theme/redbasic/php/config.php:104 -#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555 +#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1554 msgid "Yes" msgstr "Sí" @@ -393,7 +393,7 @@ msgid "View" msgstr "Ver" #: ../../include/page_widgets.php:40 ../../include/ItemObject.php:677 -#: ../../include/conversation.php:1155 ../../mod/webpages.php:188 +#: ../../include/conversation.php:1166 ../../mod/webpages.php:188 #: ../../mod/events.php:667 ../../mod/editpost.php:143 #: ../../mod/photos.php:982 ../../mod/editwebpage.php:214 #: ../../mod/editblock.php:170 @@ -422,7 +422,7 @@ msgstr "Creado" msgid "Edited" msgstr "Editado" -#: ../../include/api.php:1214 +#: ../../include/api.php:1234 msgid "Public Timeline" msgstr "Cronología pública" @@ -442,7 +442,7 @@ msgstr "Comentar" #: ../../include/js_strings.php:7 ../../include/ItemObject.php:384 msgid "[+] show all" -msgstr "[+] mostrar todo" +msgstr "[+] mostrar todo:" #: ../../include/js_strings.php:8 msgid "[-] show less" @@ -493,7 +493,7 @@ msgid "Rate This Channel (this is public)" msgstr "Valorar este canal (esto es público)" #: ../../include/js_strings.php:20 ../../mod/rate.php:156 -#: ../../mod/connedit.php:671 +#: ../../mod/connedit.php:683 msgid "Rating" msgstr "Valoración" @@ -502,11 +502,11 @@ msgid "Describe (optional)" msgstr "Describir (opcional)" #: ../../include/js_strings.php:22 ../../include/ItemObject.php:668 -#: ../../mod/xchan.php:11 ../../mod/connect.php:93 ../../mod/thing.php:275 -#: ../../mod/thing.php:318 ../../mod/events.php:494 ../../mod/events.php:670 +#: ../../mod/xchan.php:11 ../../mod/connect.php:93 ../../mod/thing.php:303 +#: ../../mod/thing.php:346 ../../mod/events.php:494 ../../mod/events.php:670 #: ../../mod/group.php:81 ../../mod/photos.php:577 ../../mod/photos.php:654 #: ../../mod/photos.php:941 ../../mod/photos.php:981 ../../mod/photos.php:1099 -#: ../../mod/pdledit.php:58 ../../mod/import.php:560 ../../mod/chat.php:177 +#: ../../mod/pdledit.php:58 ../../mod/import.php:592 ../../mod/chat.php:177 #: ../../mod/chat.php:211 ../../mod/mitem.php:232 ../../mod/rate.php:167 #: ../../mod/invite.php:142 ../../mod/locs.php:105 ../../mod/sources.php:104 #: ../../mod/sources.php:138 ../../mod/filestorage.php:156 @@ -518,7 +518,7 @@ msgstr "Describir (opcional)" #: ../../mod/settings.php:718 ../../mod/settings.php:746 #: ../../mod/settings.php:769 ../../mod/settings.php:854 #: ../../mod/settings.php:1050 ../../mod/mood.php:134 -#: ../../mod/connedit.php:692 ../../mod/mail.php:355 ../../mod/appman.php:99 +#: ../../mod/connedit.php:704 ../../mod/mail.php:355 ../../mod/appman.php:99 #: ../../mod/pconfig.php:108 ../../mod/poll.php:68 #: ../../mod/bulksetclose.php:24 ../../view/theme/apw/php/config.php:256 #: ../../view/theme/redbasic/php/config.php:99 @@ -606,358 +606,358 @@ msgstr " " msgid "timeago.numbers" msgstr "timeago.numbers" -#: ../../include/text.php:395 +#: ../../include/text.php:391 msgid "prev" msgstr "anterior" -#: ../../include/text.php:397 +#: ../../include/text.php:393 msgid "first" msgstr "primera" -#: ../../include/text.php:426 +#: ../../include/text.php:422 msgid "last" msgstr "última" -#: ../../include/text.php:429 +#: ../../include/text.php:425 msgid "next" msgstr "próxima" -#: ../../include/text.php:439 +#: ../../include/text.php:435 msgid "older" msgstr "más antiguas" -#: ../../include/text.php:441 +#: ../../include/text.php:437 msgid "newer" msgstr "más recientes" -#: ../../include/text.php:834 +#: ../../include/text.php:830 msgid "No connections" msgstr "Sin conexiones" -#: ../../include/text.php:848 +#: ../../include/text.php:844 #, php-format msgid "%d Connection" msgid_plural "%d Connections" msgstr[0] "%d Conexión" msgstr[1] "%d Conexiones" -#: ../../include/text.php:861 ../../mod/viewconnections.php:104 +#: ../../include/text.php:857 ../../mod/viewconnections.php:104 msgid "View Connections" msgstr "Ver conexiones" -#: ../../include/text.php:918 ../../include/text.php:930 +#: ../../include/text.php:914 ../../include/text.php:926 #: ../../include/nav.php:165 ../../include/apps.php:147 #: ../../mod/search.php:38 msgid "Search" msgstr "Buscar" -#: ../../include/text.php:919 ../../include/text.php:931 +#: ../../include/text.php:915 ../../include/text.php:927 #: ../../include/widgets.php:192 ../../mod/rbmark.php:28 #: ../../mod/rbmark.php:98 ../../mod/filer.php:50 ../../mod/admin.php:1457 #: ../../mod/admin.php:1477 msgid "Save" msgstr "Guardar" -#: ../../include/text.php:994 +#: ../../include/text.php:990 msgid "poke" msgstr "dar un toque" -#: ../../include/text.php:994 ../../include/conversation.php:243 +#: ../../include/text.php:990 ../../include/conversation.php:243 msgid "poked" msgstr "ha recibido un toque" -#: ../../include/text.php:995 +#: ../../include/text.php:991 msgid "ping" msgstr "avisar" -#: ../../include/text.php:995 +#: ../../include/text.php:991 msgid "pinged" msgstr "avisado/a" -#: ../../include/text.php:996 +#: ../../include/text.php:992 msgid "prod" msgstr "incitar" -#: ../../include/text.php:996 +#: ../../include/text.php:992 msgid "prodded" msgstr "incitado/a" -#: ../../include/text.php:997 +#: ../../include/text.php:993 msgid "slap" msgstr "abofetear" -#: ../../include/text.php:997 +#: ../../include/text.php:993 msgid "slapped" msgstr "abofeteado/a" -#: ../../include/text.php:998 +#: ../../include/text.php:994 msgid "finger" msgstr "señalar" -#: ../../include/text.php:998 +#: ../../include/text.php:994 msgid "fingered" msgstr "señalado/a" -#: ../../include/text.php:999 +#: ../../include/text.php:995 msgid "rebuff" msgstr "desairar" -#: ../../include/text.php:999 +#: ../../include/text.php:995 msgid "rebuffed" msgstr "desairado/a" -#: ../../include/text.php:1009 +#: ../../include/text.php:1005 msgid "happy" msgstr "feliz" -#: ../../include/text.php:1010 +#: ../../include/text.php:1006 msgid "sad" msgstr "triste" -#: ../../include/text.php:1011 +#: ../../include/text.php:1007 msgid "mellow" msgstr "amable" -#: ../../include/text.php:1012 +#: ../../include/text.php:1008 msgid "tired" msgstr "cansado/a" -#: ../../include/text.php:1013 +#: ../../include/text.php:1009 msgid "perky" msgstr "fesco/a" -#: ../../include/text.php:1014 +#: ../../include/text.php:1010 msgid "angry" msgstr "enfadado/a" -#: ../../include/text.php:1015 +#: ../../include/text.php:1011 msgid "stupified" msgstr "estupefacto/a" -#: ../../include/text.php:1016 +#: ../../include/text.php:1012 msgid "puzzled" msgstr "perplejo/a" -#: ../../include/text.php:1017 +#: ../../include/text.php:1013 msgid "interested" msgstr "interesado/a" -#: ../../include/text.php:1018 +#: ../../include/text.php:1014 msgid "bitter" msgstr "amargado/a" -#: ../../include/text.php:1019 +#: ../../include/text.php:1015 msgid "cheerful" msgstr "alegre" -#: ../../include/text.php:1020 +#: ../../include/text.php:1016 msgid "alive" msgstr "vivo/a" -#: ../../include/text.php:1021 +#: ../../include/text.php:1017 msgid "annoyed" msgstr "molesto/a" -#: ../../include/text.php:1022 +#: ../../include/text.php:1018 msgid "anxious" msgstr "ansioso/a" -#: ../../include/text.php:1023 +#: ../../include/text.php:1019 msgid "cranky" msgstr "de mal humor" -#: ../../include/text.php:1024 +#: ../../include/text.php:1020 msgid "disturbed" msgstr "perturbado/a" -#: ../../include/text.php:1025 +#: ../../include/text.php:1021 msgid "frustrated" msgstr "frustrado/a" -#: ../../include/text.php:1026 +#: ../../include/text.php:1022 msgid "depressed" msgstr "deprimido/a" -#: ../../include/text.php:1027 +#: ../../include/text.php:1023 msgid "motivated" msgstr "motivado/a" -#: ../../include/text.php:1028 +#: ../../include/text.php:1024 msgid "relaxed" msgstr "relajado/a" -#: ../../include/text.php:1029 +#: ../../include/text.php:1025 msgid "surprised" msgstr "sorprendido/a" -#: ../../include/text.php:1201 +#: ../../include/text.php:1197 msgid "Monday" msgstr "lunes" -#: ../../include/text.php:1201 +#: ../../include/text.php:1197 msgid "Tuesday" msgstr "martes" -#: ../../include/text.php:1201 +#: ../../include/text.php:1197 msgid "Wednesday" msgstr "miércoles" -#: ../../include/text.php:1201 +#: ../../include/text.php:1197 msgid "Thursday" msgstr "jueves" -#: ../../include/text.php:1201 +#: ../../include/text.php:1197 msgid "Friday" msgstr "viernes" -#: ../../include/text.php:1201 +#: ../../include/text.php:1197 msgid "Saturday" msgstr "sábado" -#: ../../include/text.php:1201 +#: ../../include/text.php:1197 msgid "Sunday" msgstr "domingo" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "January" msgstr "enero" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "February" msgstr "febrero" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "March" msgstr "marzo" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "April" msgstr "abril" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "May" msgstr "mayo" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "June" msgstr "junio" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "July" msgstr "julio" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "August" msgstr "agosto" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "September" msgstr "septiembre" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "October" msgstr "octubre" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "November" msgstr "noviembre" -#: ../../include/text.php:1205 +#: ../../include/text.php:1201 msgid "December" msgstr "diciembre" -#: ../../include/text.php:1310 +#: ../../include/text.php:1306 msgid "unknown.???" msgstr "desconocido???" -#: ../../include/text.php:1311 +#: ../../include/text.php:1307 msgid "bytes" msgstr "bytes" -#: ../../include/text.php:1347 +#: ../../include/text.php:1343 msgid "remove category" msgstr "eliminar categoría" -#: ../../include/text.php:1422 +#: ../../include/text.php:1418 msgid "remove from file" msgstr "eliminar del fichero" -#: ../../include/text.php:1498 ../../include/text.php:1509 +#: ../../include/text.php:1494 ../../include/text.php:1505 msgid "Click to open/close" msgstr "Pulsar para abrir/cerrar" -#: ../../include/text.php:1665 ../../mod/events.php:457 +#: ../../include/text.php:1661 ../../mod/events.php:457 msgid "Link to Source" -msgstr "Ir al mensaje original" +msgstr "Enlazar con la entrada en su ubicación original" -#: ../../include/text.php:1686 ../../include/text.php:1757 +#: ../../include/text.php:1682 ../../include/text.php:1753 msgid "default" msgstr "por defecto" -#: ../../include/text.php:1694 +#: ../../include/text.php:1690 msgid "Page layout" msgstr "Formato de la página" -#: ../../include/text.php:1694 +#: ../../include/text.php:1690 msgid "You can create your own with the layouts tool" msgstr "Puede crear su propio formato gráfico con las herramientas de diseño" -#: ../../include/text.php:1735 +#: ../../include/text.php:1731 msgid "Page content type" msgstr "Tipo de contenido de página" -#: ../../include/text.php:1769 +#: ../../include/text.php:1765 msgid "Select an alternate language" msgstr "Selecciona un idioma alternativo" -#: ../../include/text.php:1888 ../../include/diaspora.php:2119 +#: ../../include/text.php:1884 ../../include/diaspora.php:2119 #: ../../include/conversation.php:120 ../../mod/like.php:346 #: ../../mod/subthread.php:72 ../../mod/subthread.php:174 #: ../../mod/tagger.php:43 msgid "photo" msgstr "foto" -#: ../../include/text.php:1891 ../../include/conversation.php:123 +#: ../../include/text.php:1887 ../../include/conversation.php:123 #: ../../mod/like.php:348 ../../mod/tagger.php:47 msgid "event" msgstr "evento" -#: ../../include/text.php:1894 ../../include/diaspora.php:2119 +#: ../../include/text.php:1890 ../../include/diaspora.php:2119 #: ../../include/conversation.php:148 ../../mod/like.php:346 #: ../../mod/subthread.php:72 ../../mod/subthread.php:174 msgid "status" msgstr "estado" -#: ../../include/text.php:1896 ../../include/conversation.php:150 +#: ../../include/text.php:1892 ../../include/conversation.php:150 #: ../../mod/tagger.php:53 msgid "comment" msgstr "comentario" -#: ../../include/text.php:1901 +#: ../../include/text.php:1897 msgid "activity" msgstr "actividad" -#: ../../include/text.php:2196 +#: ../../include/text.php:2192 msgid "Design Tools" msgstr "Herramientas de diseño" -#: ../../include/text.php:2199 ../../mod/blocks.php:147 +#: ../../include/text.php:2195 ../../mod/blocks.php:147 msgid "Blocks" msgstr "Bloques" -#: ../../include/text.php:2200 ../../mod/menu.php:98 +#: ../../include/text.php:2196 ../../mod/menu.php:98 msgid "Menus" msgstr "Menús" -#: ../../include/text.php:2201 ../../mod/layouts.php:174 +#: ../../include/text.php:2197 ../../mod/layouts.php:174 msgid "Layouts" msgstr "Formato gráfico" -#: ../../include/text.php:2202 +#: ../../include/text.php:2198 msgid "Pages" msgstr "Páginas" -#: ../../include/text.php:2553 ../../include/RedDAV/RedBrowser.php:131 +#: ../../include/text.php:2549 ../../include/RedDAV/RedBrowser.php:131 msgid "Collection" msgstr "Colección" @@ -986,7 +986,7 @@ msgstr "Programar bandeja de entrada" msgid "Schedule Outbox" msgstr "Programar bandeja de salida" -#: ../../include/RedDAV/RedBrowser.php:164 ../../include/conversation.php:1019 +#: ../../include/RedDAV/RedBrowser.php:164 ../../include/conversation.php:1030 #: ../../include/apps.php:336 ../../include/apps.php:387 #: ../../mod/photos.php:693 ../../mod/photos.php:1131 msgid "Unknown" @@ -1003,7 +1003,7 @@ msgid "%1$s used of %2$s (%3$s%)" msgstr "%1$s usado de %2$s (%3$s%)" #: ../../include/RedDAV/RedBrowser.php:251 ../../include/nav.php:98 -#: ../../include/conversation.php:1609 ../../include/apps.php:135 +#: ../../include/conversation.php:1620 ../../include/apps.php:135 #: ../../mod/fbrowser.php:114 msgid "Files" msgstr "Ficheros" @@ -1048,12 +1048,12 @@ msgid "Last Modified" msgstr "Última modificación" #: ../../include/RedDAV/RedBrowser.php:267 ../../include/ItemObject.php:120 -#: ../../include/conversation.php:660 ../../include/apps.php:255 -#: ../../mod/webpages.php:183 ../../mod/thing.php:228 ../../mod/group.php:176 +#: ../../include/conversation.php:671 ../../include/apps.php:255 +#: ../../mod/webpages.php:183 ../../mod/thing.php:256 ../../mod/group.php:176 #: ../../mod/blocks.php:155 ../../mod/photos.php:1062 #: ../../mod/editlayout.php:178 ../../mod/editwebpage.php:225 #: ../../mod/editblock.php:180 ../../mod/admin.php:826 ../../mod/admin.php:988 -#: ../../mod/settings.php:651 ../../mod/connedit.php:551 +#: ../../mod/settings.php:651 ../../mod/connedit.php:563 msgid "Delete" msgstr "Borrar" @@ -1366,7 +1366,7 @@ msgstr "Aplicaciones" msgid "System" msgstr "Sistema" -#: ../../include/widgets.php:94 ../../include/conversation.php:1504 +#: ../../include/widgets.php:94 ../../include/conversation.php:1515 msgid "Personal" msgstr "Personales" @@ -1379,8 +1379,8 @@ msgid "Edit Personal App" msgstr "Editar una aplicación personal" #: ../../include/widgets.php:136 ../../include/widgets.php:175 -#: ../../include/Contact.php:107 ../../include/conversation.php:945 -#: ../../include/identity.php:880 ../../mod/directory.php:316 +#: ../../include/Contact.php:107 ../../include/conversation.php:956 +#: ../../include/identity.php:903 ../../mod/directory.php:316 #: ../../mod/match.php:64 ../../mod/suggest.php:52 msgid "Connect" msgstr "Conectar" @@ -1389,7 +1389,7 @@ msgstr "Conectar" msgid "Ignore/Hide" msgstr "Ignorar/Ocultar" -#: ../../include/widgets.php:143 ../../mod/connections.php:268 +#: ../../include/widgets.php:143 ../../mod/connections.php:128 msgid "Suggestions" msgstr "Sugerencias" @@ -1431,11 +1431,11 @@ msgstr "Todo" msgid "Archives" msgstr "Hemeroteca" -#: ../../include/widgets.php:429 ../../mod/connedit.php:571 +#: ../../include/widgets.php:429 ../../mod/connedit.php:583 msgid "Me" msgstr "Yo" -#: ../../include/widgets.php:430 ../../mod/connedit.php:572 +#: ../../include/widgets.php:430 ../../mod/connedit.php:584 msgid "Family" msgstr "Familia" @@ -1444,16 +1444,16 @@ msgstr "Familia" #: ../../include/profile_selectors.php:80 ../../mod/settings.php:345 #: ../../mod/settings.php:349 ../../mod/settings.php:350 #: ../../mod/settings.php:353 ../../mod/settings.php:364 -#: ../../mod/connedit.php:573 +#: ../../mod/connedit.php:585 msgid "Friends" msgstr "Amigos" -#: ../../include/widgets.php:432 ../../mod/connedit.php:574 +#: ../../include/widgets.php:432 ../../mod/connedit.php:586 msgid "Acquaintances" msgstr "Conocidos/as" -#: ../../include/widgets.php:433 ../../mod/connections.php:231 -#: ../../mod/connections.php:246 ../../mod/connedit.php:575 +#: ../../include/widgets.php:433 ../../mod/connections.php:91 +#: ../../mod/connections.php:106 ../../mod/connedit.php:587 msgid "All" msgstr "Todas" @@ -1489,7 +1489,7 @@ msgstr "Aplicaciones conectadas" msgid "Export channel" msgstr "Exportar canal" -#: ../../include/widgets.php:532 ../../mod/connedit.php:662 +#: ../../include/widgets.php:532 ../../mod/connedit.php:674 msgid "Connection Default Permissions" msgstr "Permisos predeterminados de conexión" @@ -1538,7 +1538,7 @@ msgstr "Valorar este canal" #: ../../include/widgets.php:978 msgid "View Ratings" -msgstr "Ver valoraciones" +msgstr "Mostrar las valoraciones" #: ../../include/widgets.php:989 msgid "Public Hubs" @@ -1557,7 +1557,7 @@ msgid "Finishes:" msgstr "Finaliza:" #: ../../include/event.php:50 ../../include/bb2diaspora.php:481 -#: ../../include/identity.php:931 ../../mod/directory.php:302 +#: ../../include/identity.php:954 ../../mod/directory.php:302 #: ../../mod/events.php:661 msgid "Location:" msgstr "Ubicación:" @@ -1598,17 +1598,17 @@ msgstr "Por favor visite %s para ver y/o responder a su mensaje privado." #: ../../include/enotify.php:158 #, php-format msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]" -msgstr "%1$s, %2$s comentó [zrl=%3$s]a %4$s[/zrl]" +msgstr "%1$s, %2$s comentó en [zrl=%3$s]a %4$s[/zrl]" #: ../../include/enotify.php:166 #, php-format msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]" -msgstr "%1$s, %2$s comentó [zrl=%3$s]%4$s de %5$s[/zrl]" +msgstr "%1$s, %2$s comentó en [zrl=%3$s]%4$s de %5$s[/zrl]" #: ../../include/enotify.php:175 #, php-format msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]" -msgstr "%1$s, %2$s comentó [zrl=%3$s]su %4$s[/zrl]" +msgstr "%1$s, %2$s comentó en [zrl=%3$s]su %4$s[/zrl]" #: ../../include/enotify.php:186 #, php-format @@ -1765,7 +1765,7 @@ msgstr "No se han podido verificar las entradas guardadas." #: ../../mod/like.php:394 #, php-format msgid "%1$s likes %2$s's %3$s" -msgstr "a %1$s le gusta %3$s de %2$s" +msgstr "a %1$s le gusta el %3$s de %2$s" #: ../../include/diaspora.php:2494 msgid "Please choose" @@ -1819,11 +1819,11 @@ msgstr "No se ha encontrado la cuenta local." msgid "Cannot connect to yourself." msgstr "No puede conectarse consigo mismo." -#: ../../include/ItemObject.php:89 ../../include/conversation.php:667 +#: ../../include/ItemObject.php:89 ../../include/conversation.php:678 msgid "Private Message" msgstr "Mensaje Privado" -#: ../../include/ItemObject.php:126 ../../include/conversation.php:659 +#: ../../include/ItemObject.php:126 ../../include/conversation.php:670 msgid "Select" msgstr "Seleccionar" @@ -1856,13 +1856,13 @@ msgid "I abstain" msgstr "Me abstengo" #: ../../include/ItemObject.php:175 ../../include/ItemObject.php:187 -#: ../../include/conversation.php:1677 ../../mod/photos.php:1015 +#: ../../include/conversation.php:1688 ../../mod/photos.php:1015 #: ../../mod/photos.php:1027 msgid "View all" msgstr "Ver todo" #: ../../include/ItemObject.php:179 ../../include/taxonomy.php:396 -#: ../../include/conversation.php:1701 ../../include/identity.php:1190 +#: ../../include/conversation.php:1712 ../../include/identity.php:1213 #: ../../mod/photos.php:1019 msgctxt "noun" msgid "Like" @@ -1870,7 +1870,7 @@ msgid_plural "Likes" msgstr[0] "Me gusta" msgstr[1] "Me gusta" -#: ../../include/ItemObject.php:184 ../../include/conversation.php:1704 +#: ../../include/ItemObject.php:184 ../../include/conversation.php:1715 #: ../../mod/photos.php:1024 msgctxt "noun" msgid "Dislike" @@ -1888,17 +1888,17 @@ msgstr "Eliminar estrella" #: ../../include/ItemObject.php:214 msgid "Toggle Star Status" -msgstr "Activar o desactivar el estado de preferido" +msgstr "Activar o desactivar el estado de entrada preferida" #: ../../include/ItemObject.php:218 msgid "starred" -msgstr "preferidos" +msgstr "preferidas" -#: ../../include/ItemObject.php:227 ../../include/conversation.php:674 +#: ../../include/ItemObject.php:227 ../../include/conversation.php:685 msgid "Message signature validated" msgstr "Firma de mensaje validada" -#: ../../include/ItemObject.php:228 ../../include/conversation.php:675 +#: ../../include/ItemObject.php:228 ../../include/conversation.php:686 msgid "Message signature incorrect" msgstr "Firma de mensaje incorrecta" @@ -1958,17 +1958,17 @@ msgstr "De página de perfil a página de perfil (de Muro a Muro)" msgid "via Wall-To-Wall:" msgstr "Mediante el procedimiento página de perfil a página de perfil (de Muro a Muro)" -#: ../../include/ItemObject.php:312 ../../include/conversation.php:716 +#: ../../include/ItemObject.php:312 ../../include/conversation.php:727 #, php-format msgid "from %s" msgstr "desde %s" -#: ../../include/ItemObject.php:315 ../../include/conversation.php:719 +#: ../../include/ItemObject.php:315 ../../include/conversation.php:730 #, php-format msgid "last edited: %s" msgstr "último cambio: %s" -#: ../../include/ItemObject.php:316 ../../include/conversation.php:720 +#: ../../include/ItemObject.php:316 ../../include/conversation.php:731 #, php-format msgid "Expires: %s" msgstr "Caduca: %s" @@ -2000,8 +2000,8 @@ msgstr "No me gusta" msgid "Close" msgstr "Cerrar" -#: ../../include/ItemObject.php:364 ../../include/conversation.php:737 -#: ../../include/conversation.php:1209 ../../mod/editpost.php:123 +#: ../../include/ItemObject.php:364 ../../include/conversation.php:748 +#: ../../include/conversation.php:1220 ../../mod/editpost.php:123 #: ../../mod/photos.php:962 ../../mod/editlayout.php:147 #: ../../mod/editwebpage.php:192 ../../mod/editblock.php:149 #: ../../mod/mail.php:241 ../../mod/mail.php:356 @@ -2013,31 +2013,31 @@ msgstr "Espera por favor" msgid "This is you" msgstr "Este es usted" -#: ../../include/ItemObject.php:669 ../../include/conversation.php:1181 +#: ../../include/ItemObject.php:669 ../../include/conversation.php:1192 #: ../../mod/editpost.php:107 ../../mod/editlayout.php:134 #: ../../mod/editwebpage.php:179 ../../mod/editblock.php:135 msgid "Bold" msgstr "Negrita" -#: ../../include/ItemObject.php:670 ../../include/conversation.php:1182 +#: ../../include/ItemObject.php:670 ../../include/conversation.php:1193 #: ../../mod/editpost.php:108 ../../mod/editlayout.php:135 #: ../../mod/editwebpage.php:180 ../../mod/editblock.php:136 msgid "Italic" msgstr "Itálico " -#: ../../include/ItemObject.php:671 ../../include/conversation.php:1183 +#: ../../include/ItemObject.php:671 ../../include/conversation.php:1194 #: ../../mod/editpost.php:109 ../../mod/editlayout.php:136 #: ../../mod/editwebpage.php:181 ../../mod/editblock.php:137 msgid "Underline" msgstr "Subrayar" -#: ../../include/ItemObject.php:672 ../../include/conversation.php:1184 +#: ../../include/ItemObject.php:672 ../../include/conversation.php:1195 #: ../../mod/editpost.php:110 ../../mod/editlayout.php:137 #: ../../mod/editwebpage.php:182 ../../mod/editblock.php:138 msgid "Quote" msgstr "Citar" -#: ../../include/ItemObject.php:673 ../../include/conversation.php:1185 +#: ../../include/ItemObject.php:673 ../../include/conversation.php:1196 #: ../../mod/editpost.php:111 ../../mod/editlayout.php:138 #: ../../mod/editwebpage.php:183 ../../mod/editblock.php:139 msgid "Code" @@ -2055,7 +2055,7 @@ msgstr "Insertar enlace" msgid "Video" msgstr "Vídeo" -#: ../../include/ItemObject.php:680 ../../include/conversation.php:1236 +#: ../../include/ItemObject.php:680 ../../include/conversation.php:1247 #: ../../mod/editpost.php:151 ../../mod/mail.php:247 ../../mod/mail.php:361 msgid "Encrypt text" msgstr "Cifrar texto" @@ -2068,7 +2068,7 @@ msgstr "Nueva ventana" msgid "Open the selected location in a different window or browser tab" msgstr "Abrir la ubicación seleccionada en una ventana o pestaña aparte" -#: ../../include/Contact.php:215 +#: ../../include/Contact.php:212 #, php-format msgid "User '%s' deleted" msgstr "El usuario '%s' ha sido eliminado" @@ -2081,7 +2081,7 @@ msgstr "Ficheros adjuntos:" msgid "$Projectname event notification:" msgstr "Notificación de eventos de $Projectname:" -#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1550 +#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1549 msgid "Logout" msgstr "Finalizar sesión" @@ -2097,8 +2097,8 @@ msgstr "Inicio" msgid "Your posts and conversations" msgstr "Sus entradas y conversaciones" -#: ../../include/nav.php:91 ../../include/conversation.php:942 -#: ../../mod/connedit.php:498 +#: ../../include/nav.php:91 ../../include/conversation.php:953 +#: ../../mod/connedit.php:510 msgid "View Profile" msgstr "Ver el perfil" @@ -2114,7 +2114,7 @@ msgstr "Editar perfiles" msgid "Manage/Edit profiles" msgstr "Administrar/editar perfiles" -#: ../../include/nav.php:95 ../../include/identity.php:903 +#: ../../include/nav.php:95 ../../include/identity.php:926 msgid "Edit Profile" msgstr "Editar perfil" @@ -2122,7 +2122,7 @@ msgstr "Editar perfil" msgid "Edit your profile" msgstr "Editar su perfil" -#: ../../include/nav.php:97 ../../include/conversation.php:1600 +#: ../../include/nav.php:97 ../../include/conversation.php:1611 #: ../../include/apps.php:139 ../../mod/fbrowser.php:25 msgid "Photos" msgstr "Fotos" @@ -2143,7 +2143,7 @@ msgstr "Chat" msgid "Your chatrooms" msgstr "Sus salas de chat" -#: ../../include/nav.php:109 ../../include/conversation.php:1635 +#: ../../include/nav.php:109 ../../include/conversation.php:1646 #: ../../include/apps.php:129 msgid "Bookmarks" msgstr "Marcadores" @@ -2152,7 +2152,7 @@ msgstr "Marcadores" msgid "Your bookmarks" msgstr "Sus marcadores" -#: ../../include/nav.php:113 ../../include/conversation.php:1645 +#: ../../include/nav.php:113 ../../include/conversation.php:1656 #: ../../include/apps.php:136 ../../mod/webpages.php:178 msgid "Webpages" msgstr "Páginas web" @@ -2161,7 +2161,7 @@ msgstr "Páginas web" msgid "Your webpages" msgstr "Sus páginas web" -#: ../../include/nav.php:117 ../../include/apps.php:131 ../../boot.php:1551 +#: ../../include/nav.php:117 ../../include/apps.php:131 ../../boot.php:1550 msgid "Login" msgstr "Iniciar sesión" @@ -2186,7 +2186,7 @@ msgstr "Pulsar para identificarse en su servidor de inicio" msgid "Home Page" msgstr "Página de inicio" -#: ../../include/nav.php:155 ../../mod/register.php:224 ../../boot.php:1527 +#: ../../include/nav.php:155 ../../mod/register.php:224 ../../boot.php:1526 msgid "Register" msgstr "Registrarse" @@ -2243,7 +2243,7 @@ msgstr "Mi canal" msgid "Mark all channel notifications seen" msgstr "Marcar todas las notificaciones del canal como leídas" -#: ../../include/nav.php:187 ../../mod/connections.php:407 +#: ../../include/nav.php:187 ../../mod/connections.php:267 msgid "Connections" msgstr "Conexiones" @@ -2325,7 +2325,7 @@ msgstr "Administrador" msgid "Site Setup and Configuration" msgstr "Ajustes y configuración del sitio" -#: ../../include/nav.php:247 ../../include/conversation.php:850 +#: ../../include/nav.php:247 ../../include/conversation.php:861 msgid "Loading..." msgstr "Cargando..." @@ -2561,441 +2561,441 @@ msgctxt "mood" msgid "%1$s is %2$s" msgstr "%1$s está %2$s" -#: ../../include/conversation.php:572 ../../mod/photos.php:996 +#: ../../include/conversation.php:583 ../../mod/photos.php:996 msgctxt "title" msgid "Likes" msgstr "Me gusta" -#: ../../include/conversation.php:572 ../../mod/photos.php:996 +#: ../../include/conversation.php:583 ../../mod/photos.php:996 msgctxt "title" msgid "Dislikes" msgstr "No me gusta" -#: ../../include/conversation.php:573 ../../mod/photos.php:997 +#: ../../include/conversation.php:584 ../../mod/photos.php:997 msgctxt "title" msgid "Agree" msgstr "De acuerdo" -#: ../../include/conversation.php:573 ../../mod/photos.php:997 +#: ../../include/conversation.php:584 ../../mod/photos.php:997 msgctxt "title" msgid "Disagree" msgstr "En desacuerdo" -#: ../../include/conversation.php:573 ../../mod/photos.php:997 +#: ../../include/conversation.php:584 ../../mod/photos.php:997 msgctxt "title" msgid "Abstain" msgstr "Abstención" -#: ../../include/conversation.php:574 ../../mod/photos.php:998 +#: ../../include/conversation.php:585 ../../mod/photos.php:998 msgctxt "title" msgid "Attending" msgstr "Participar" -#: ../../include/conversation.php:574 ../../mod/photos.php:998 +#: ../../include/conversation.php:585 ../../mod/photos.php:998 msgctxt "title" msgid "Not attending" msgstr "No participar" -#: ../../include/conversation.php:574 ../../mod/photos.php:998 +#: ../../include/conversation.php:585 ../../mod/photos.php:998 msgctxt "title" msgid "Might attend" msgstr "Quizá participe" -#: ../../include/conversation.php:692 +#: ../../include/conversation.php:703 #, php-format msgid "View %s's profile @ %s" msgstr "Ver el perfil @ %s de %s" -#: ../../include/conversation.php:707 +#: ../../include/conversation.php:718 msgid "Categories:" msgstr "Categorías:" -#: ../../include/conversation.php:708 +#: ../../include/conversation.php:719 msgid "Filed under:" msgstr "Archivado bajo:" -#: ../../include/conversation.php:735 +#: ../../include/conversation.php:746 msgid "View in context" msgstr "Mostrar en su contexto" -#: ../../include/conversation.php:846 +#: ../../include/conversation.php:857 msgid "remove" msgstr "eliminar" -#: ../../include/conversation.php:851 +#: ../../include/conversation.php:862 msgid "Delete Selected Items" msgstr "Eliminar elementos seleccionados" -#: ../../include/conversation.php:939 +#: ../../include/conversation.php:950 msgid "View Source" -msgstr "Ver la fuente original de esta entrada" +msgstr "Ver la fuente original de la entrada" -#: ../../include/conversation.php:940 +#: ../../include/conversation.php:951 msgid "Follow Thread" msgstr "Seguir el hilo" -#: ../../include/conversation.php:941 +#: ../../include/conversation.php:952 msgid "View Status" msgstr "Ver estado" -#: ../../include/conversation.php:943 +#: ../../include/conversation.php:954 msgid "View Photos" msgstr "Ver fotos" -#: ../../include/conversation.php:944 +#: ../../include/conversation.php:955 msgid "Matrix Activity" msgstr "Actividad en la red de esta conexión" -#: ../../include/conversation.php:946 +#: ../../include/conversation.php:957 msgid "Edit Contact" msgstr "Editar contacto" -#: ../../include/conversation.php:947 +#: ../../include/conversation.php:958 msgid "Send PM" msgstr "Enviar Mensaje Privado" -#: ../../include/conversation.php:948 ../../include/apps.php:145 +#: ../../include/conversation.php:959 ../../include/apps.php:145 msgid "Poke" msgstr "Dar un toque" -#: ../../include/conversation.php:1062 +#: ../../include/conversation.php:1073 #, php-format msgid "%s likes this." msgstr "a %s le gusta esto." -#: ../../include/conversation.php:1062 +#: ../../include/conversation.php:1073 #, php-format msgid "%s doesn't like this." msgstr "a %s no le gusta esto." -#: ../../include/conversation.php:1066 +#: ../../include/conversation.php:1077 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgid_plural "<span %1$s>%2$d people</span> like this." msgstr[0] "a <span %1$s>%2$d personas</span> le gusta esto." msgstr[1] "a <span %1$s>%2$d personas</span> les gusta esto." -#: ../../include/conversation.php:1068 +#: ../../include/conversation.php:1079 #, php-format msgid "<span %1$s>%2$d people</span> don't like this." msgid_plural "<span %1$s>%2$d people</span> don't like this." msgstr[0] "a <span %1$s>%2$d personas</span> no les gusta esto." msgstr[1] "a <span %1$s>%2$d personas</span> no les gusta esto." -#: ../../include/conversation.php:1074 +#: ../../include/conversation.php:1085 msgid "and" msgstr "y" -#: ../../include/conversation.php:1077 +#: ../../include/conversation.php:1088 #, php-format msgid ", and %d other people" msgid_plural ", and %d other people" msgstr[0] ", y %d persona más" msgstr[1] ", y %d personas más" -#: ../../include/conversation.php:1078 +#: ../../include/conversation.php:1089 #, php-format msgid "%s like this." msgstr "a %s le gusta esto." -#: ../../include/conversation.php:1078 +#: ../../include/conversation.php:1089 #, php-format msgid "%s don't like this." msgstr "a %s no le gusta esto." -#: ../../include/conversation.php:1140 +#: ../../include/conversation.php:1151 msgid "Visible to <strong>everybody</strong>" msgstr "Visible para <strong>cualquiera</strong>" -#: ../../include/conversation.php:1141 ../../mod/mail.php:174 +#: ../../include/conversation.php:1152 ../../mod/mail.php:174 #: ../../mod/mail.php:289 msgid "Please enter a link URL:" msgstr "Por favor, introduzca la dirección del enlace:" -#: ../../include/conversation.php:1142 +#: ../../include/conversation.php:1153 msgid "Please enter a video link/URL:" msgstr "Por favor, introduzca un enlace de vídeo:" -#: ../../include/conversation.php:1143 +#: ../../include/conversation.php:1154 msgid "Please enter an audio link/URL:" msgstr "Por favor, introduzca un enlace de audio:" -#: ../../include/conversation.php:1144 +#: ../../include/conversation.php:1155 msgid "Tag term:" msgstr "Término de la etiqueta:" -#: ../../include/conversation.php:1145 ../../mod/filer.php:49 +#: ../../include/conversation.php:1156 ../../mod/filer.php:49 msgid "Save to Folder:" msgstr "Guardar en carpeta:" -#: ../../include/conversation.php:1146 +#: ../../include/conversation.php:1157 msgid "Where are you right now?" msgstr "¿Donde está ahora?" -#: ../../include/conversation.php:1147 ../../mod/editpost.php:47 +#: ../../include/conversation.php:1158 ../../mod/editpost.php:47 #: ../../mod/mail.php:175 ../../mod/mail.php:290 msgid "Expires YYYY-MM-DD HH:MM" msgstr "Caduca YYYY-MM-DD HH:MM" -#: ../../include/conversation.php:1174 ../../mod/webpages.php:182 +#: ../../include/conversation.php:1185 ../../mod/webpages.php:182 #: ../../mod/blocks.php:154 ../../mod/photos.php:961 ../../mod/layouts.php:184 msgid "Share" msgstr "Compartir" -#: ../../include/conversation.php:1176 +#: ../../include/conversation.php:1187 msgid "Page link name" msgstr "Nombre de enlace de página" -#: ../../include/conversation.php:1179 +#: ../../include/conversation.php:1190 msgid "Post as" msgstr "Publicar como" -#: ../../include/conversation.php:1186 ../../mod/editpost.php:112 +#: ../../include/conversation.php:1197 ../../mod/editpost.php:112 #: ../../mod/editlayout.php:139 ../../mod/editwebpage.php:184 #: ../../mod/editblock.php:141 ../../mod/mail.php:238 ../../mod/mail.php:352 msgid "Upload photo" msgstr "Subir foto" -#: ../../include/conversation.php:1187 +#: ../../include/conversation.php:1198 msgid "upload photo" msgstr "subir foto" -#: ../../include/conversation.php:1188 ../../mod/editpost.php:113 +#: ../../include/conversation.php:1199 ../../mod/editpost.php:113 #: ../../mod/editlayout.php:140 ../../mod/editwebpage.php:185 #: ../../mod/editblock.php:142 ../../mod/mail.php:239 ../../mod/mail.php:353 msgid "Attach file" msgstr "Adjuntar fichero" -#: ../../include/conversation.php:1189 +#: ../../include/conversation.php:1200 msgid "attach file" msgstr "adjuntar fichero" -#: ../../include/conversation.php:1190 ../../mod/editpost.php:114 +#: ../../include/conversation.php:1201 ../../mod/editpost.php:114 #: ../../mod/editlayout.php:141 ../../mod/editwebpage.php:186 #: ../../mod/editblock.php:143 ../../mod/mail.php:240 ../../mod/mail.php:354 msgid "Insert web link" msgstr "Insertar enlace web" -#: ../../include/conversation.php:1191 +#: ../../include/conversation.php:1202 msgid "web link" msgstr "enlace web" -#: ../../include/conversation.php:1192 +#: ../../include/conversation.php:1203 msgid "Insert video link" msgstr "Insertar enlace de vídeo" -#: ../../include/conversation.php:1193 +#: ../../include/conversation.php:1204 msgid "video link" msgstr "enlace de vídeo" -#: ../../include/conversation.php:1194 +#: ../../include/conversation.php:1205 msgid "Insert audio link" msgstr "Insertar enlace de audio" -#: ../../include/conversation.php:1195 +#: ../../include/conversation.php:1206 msgid "audio link" msgstr "enlace de audio" -#: ../../include/conversation.php:1196 ../../mod/editpost.php:118 +#: ../../include/conversation.php:1207 ../../mod/editpost.php:118 #: ../../mod/editlayout.php:145 ../../mod/editwebpage.php:190 #: ../../mod/editblock.php:147 msgid "Set your location" msgstr "Configure su localización" -#: ../../include/conversation.php:1197 +#: ../../include/conversation.php:1208 msgid "set location" msgstr "configure localización" -#: ../../include/conversation.php:1198 ../../mod/editpost.php:120 +#: ../../include/conversation.php:1209 ../../mod/editpost.php:120 msgid "Toggle voting" msgstr "Cambiar votación" -#: ../../include/conversation.php:1201 ../../mod/editpost.php:119 +#: ../../include/conversation.php:1212 ../../mod/editpost.php:119 #: ../../mod/editlayout.php:146 ../../mod/editwebpage.php:191 #: ../../mod/editblock.php:148 msgid "Clear browser location" msgstr "Eliminar localización del navegador" -#: ../../include/conversation.php:1202 +#: ../../include/conversation.php:1213 msgid "clear location" msgstr "eliminar localización" -#: ../../include/conversation.php:1204 ../../mod/editpost.php:135 +#: ../../include/conversation.php:1215 ../../mod/editpost.php:135 #: ../../mod/editwebpage.php:207 ../../mod/editblock.php:161 msgid "Title (optional)" msgstr "Título (opcional)" -#: ../../include/conversation.php:1208 ../../mod/editpost.php:137 +#: ../../include/conversation.php:1219 ../../mod/editpost.php:137 #: ../../mod/editlayout.php:162 ../../mod/editwebpage.php:209 #: ../../mod/editblock.php:164 msgid "Categories (optional, comma-separated list)" msgstr "Categorías (opcional, lista separada por comas)" -#: ../../include/conversation.php:1210 ../../mod/editpost.php:124 +#: ../../include/conversation.php:1221 ../../mod/editpost.php:124 #: ../../mod/editlayout.php:148 ../../mod/editwebpage.php:193 #: ../../mod/editblock.php:150 msgid "Permission settings" msgstr "Configuración de permisos" -#: ../../include/conversation.php:1211 +#: ../../include/conversation.php:1222 msgid "permissions" msgstr "permisos" -#: ../../include/conversation.php:1219 ../../mod/editpost.php:132 +#: ../../include/conversation.php:1230 ../../mod/editpost.php:132 #: ../../mod/editlayout.php:155 ../../mod/editwebpage.php:202 #: ../../mod/editblock.php:158 msgid "Public post" msgstr "Entrada pública" -#: ../../include/conversation.php:1221 ../../mod/editpost.php:138 +#: ../../include/conversation.php:1232 ../../mod/editpost.php:138 #: ../../mod/editlayout.php:163 ../../mod/editwebpage.php:210 #: ../../mod/editblock.php:165 msgid "Example: bob@example.com, mary@example.com" msgstr "Ejemplo: roberto@ejemplo.com, maría@ejemplo.com" -#: ../../include/conversation.php:1234 ../../mod/editpost.php:149 +#: ../../include/conversation.php:1245 ../../mod/editpost.php:149 #: ../../mod/editlayout.php:172 ../../mod/editwebpage.php:219 #: ../../mod/editblock.php:175 ../../mod/mail.php:245 ../../mod/mail.php:359 msgid "Set expiration date" msgstr "Configurar fecha de caducidad" -#: ../../include/conversation.php:1238 ../../mod/events.php:651 +#: ../../include/conversation.php:1249 ../../mod/events.php:651 #: ../../mod/editpost.php:153 msgid "OK" msgstr "OK" -#: ../../include/conversation.php:1239 ../../mod/tagrm.php:11 +#: ../../include/conversation.php:1250 ../../mod/tagrm.php:11 #: ../../mod/tagrm.php:134 ../../mod/events.php:650 ../../mod/fbrowser.php:82 #: ../../mod/fbrowser.php:117 ../../mod/editpost.php:154 #: ../../mod/settings.php:589 ../../mod/settings.php:615 msgid "Cancel" msgstr "Cancelar" -#: ../../include/conversation.php:1481 +#: ../../include/conversation.php:1492 msgid "Discover" msgstr "Descubrir" -#: ../../include/conversation.php:1484 +#: ../../include/conversation.php:1495 msgid "Imported public streams" msgstr "Flujos públicos importados" -#: ../../include/conversation.php:1489 +#: ../../include/conversation.php:1500 msgid "Commented Order" msgstr "Comentarios recientes" -#: ../../include/conversation.php:1492 +#: ../../include/conversation.php:1503 msgid "Sort by Comment Date" msgstr "Ordenar por fecha de comentario" -#: ../../include/conversation.php:1496 +#: ../../include/conversation.php:1507 msgid "Posted Order" msgstr "Publicaciones recientes" -#: ../../include/conversation.php:1499 +#: ../../include/conversation.php:1510 msgid "Sort by Post Date" msgstr "Ordenar por fecha de publicación" -#: ../../include/conversation.php:1507 +#: ../../include/conversation.php:1518 msgid "Posts that mention or involve you" msgstr "Publicaciones que le mencionan o involucran" -#: ../../include/conversation.php:1513 ../../mod/connections.php:212 -#: ../../mod/connections.php:225 ../../mod/menu.php:107 +#: ../../include/conversation.php:1524 ../../mod/connections.php:72 +#: ../../mod/connections.php:85 ../../mod/menu.php:107 msgid "New" -msgstr "Novedades" +msgstr "Nuevas" -#: ../../include/conversation.php:1516 +#: ../../include/conversation.php:1527 msgid "Activity Stream - by date" msgstr "Flujo de actividad - por fecha" -#: ../../include/conversation.php:1522 +#: ../../include/conversation.php:1533 msgid "Starred" -msgstr "Preferidos" +msgstr "Preferidas" -#: ../../include/conversation.php:1525 +#: ../../include/conversation.php:1536 msgid "Favourite Posts" msgstr "Publicaciones favoritas" -#: ../../include/conversation.php:1532 +#: ../../include/conversation.php:1543 msgid "Spam" msgstr "Correo basura" -#: ../../include/conversation.php:1535 +#: ../../include/conversation.php:1546 msgid "Posts flagged as SPAM" msgstr "Publicaciones marcadas como basura" -#: ../../include/conversation.php:1579 ../../mod/admin.php:993 +#: ../../include/conversation.php:1590 ../../mod/admin.php:993 msgid "Channel" msgstr "Canal" -#: ../../include/conversation.php:1582 +#: ../../include/conversation.php:1593 msgid "Status Messages and Posts" msgstr "Mensajes de estado y publicaciones" -#: ../../include/conversation.php:1591 +#: ../../include/conversation.php:1602 msgid "About" msgstr "Sobre mí" -#: ../../include/conversation.php:1594 +#: ../../include/conversation.php:1605 msgid "Profile Details" msgstr "Detalles del perfil" -#: ../../include/conversation.php:1603 ../../include/photos.php:359 +#: ../../include/conversation.php:1614 ../../include/photos.php:359 msgid "Photo Albums" msgstr "Álbumes de fotos" -#: ../../include/conversation.php:1612 +#: ../../include/conversation.php:1623 msgid "Files and Storage" msgstr "Ficheros y carpetas" -#: ../../include/conversation.php:1622 ../../include/conversation.php:1625 +#: ../../include/conversation.php:1633 ../../include/conversation.php:1636 msgid "Chatrooms" msgstr "Salas de chat" -#: ../../include/conversation.php:1638 +#: ../../include/conversation.php:1649 msgid "Saved Bookmarks" msgstr "Marcadores guardados" -#: ../../include/conversation.php:1648 +#: ../../include/conversation.php:1659 msgid "Manage Webpages" msgstr "Administrar páginas web" -#: ../../include/conversation.php:1707 +#: ../../include/conversation.php:1718 msgctxt "noun" msgid "Attending" msgid_plural "Attending" msgstr[0] "Asistir" msgstr[1] "Participar" -#: ../../include/conversation.php:1710 +#: ../../include/conversation.php:1721 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "No asistir" msgstr[1] "No participar" -#: ../../include/conversation.php:1713 +#: ../../include/conversation.php:1724 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" msgstr[0] "Indeciso/a" msgstr[1] "Indecisos/as" -#: ../../include/conversation.php:1716 +#: ../../include/conversation.php:1727 msgctxt "noun" msgid "Agree" msgid_plural "Agrees" msgstr[0] "Está de acuerdo" msgstr[1] "Están de acuerdo" -#: ../../include/conversation.php:1719 +#: ../../include/conversation.php:1730 msgctxt "noun" msgid "Disagree" msgid_plural "Disagrees" msgstr[0] "No está de acuerdo" msgstr[1] "No están de acuerdo" -#: ../../include/conversation.php:1722 +#: ../../include/conversation.php:1733 msgctxt "noun" msgid "Abstain" msgid_plural "Abstains" @@ -3060,13 +3060,13 @@ msgstr "Elemento no encontrado." #: ../../include/chat.php:131 ../../include/photos.php:26 #: ../../mod/profile.php:64 ../../mod/profile.php:72 #: ../../mod/achievements.php:30 ../../mod/manage.php:6 ../../mod/api.php:26 -#: ../../mod/api.php:31 ../../mod/webpages.php:69 ../../mod/thing.php:241 -#: ../../mod/thing.php:256 ../../mod/thing.php:290 +#: ../../mod/api.php:31 ../../mod/webpages.php:69 ../../mod/thing.php:269 +#: ../../mod/thing.php:284 ../../mod/thing.php:318 #: ../../mod/profile_photo.php:264 ../../mod/profile_photo.php:277 #: ../../mod/block.php:22 ../../mod/block.php:72 ../../mod/like.php:178 #: ../../mod/events.php:232 ../../mod/group.php:9 ../../mod/item.php:206 #: ../../mod/item.php:214 ../../mod/item.php:978 ../../mod/network.php:12 -#: ../../mod/common.php:35 ../../mod/connections.php:169 +#: ../../mod/common.php:35 ../../mod/connections.php:29 #: ../../mod/blocks.php:69 ../../mod/blocks.php:76 ../../mod/editpost.php:13 #: ../../mod/photos.php:69 ../../mod/pdledit.php:21 ../../mod/authtest.php:13 #: ../../mod/editlayout.php:63 ../../mod/editlayout.php:87 @@ -3082,7 +3082,7 @@ msgstr "Elemento no encontrado." #: ../../mod/profiles.php:576 ../../mod/viewsrc.php:14 ../../mod/setup.php:223 #: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27 #: ../../mod/register.php:72 ../../mod/settings.php:570 ../../mod/id.php:71 -#: ../../mod/message.php:16 ../../mod/mood.php:111 ../../mod/connedit.php:336 +#: ../../mod/message.php:16 ../../mod/mood.php:111 ../../mod/connedit.php:348 #: ../../mod/mail.php:114 ../../mod/notifications.php:66 #: ../../mod/regmod.php:17 ../../mod/new_channel.php:68 #: ../../mod/new_channel.php:99 ../../mod/appman.php:66 @@ -3109,7 +3109,7 @@ msgstr "La colección está vacía." msgid "Collection: %s" msgstr "Colección: %s" -#: ../../include/items.php:4726 ../../mod/connedit.php:662 +#: ../../include/items.php:4726 ../../mod/connedit.php:674 #, php-format msgid "Connection: %s" msgstr "Conexión: %s" @@ -3179,7 +3179,7 @@ msgid "Examples: Robert Morgenstein, Fishing" msgstr "Ejemplos: José Fernández, Pesca" #: ../../include/contact_widgets.php:26 ../../mod/directory.php:379 -#: ../../mod/directory.php:384 ../../mod/connections.php:413 +#: ../../mod/directory.php:384 ../../mod/connections.php:273 msgid "Find" msgstr "Encontrar" @@ -3324,11 +3324,11 @@ msgstr "No ha sido posible recuperar la identidad creada" msgid "Default Profile" msgstr "Perfil principal" -#: ../../include/identity.php:683 +#: ../../include/identity.php:706 msgid "Requested channel is not available." msgstr "El canal solicitado no está disponible." -#: ../../include/identity.php:730 ../../mod/profile.php:16 +#: ../../include/identity.php:753 ../../mod/profile.php:16 #: ../../mod/achievements.php:11 ../../mod/webpages.php:29 #: ../../mod/connect.php:13 ../../mod/hcard.php:8 ../../mod/blocks.php:29 #: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28 @@ -3337,193 +3337,193 @@ msgstr "El canal solicitado no está disponible." msgid "Requested profile is not available." msgstr "El perfil solicitado no está disponible." -#: ../../include/identity.php:893 ../../mod/profiles.php:774 +#: ../../include/identity.php:916 ../../mod/profiles.php:774 msgid "Change profile photo" msgstr "Cambiar foto de perfil" -#: ../../include/identity.php:899 +#: ../../include/identity.php:922 msgid "Profiles" msgstr "Perfiles" -#: ../../include/identity.php:899 +#: ../../include/identity.php:922 msgid "Manage/edit profiles" msgstr "Administrar/editar perfiles" -#: ../../include/identity.php:900 ../../mod/profiles.php:775 +#: ../../include/identity.php:923 ../../mod/profiles.php:775 msgid "Create New Profile" msgstr "Crear nuevo perfil" -#: ../../include/identity.php:915 ../../mod/profiles.php:786 +#: ../../include/identity.php:938 ../../mod/profiles.php:786 msgid "Profile Image" msgstr "Imagen de perfil" -#: ../../include/identity.php:918 +#: ../../include/identity.php:941 msgid "visible to everybody" msgstr "visible para cualquiera" -#: ../../include/identity.php:919 ../../mod/profiles.php:669 +#: ../../include/identity.php:942 ../../mod/profiles.php:669 #: ../../mod/profiles.php:790 msgid "Edit visibility" msgstr "Editar visibilidad" -#: ../../include/identity.php:935 ../../include/identity.php:1174 +#: ../../include/identity.php:958 ../../include/identity.php:1197 msgid "Gender:" msgstr "Género:" -#: ../../include/identity.php:936 ../../include/identity.php:1218 +#: ../../include/identity.php:959 ../../include/identity.php:1241 msgid "Status:" msgstr "Estado:" -#: ../../include/identity.php:937 ../../include/identity.php:1229 +#: ../../include/identity.php:960 ../../include/identity.php:1252 msgid "Homepage:" msgstr "Página personal:" -#: ../../include/identity.php:938 +#: ../../include/identity.php:961 msgid "Online Now" msgstr "Ahora en línea" -#: ../../include/identity.php:1021 ../../include/identity.php:1099 +#: ../../include/identity.php:1044 ../../include/identity.php:1122 #: ../../mod/ping.php:324 msgid "g A l F d" msgstr "g A l d F" -#: ../../include/identity.php:1022 ../../include/identity.php:1100 +#: ../../include/identity.php:1045 ../../include/identity.php:1123 msgid "F d" msgstr "d F" -#: ../../include/identity.php:1067 ../../include/identity.php:1139 +#: ../../include/identity.php:1090 ../../include/identity.php:1162 #: ../../mod/ping.php:346 msgid "[today]" msgstr "[hoy]" -#: ../../include/identity.php:1078 +#: ../../include/identity.php:1101 msgid "Birthday Reminders" msgstr "Recordatorios de cumpleaños" -#: ../../include/identity.php:1079 +#: ../../include/identity.php:1102 msgid "Birthdays this week:" msgstr "Cumpleaños esta semana:" -#: ../../include/identity.php:1132 +#: ../../include/identity.php:1155 msgid "[No description]" msgstr "[Sin descripción]" -#: ../../include/identity.php:1150 +#: ../../include/identity.php:1173 msgid "Event Reminders" msgstr "Recordatorios de eventos" -#: ../../include/identity.php:1151 +#: ../../include/identity.php:1174 msgid "Events this week:" msgstr "Eventos de esta semana:" -#: ../../include/identity.php:1164 ../../include/identity.php:1281 +#: ../../include/identity.php:1187 ../../include/identity.php:1304 #: ../../include/apps.php:138 ../../mod/profperm.php:112 msgid "Profile" msgstr "Perfil" -#: ../../include/identity.php:1172 ../../mod/settings.php:1056 +#: ../../include/identity.php:1195 ../../mod/settings.php:1056 msgid "Full Name:" msgstr "Nombre completo:" -#: ../../include/identity.php:1179 +#: ../../include/identity.php:1202 msgid "Like this channel" msgstr "Me gusta este canal" -#: ../../include/identity.php:1203 +#: ../../include/identity.php:1226 msgid "j F, Y" msgstr "j F Y" -#: ../../include/identity.php:1204 +#: ../../include/identity.php:1227 msgid "j F" msgstr "j F" -#: ../../include/identity.php:1211 +#: ../../include/identity.php:1234 msgid "Birthday:" msgstr "Cumpleaños:" -#: ../../include/identity.php:1215 ../../mod/directory.php:297 +#: ../../include/identity.php:1238 ../../mod/directory.php:297 msgid "Age:" msgstr "Edad:" -#: ../../include/identity.php:1224 +#: ../../include/identity.php:1247 #, php-format msgid "for %1$d %2$s" msgstr "por %1$d %2$s" -#: ../../include/identity.php:1227 ../../mod/profiles.php:691 +#: ../../include/identity.php:1250 ../../mod/profiles.php:691 msgid "Sexual Preference:" msgstr "Orientación sexual:" -#: ../../include/identity.php:1231 ../../mod/directory.php:313 +#: ../../include/identity.php:1254 ../../mod/directory.php:313 #: ../../mod/profiles.php:693 msgid "Hometown:" msgstr "Ciudad de origen:" -#: ../../include/identity.php:1233 +#: ../../include/identity.php:1256 msgid "Tags:" msgstr "Etiquetas:" -#: ../../include/identity.php:1235 ../../mod/profiles.php:694 +#: ../../include/identity.php:1258 ../../mod/profiles.php:694 msgid "Political Views:" msgstr "Posición política:" -#: ../../include/identity.php:1237 +#: ../../include/identity.php:1260 msgid "Religion:" msgstr "Religión:" -#: ../../include/identity.php:1239 ../../mod/directory.php:315 +#: ../../include/identity.php:1262 ../../mod/directory.php:315 msgid "About:" msgstr "Sobre mí:" -#: ../../include/identity.php:1241 +#: ../../include/identity.php:1264 msgid "Hobbies/Interests:" msgstr "Aficciones/Intereses:" -#: ../../include/identity.php:1243 ../../mod/profiles.php:697 +#: ../../include/identity.php:1266 ../../mod/profiles.php:697 msgid "Likes:" msgstr "Me gusta:" -#: ../../include/identity.php:1245 ../../mod/profiles.php:698 +#: ../../include/identity.php:1268 ../../mod/profiles.php:698 msgid "Dislikes:" msgstr "No me gusta:" -#: ../../include/identity.php:1247 +#: ../../include/identity.php:1270 msgid "Contact information and Social Networks:" msgstr "Información de contacto y redes sociales:" -#: ../../include/identity.php:1249 +#: ../../include/identity.php:1272 msgid "My other channels:" msgstr "Mis otros canales:" -#: ../../include/identity.php:1251 +#: ../../include/identity.php:1274 msgid "Musical interests:" msgstr "Intereses musicales:" -#: ../../include/identity.php:1253 +#: ../../include/identity.php:1276 msgid "Books, literature:" msgstr "Libros, literatura:" -#: ../../include/identity.php:1255 +#: ../../include/identity.php:1278 msgid "Television:" msgstr "Televisión:" -#: ../../include/identity.php:1257 +#: ../../include/identity.php:1280 msgid "Film/dance/culture/entertainment:" msgstr "Cine/danza/cultura/entretenimiento:" -#: ../../include/identity.php:1259 +#: ../../include/identity.php:1282 msgid "Love/Romance:" msgstr "Vida sentimental/amorosa:" -#: ../../include/identity.php:1261 +#: ../../include/identity.php:1284 msgid "Work/employment:" msgstr "Trabajo:" -#: ../../include/identity.php:1263 +#: ../../include/identity.php:1286 msgid "School/education:" msgstr "Estudios:" -#: ../../include/identity.php:1283 +#: ../../include/identity.php:1306 msgid "Like this thing" msgstr "Me gusta esto" @@ -4162,56 +4162,56 @@ msgstr "Canal premium o restringido" msgid "Thing updated" msgstr "Elemento actualizado." -#: ../../mod/thing.php:153 +#: ../../mod/thing.php:167 msgid "Object store: failed" msgstr "Guardar objeto: ha fallado" -#: ../../mod/thing.php:157 +#: ../../mod/thing.php:171 msgid "Thing added" msgstr "Elemento añadido" -#: ../../mod/thing.php:175 +#: ../../mod/thing.php:203 #, php-format msgid "OBJ: %1$s %2$s %3$s" msgstr "OBJ: %1$s %2$s %3$s" -#: ../../mod/thing.php:226 +#: ../../mod/thing.php:254 msgid "Show Thing" msgstr "Mostrar elemento" -#: ../../mod/thing.php:233 +#: ../../mod/thing.php:261 msgid "item not found." msgstr "elemento no encontrado." -#: ../../mod/thing.php:261 +#: ../../mod/thing.php:289 msgid "Edit Thing" msgstr "Editar elemento" -#: ../../mod/thing.php:263 ../../mod/thing.php:310 +#: ../../mod/thing.php:291 ../../mod/thing.php:338 msgid "Select a profile" msgstr "Seleccionar un perfil" -#: ../../mod/thing.php:267 ../../mod/thing.php:313 +#: ../../mod/thing.php:295 ../../mod/thing.php:341 msgid "Post an activity" msgstr "Publicar una actividad" -#: ../../mod/thing.php:267 ../../mod/thing.php:313 +#: ../../mod/thing.php:295 ../../mod/thing.php:341 msgid "Only sends to viewers of the applicable profile" msgstr "Sólo envíos a espectadores del perfil pertinente." -#: ../../mod/thing.php:269 ../../mod/thing.php:315 +#: ../../mod/thing.php:297 ../../mod/thing.php:343 msgid "Name of thing e.g. something" msgstr "Nombre del elemento p. ej.:. \"algo\"" -#: ../../mod/thing.php:271 ../../mod/thing.php:316 +#: ../../mod/thing.php:299 ../../mod/thing.php:344 msgid "URL of thing (optional)" msgstr "Dirección del elemento (opcional)" -#: ../../mod/thing.php:273 ../../mod/thing.php:317 +#: ../../mod/thing.php:301 ../../mod/thing.php:345 msgid "URL for photo of thing (optional)" msgstr "Dirección para la foto o elemento (opcional)" -#: ../../mod/thing.php:308 +#: ../../mod/thing.php:336 msgid "Add Thing to your Profile" msgstr "Añadir elemento a su perfil" @@ -4373,11 +4373,11 @@ msgstr "%1$s no participará en el %3$s de %2$s" msgid "%1$s may attend %2$s's %3$s" msgstr "%1$s tal vez participe en el %3$s de %2$s" -#: ../../mod/like.php:492 +#: ../../mod/like.php:493 msgid "Action completed." msgstr "Acción completada." -#: ../../mod/like.php:493 +#: ../../mod/like.php:494 msgid "Thank you." msgstr "Gracias." @@ -4507,7 +4507,7 @@ msgid "" "membership in the network as a whole. Some sites may require subscription or" " provide tiered service plans. The provider links <strong>may</strong> " "provide additional details." -msgstr "Los sitios listados permiten el registro público de la red $Projectname. Todos los sitios de la red están vinculados entre sí por lo que sus miembros, en ninguna de ellas, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los enlaces de los proveedores de <strong> pueden </strong> proporcionar detalles adicionales." +msgstr "Los sitios listados permiten el registro público de la red $Projectname. Todos los sitios de la red están vinculados entre sí por lo que sus miembros, en ninguna de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los enlaces de los proveedores <strong> pueden </strong> proporcionar detalles adicionales." #: ../../mod/pubsites.php:25 msgid "Rate this hub" @@ -4730,96 +4730,80 @@ msgstr "Ninguna conexión en común." msgid "This site is not a directory server" msgstr "Este sitio no es un servidor de directorio" -#: ../../mod/connections.php:37 ../../mod/connedit.php:75 -msgid "Could not access contact record." -msgstr "No se ha podido acceder al registro de contacto." - -#: ../../mod/connections.php:51 ../../mod/connedit.php:99 -msgid "Could not locate selected profile." -msgstr "No se ha podido localizar el perfil seleccionado." - -#: ../../mod/connections.php:94 ../../mod/connedit.php:219 -msgid "Connection updated." -msgstr "Conexión actualizada." - -#: ../../mod/connections.php:96 ../../mod/connedit.php:221 -msgid "Failed to update connection record." -msgstr "Error al actualizar el registro de la conexión." - -#: ../../mod/connections.php:192 ../../mod/connections.php:293 +#: ../../mod/connections.php:52 ../../mod/connections.php:153 msgid "Blocked" msgstr "Bloqueadas" -#: ../../mod/connections.php:197 ../../mod/connections.php:300 +#: ../../mod/connections.php:57 ../../mod/connections.php:160 msgid "Ignored" msgstr "Ignoradas" -#: ../../mod/connections.php:202 ../../mod/connections.php:314 +#: ../../mod/connections.php:62 ../../mod/connections.php:174 msgid "Hidden" msgstr "Ocultas" -#: ../../mod/connections.php:207 ../../mod/connections.php:307 +#: ../../mod/connections.php:67 ../../mod/connections.php:167 msgid "Archived" msgstr "Archivadas" -#: ../../mod/connections.php:271 +#: ../../mod/connections.php:131 msgid "Suggest new connections" msgstr "Sugerir nuevas conexiones" -#: ../../mod/connections.php:274 +#: ../../mod/connections.php:134 msgid "New Connections" msgstr "Nuevas conexiones" -#: ../../mod/connections.php:277 +#: ../../mod/connections.php:137 msgid "Show pending (new) connections" msgstr "Mostrar conexiones (nuevas) pendientes" -#: ../../mod/connections.php:280 ../../mod/profperm.php:139 +#: ../../mod/connections.php:140 ../../mod/profperm.php:139 msgid "All Connections" msgstr "Todas las conexiones" -#: ../../mod/connections.php:283 +#: ../../mod/connections.php:143 msgid "Show all connections" msgstr "Mostrar todas las conexiones" -#: ../../mod/connections.php:286 +#: ../../mod/connections.php:146 msgid "Unblocked" msgstr "Desbloqueadas" -#: ../../mod/connections.php:289 +#: ../../mod/connections.php:149 msgid "Only show unblocked connections" msgstr "Mostrar solo las conexiones desbloqueadas" -#: ../../mod/connections.php:296 +#: ../../mod/connections.php:156 msgid "Only show blocked connections" msgstr "Mostrar solo las conexiones bloqueadas" -#: ../../mod/connections.php:303 +#: ../../mod/connections.php:163 msgid "Only show ignored connections" msgstr "Mostrar solo conexiones ignoradas" -#: ../../mod/connections.php:310 +#: ../../mod/connections.php:170 msgid "Only show archived connections" msgstr "Mostrar solo las conexiones archivadas" -#: ../../mod/connections.php:317 +#: ../../mod/connections.php:177 msgid "Only show hidden connections" msgstr "Mostrar solo las conexiones ocultas" -#: ../../mod/connections.php:372 +#: ../../mod/connections.php:232 #, php-format msgid "%1$s [%2$s]" msgstr "%1$s [%2$s]" -#: ../../mod/connections.php:373 +#: ../../mod/connections.php:233 msgid "Edit connection" msgstr "Editar conexión" -#: ../../mod/connections.php:411 +#: ../../mod/connections.php:271 msgid "Search your connections" msgstr "Buscar sus conexiones" -#: ../../mod/connections.php:412 +#: ../../mod/connections.php:272 msgid "Finding: " msgstr "Búsqueda:" @@ -5136,42 +5120,42 @@ msgstr "No se ha podido importar el canal porque el canal no se ha podido clonar msgid "Cloned channel not found. Import failed." msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado." -#: ../../mod/import.php:542 +#: ../../mod/import.php:574 msgid "You must be logged in to use this feature." msgstr "Debe estar registrado para poder usar esta funcionalidad." -#: ../../mod/import.php:547 +#: ../../mod/import.php:579 msgid "Import Channel" msgstr "Importar canal" -#: ../../mod/import.php:548 +#: ../../mod/import.php:580 msgid "" "Use this form to import an existing channel from a different server/hub. You" " may retrieve the channel identity from the old server/hub via the network " "or provide an export file." msgstr "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación." -#: ../../mod/import.php:549 +#: ../../mod/import.php:581 msgid "File to Upload" msgstr "Fichero para subir" -#: ../../mod/import.php:550 +#: ../../mod/import.php:582 msgid "Or provide the old server/hub details" msgstr "O proporcione los detalles de su antiguo servidor/hub" -#: ../../mod/import.php:551 +#: ../../mod/import.php:583 msgid "Your old identity address (xyz@example.com)" msgstr "Su identidad en el antiguo servidor (canal@ejemplo.com)" -#: ../../mod/import.php:552 +#: ../../mod/import.php:584 msgid "Your old login email address" msgstr "Su antigua dirección de correo electrónico" -#: ../../mod/import.php:553 +#: ../../mod/import.php:585 msgid "Your old login password" msgstr "Su antigua contraseña" -#: ../../mod/import.php:554 +#: ../../mod/import.php:586 msgid "" "For either option, please choose whether to make this hub your new primary " "address, or whether your old location should continue this role. You will be" @@ -5179,17 +5163,17 @@ msgid "" "primary location for files, photos, and media." msgstr "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua ubicación debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos." -#: ../../mod/import.php:555 +#: ../../mod/import.php:587 msgid "Make this hub my primary location" msgstr "Convertir este servidor en mi ubicación primaria" -#: ../../mod/import.php:556 +#: ../../mod/import.php:588 msgid "" "Import existing posts if possible (experimental - limited by available " "memory" msgstr "Importar el contenido publicado si es posible (experimental - limitado por la memoria disponible" -#: ../../mod/import.php:557 +#: ../../mod/import.php:589 msgid "" "This process may take several minutes to complete. Please submit the form " "only once and leave this page open until finished." @@ -5413,7 +5397,7 @@ msgid "" "Password reset failed." msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado." -#: ../../mod/lostpass.php:86 ../../boot.php:1559 +#: ../../mod/lostpass.php:86 ../../boot.php:1558 msgid "Password Reset" msgstr "Restablecer la contraseña" @@ -7139,7 +7123,7 @@ msgstr "Fecha de solicitud" msgid "No registrations." msgstr "Sin registros." -#: ../../mod/admin.php:824 ../../mod/connedit.php:687 +#: ../../mod/admin.php:824 ../../mod/connedit.php:699 msgid "Approve" msgstr "Aprobar" @@ -7147,11 +7131,11 @@ msgstr "Aprobar" msgid "Deny" msgstr "Rechazar" -#: ../../mod/admin.php:827 ../../mod/connedit.php:519 +#: ../../mod/admin.php:827 ../../mod/connedit.php:531 msgid "Block" msgstr "Bloquear" -#: ../../mod/admin.php:828 ../../mod/connedit.php:519 +#: ../../mod/admin.php:828 ../../mod/connedit.php:531 msgid "Unblock" msgstr "Desbloquear" @@ -8223,220 +8207,236 @@ msgid "" "removed from the network" msgstr "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red" +#: ../../mod/connedit.php:75 +msgid "Could not access contact record." +msgstr "No se ha podido acceder al registro de contacto." + +#: ../../mod/connedit.php:99 +msgid "Could not locate selected profile." +msgstr "No se ha podido localizar el perfil seleccionado." + +#: ../../mod/connedit.php:219 +msgid "Connection updated." +msgstr "Conexión actualizada." + +#: ../../mod/connedit.php:221 +msgid "Failed to update connection record." +msgstr "Error al actualizar el registro de la conexión." + #: ../../mod/connedit.php:267 msgid "is now connected to" msgstr "ahora está conectado a" -#: ../../mod/connedit.php:380 +#: ../../mod/connedit.php:392 msgid "Could not access address book record." msgstr "No se pudo acceder a la entrada en su libreta de direcciones." -#: ../../mod/connedit.php:394 +#: ../../mod/connedit.php:406 msgid "Refresh failed - channel is currently unavailable." msgstr "Recarga fallida - no se puede encontrar actualmente el canal" -#: ../../mod/connedit.php:406 ../../mod/connedit.php:418 -#: ../../mod/connedit.php:430 ../../mod/connedit.php:442 -#: ../../mod/connedit.php:458 +#: ../../mod/connedit.php:418 ../../mod/connedit.php:430 +#: ../../mod/connedit.php:442 ../../mod/connedit.php:454 +#: ../../mod/connedit.php:470 msgid "Unable to set address book parameters." msgstr "No ha sido posible establecer los parámetros de la libreta de direcciones." -#: ../../mod/connedit.php:482 +#: ../../mod/connedit.php:494 msgid "Connection has been removed." msgstr "La conexión ha sido eliminada." -#: ../../mod/connedit.php:501 +#: ../../mod/connedit.php:513 #, php-format msgid "View %s's profile" msgstr "Ver el perfil de %s" -#: ../../mod/connedit.php:505 +#: ../../mod/connedit.php:517 msgid "Refresh Permissions" msgstr "Recargar los permisos" -#: ../../mod/connedit.php:508 +#: ../../mod/connedit.php:520 msgid "Fetch updated permissions" msgstr "Obtener los permisos actualizados" -#: ../../mod/connedit.php:512 +#: ../../mod/connedit.php:524 msgid "Recent Activity" msgstr "Actividad reciente" -#: ../../mod/connedit.php:515 +#: ../../mod/connedit.php:527 msgid "View recent posts and comments" msgstr "Ver publicaciones y comentarios recientes" -#: ../../mod/connedit.php:522 +#: ../../mod/connedit.php:534 msgid "Block (or Unblock) all communications with this connection" msgstr "Bloquear (o desbloquear) todas las comunicaciones con esta conexión" -#: ../../mod/connedit.php:523 +#: ../../mod/connedit.php:535 msgid "This connection is blocked!" msgstr "¡Esta conexión está bloqueada!" -#: ../../mod/connedit.php:527 +#: ../../mod/connedit.php:539 msgid "Unignore" msgstr "Dejar de ignorar" -#: ../../mod/connedit.php:527 ../../mod/notifications.php:51 +#: ../../mod/connedit.php:539 ../../mod/notifications.php:51 msgid "Ignore" msgstr "Ignorar" -#: ../../mod/connedit.php:530 +#: ../../mod/connedit.php:542 msgid "Ignore (or Unignore) all inbound communications from this connection" msgstr "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión" -#: ../../mod/connedit.php:531 +#: ../../mod/connedit.php:543 msgid "This connection is ignored!" msgstr "¡Esta conexión es ignorada!" -#: ../../mod/connedit.php:535 +#: ../../mod/connedit.php:547 msgid "Unarchive" msgstr "Desarchivar" -#: ../../mod/connedit.php:535 +#: ../../mod/connedit.php:547 msgid "Archive" msgstr "Archivar" -#: ../../mod/connedit.php:538 +#: ../../mod/connedit.php:550 msgid "" "Archive (or Unarchive) this connection - mark channel dead but keep content" msgstr "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos" -#: ../../mod/connedit.php:539 +#: ../../mod/connedit.php:551 msgid "This connection is archived!" msgstr "¡Esta conexión esta archivada!" -#: ../../mod/connedit.php:543 +#: ../../mod/connedit.php:555 msgid "Unhide" msgstr "Mostrar" -#: ../../mod/connedit.php:543 +#: ../../mod/connedit.php:555 msgid "Hide" msgstr "Ocultar" -#: ../../mod/connedit.php:546 +#: ../../mod/connedit.php:558 msgid "Hide or Unhide this connection from your other connections" msgstr "Ocultar o mostrar esta conexión a sus otras conexiones" -#: ../../mod/connedit.php:547 +#: ../../mod/connedit.php:559 msgid "This connection is hidden!" msgstr "¡Esta conexión está oculta!" -#: ../../mod/connedit.php:554 +#: ../../mod/connedit.php:566 msgid "Delete this connection" msgstr "Eliminar esta conexión" -#: ../../mod/connedit.php:635 +#: ../../mod/connedit.php:647 msgid "Approve this connection" msgstr "Aprobar esta conexión" -#: ../../mod/connedit.php:635 +#: ../../mod/connedit.php:647 msgid "Accept connection to allow communication" msgstr "Aceptar la conexión para permitir la comunicación" -#: ../../mod/connedit.php:640 +#: ../../mod/connedit.php:652 msgid "Set Affinity" msgstr "Ajustar Afinidad" -#: ../../mod/connedit.php:643 +#: ../../mod/connedit.php:655 msgid "Set Profile" msgstr "Ajustar Perfil" -#: ../../mod/connedit.php:646 +#: ../../mod/connedit.php:658 msgid "Set Affinity & Profile" msgstr "Ajustar Afinidad y Perfil" -#: ../../mod/connedit.php:663 +#: ../../mod/connedit.php:675 msgid "Apply these permissions automatically" msgstr "Aplicar estos permisos automaticamente" -#: ../../mod/connedit.php:665 +#: ../../mod/connedit.php:677 msgid "This connection's address is" msgstr "La dirección de esta conexión es" -#: ../../mod/connedit.php:668 +#: ../../mod/connedit.php:680 msgid "" "The permissions indicated on this page will be applied to all new " "connections." msgstr "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones." -#: ../../mod/connedit.php:670 +#: ../../mod/connedit.php:682 msgid "Slide to adjust your degree of friendship" msgstr "Deslizar para ajustar el grado de amistad" -#: ../../mod/connedit.php:672 +#: ../../mod/connedit.php:684 msgid "Slide to adjust your rating" msgstr "Deslizar para ajustar su valoración" -#: ../../mod/connedit.php:673 ../../mod/connedit.php:678 +#: ../../mod/connedit.php:685 ../../mod/connedit.php:690 msgid "Optionally explain your rating" msgstr "Opcionalmente, puede explicar su valoración" -#: ../../mod/connedit.php:675 +#: ../../mod/connedit.php:687 msgid "Custom Filter" msgstr "Filtro Personalizado" -#: ../../mod/connedit.php:676 +#: ../../mod/connedit.php:688 msgid "Only import posts with this text" msgstr "Importar solo entradas que contengan este texto" -#: ../../mod/connedit.php:676 ../../mod/connedit.php:677 +#: ../../mod/connedit.php:688 ../../mod/connedit.php:689 msgid "" "words one per line or #tags or /patterns/, leave blank to import all posts" msgstr "Palabras, una por línea o #etiquetas o /patrones/, dejar en blanco para importar todas las entradas" -#: ../../mod/connedit.php:677 +#: ../../mod/connedit.php:689 msgid "Do not import posts with this text" msgstr "No importar entradas que contienen este texto" -#: ../../mod/connedit.php:679 +#: ../../mod/connedit.php:691 msgid "This information is public!" msgstr "¡Esta información es pública!" -#: ../../mod/connedit.php:684 +#: ../../mod/connedit.php:696 msgid "Connection Pending Approval" msgstr "Conexión pendiente de aprobación" -#: ../../mod/connedit.php:685 +#: ../../mod/connedit.php:697 msgid "Connection Request" msgstr "Solicitud de conexión" -#: ../../mod/connedit.php:686 +#: ../../mod/connedit.php:698 #, php-format msgid "" "(%s) would like to connect with you. Please approve this connection to allow" " communication." msgstr "(%s) desearía conectar con usted. por favor, apruebe esta conexión para permitir la comunicación." -#: ../../mod/connedit.php:688 +#: ../../mod/connedit.php:700 msgid "Approve Later" msgstr "Aprobar más tarde" -#: ../../mod/connedit.php:691 +#: ../../mod/connedit.php:703 msgid "inherited" msgstr "heredado" -#: ../../mod/connedit.php:693 +#: ../../mod/connedit.php:705 #, php-format msgid "" "Please choose the profile you would like to display to %s when viewing your " "profile securely." msgstr "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura." -#: ../../mod/connedit.php:695 +#: ../../mod/connedit.php:707 msgid "Their Settings" msgstr "Sus ajustes" -#: ../../mod/connedit.php:696 +#: ../../mod/connedit.php:708 msgid "My Settings" msgstr "Mis ajustes" -#: ../../mod/connedit.php:698 +#: ../../mod/connedit.php:710 msgid "Individual Permissions" msgstr "Permisos individuales" -#: ../../mod/connedit.php:699 +#: ../../mod/connedit.php:711 msgid "" "Some permissions may be inherited from your channel's <a " "href=\"settings\"><strong>privacy settings</strong></a>, which have higher " @@ -8444,7 +8444,7 @@ msgid "" " settings here." msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí." -#: ../../mod/connedit.php:700 +#: ../../mod/connedit.php:712 msgid "" "Some permissions may be inherited from your channel's <a " "href=\"settings\"><strong>privacy settings</strong></a>, which have higher " @@ -8452,7 +8452,7 @@ msgid "" "they wont have any impact unless the inherited setting changes." msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún impacto hasta que cambie los ajustes heredados." -#: ../../mod/connedit.php:701 +#: ../../mod/connedit.php:713 msgid "Last update:" msgstr "Última actualización:" @@ -8550,7 +8550,7 @@ msgstr "Comunicación segura no disponible. Pero <strong>puede</strong> responde #: ../../mod/mail.php:342 msgid "Send Reply" -msgstr "Envía respuesta" +msgstr "Responder" #: ../../mod/notifications.php:26 msgid "Invalid request identifier." @@ -8668,7 +8668,7 @@ msgstr "enviarle un mensaje privado" #: ../../mod/ping.php:314 msgid "added your channel" -msgstr "se añadió su canal" +msgstr "añadió este canal a sus conexiones" #: ../../mod/ping.php:355 msgid "posted an event" @@ -9031,51 +9031,51 @@ msgstr "Ajustar el tamaño de la foto del autor de la conversación" msgid "Set size of followup author photos" msgstr "Ajustar el tamaño de foto de los seguidores del autor" -#: ../../boot.php:1356 +#: ../../boot.php:1355 #, php-format msgid "Update %s failed. See error logs." msgstr "La actualización %s ha fallado. Mire el informe de errores." -#: ../../boot.php:1359 +#: ../../boot.php:1358 #, php-format msgid "Update Error at %s" msgstr "Error de Actualización en %s" -#: ../../boot.php:1526 +#: ../../boot.php:1525 msgid "" "Create an account to access services and applications within the Red Matrix" msgstr "Crear una cuenta para acceder a los servicios y aplicaciones dentro de la red" -#: ../../boot.php:1554 +#: ../../boot.php:1553 msgid "Password" msgstr "Contraseña" -#: ../../boot.php:1555 +#: ../../boot.php:1554 msgid "Remember me" msgstr "Recordarme" -#: ../../boot.php:1558 +#: ../../boot.php:1557 msgid "Forgot your password?" msgstr "¿Olvidó su contraseña?" -#: ../../boot.php:2178 +#: ../../boot.php:2177 msgid "toggle mobile" msgstr "cambiar a modo móvil" -#: ../../boot.php:2313 +#: ../../boot.php:2312 msgid "Website SSL certificate is not valid. Please correct." msgstr "El certificado SSL del sitio web no es válido. Por favor, corríjalo." -#: ../../boot.php:2316 +#: ../../boot.php:2315 #, php-format msgid "[red] Website SSL error for %s" msgstr "[red] Error SSL del sitio web en %s" -#: ../../boot.php:2353 +#: ../../boot.php:2352 msgid "Cron/Scheduled tasks not running." msgstr "Las tareas del Planificador/Cron no se están funcionando." -#: ../../boot.php:2357 +#: ../../boot.php:2356 #, php-format msgid "[red] Cron tasks not running on %s" msgstr "[red] Las tareas de Cron no están funcionando en %s" diff --git a/view/es/strings.php b/view/es/strings.php index 8088348f4..685a3417a 100644 --- a/view/es/strings.php +++ b/view/es/strings.php @@ -96,7 +96,7 @@ $a->strings["Public Timeline"] = "Cronología pública"; $a->strings["Default"] = "Predeterminado"; $a->strings["Delete this item?"] = "¿Borrar este elemento?"; $a->strings["Comment"] = "Comentar"; -$a->strings["[+] show all"] = "[+] mostrar todo"; +$a->strings["[+] show all"] = "[+] mostrar todo:"; $a->strings["[-] show less"] = "[-] mostrar menos"; $a->strings["[+] expand"] = "[+] expandir"; $a->strings["[-] collapse"] = "[-] contraer"; @@ -202,7 +202,7 @@ $a->strings["bytes"] = "bytes"; $a->strings["remove category"] = "eliminar categoría"; $a->strings["remove from file"] = "eliminar del fichero"; $a->strings["Click to open/close"] = "Pulsar para abrir/cerrar"; -$a->strings["Link to Source"] = "Ir al mensaje original"; +$a->strings["Link to Source"] = "Enlazar con la entrada en su ubicación original"; $a->strings["default"] = "por defecto"; $a->strings["Page layout"] = "Formato de la página"; $a->strings["You can create your own with the layouts tool"] = "Puede crear su propio formato gráfico con las herramientas de diseño"; @@ -351,7 +351,7 @@ $a->strings["Bookmarked Chatrooms"] = "Salas de chat preferidas"; $a->strings["Suggested Chatrooms"] = "Salas de chat sugeridas"; $a->strings["photo/image"] = "foto/imagen"; $a->strings["Rate Me"] = "Valorar este canal"; -$a->strings["View Ratings"] = "Ver valoraciones"; +$a->strings["View Ratings"] = "Mostrar las valoraciones"; $a->strings["Public Hubs"] = "Servidores públicos"; $a->strings["l F d, Y \\@ g:i A"] = "l d de F, Y \\@ G:i"; $a->strings["Starts:"] = "Comienza:"; @@ -364,9 +364,9 @@ $a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, % $a->strings["%1\$s sent you %2\$s."] = "%1\$s le envió %2\$s."; $a->strings["a private message"] = "un mensaje privado"; $a->strings["Please visit %s to view and/or reply to your private messages."] = "Por favor visite %s para ver y/o responder a su mensaje privado."; -$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s comentó [zrl=%3\$s]a %4\$s[/zrl]"; -$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s comentó [zrl=%3\$s]%4\$s de %5\$s[/zrl]"; -$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s comentó [zrl=%3\$s]su %4\$s[/zrl]"; +$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s comentó en [zrl=%3\$s]a %4\$s[/zrl]"; +$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s comentó en [zrl=%3\$s]%4\$s de %5\$s[/zrl]"; +$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s comentó en [zrl=%3\$s]su %4\$s[/zrl]"; $a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Aviso] Nuevo comentario de %2\$s en la conversación #%1\$d"; $a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s comentó un elemento/conversación que ha estado siguiendo."; $a->strings["Please visit %s to view and/or reply to the conversation."] = "Para ver o comentar la conversación, visite %s"; @@ -398,7 +398,7 @@ $a->strings["No recipient provided."] = "No se ha especificado ningún destinata $a->strings["[no subject]"] = "[sin asunto]"; $a->strings["Unable to determine sender."] = "No ha sido posible determinar el remitente. "; $a->strings["Stored post could not be verified."] = "No se han podido verificar las entradas guardadas."; -$a->strings["%1\$s likes %2\$s's %3\$s"] = "a %1\$s le gusta %3\$s de %2\$s"; +$a->strings["%1\$s likes %2\$s's %3\$s"] = "a %1\$s le gusta el %3\$s de %2\$s"; $a->strings["Please choose"] = "Por favor, elija"; $a->strings["Agree"] = "De acuerdo"; $a->strings["Disagree"] = "En desacuerdo"; @@ -432,8 +432,8 @@ $a->strings["__ctx:noun__ Dislike"] = array( ); $a->strings["Add Star"] = "Destacar añadiendo una estrella"; $a->strings["Remove Star"] = "Eliminar estrella"; -$a->strings["Toggle Star Status"] = "Activar o desactivar el estado de preferido"; -$a->strings["starred"] = "preferidos"; +$a->strings["Toggle Star Status"] = "Activar o desactivar el estado de entrada preferida"; +$a->strings["starred"] = "preferidas"; $a->strings["Message signature validated"] = "Firma de mensaje validada"; $a->strings["Message signature incorrect"] = "Firma de mensaje incorrecta"; $a->strings["Add Tag"] = "Añadir etiqueta"; @@ -605,7 +605,7 @@ $a->strings["Filed under:"] = "Archivado bajo:"; $a->strings["View in context"] = "Mostrar en su contexto"; $a->strings["remove"] = "eliminar"; $a->strings["Delete Selected Items"] = "Eliminar elementos seleccionados"; -$a->strings["View Source"] = "Ver la fuente original de esta entrada"; +$a->strings["View Source"] = "Ver la fuente original de la entrada"; $a->strings["Follow Thread"] = "Seguir el hilo"; $a->strings["View Status"] = "Ver estado"; $a->strings["View Photos"] = "Ver fotos"; @@ -672,9 +672,9 @@ $a->strings["Sort by Comment Date"] = "Ordenar por fecha de comentario"; $a->strings["Posted Order"] = "Publicaciones recientes"; $a->strings["Sort by Post Date"] = "Ordenar por fecha de publicación"; $a->strings["Posts that mention or involve you"] = "Publicaciones que le mencionan o involucran"; -$a->strings["New"] = "Novedades"; +$a->strings["New"] = "Nuevas"; $a->strings["Activity Stream - by date"] = "Flujo de actividad - por fecha"; -$a->strings["Starred"] = "Preferidos"; +$a->strings["Starred"] = "Preferidas"; $a->strings["Favourite Posts"] = "Publicaciones favoritas"; $a->strings["Spam"] = "Correo basura"; $a->strings["Posts flagged as SPAM"] = "Publicaciones marcadas como basura"; @@ -1061,7 +1061,7 @@ $a->strings["Title:"] = "Título:"; $a->strings["Share this event"] = "Compartir este evento"; $a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo %2\$s de %3\$s"; $a->strings["Public Sites"] = "Sitios públicos"; -$a->strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Los sitios listados permiten el registro público de la red \$Projectname. Todos los sitios de la red están vinculados entre sí por lo que sus miembros, en ninguna de ellas, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los enlaces de los proveedores de <strong> pueden </strong> proporcionar detalles adicionales."; +$a->strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Los sitios listados permiten el registro público de la red \$Projectname. Todos los sitios de la red están vinculados entre sí por lo que sus miembros, en ninguna de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los enlaces de los proveedores <strong> pueden </strong> proporcionar detalles adicionales."; $a->strings["Rate this hub"] = "Valorar este sitio"; $a->strings["Site URL"] = "Dirección del sitio"; $a->strings["Access Type"] = "Tipo de Acceso"; @@ -1115,10 +1115,6 @@ $a->strings["No channel."] = "Ningún canal."; $a->strings["Common connections"] = "Conexiones comunes"; $a->strings["No connections in common."] = "Ninguna conexión en común."; $a->strings["This site is not a directory server"] = "Este sitio no es un servidor de directorio"; -$a->strings["Could not access contact record."] = "No se ha podido acceder al registro de contacto."; -$a->strings["Could not locate selected profile."] = "No se ha podido localizar el perfil seleccionado."; -$a->strings["Connection updated."] = "Conexión actualizada."; -$a->strings["Failed to update connection record."] = "Error al actualizar el registro de la conexión."; $a->strings["Blocked"] = "Bloqueadas"; $a->strings["Ignored"] = "Ignoradas"; $a->strings["Hidden"] = "Ocultas"; @@ -1945,6 +1941,10 @@ $a->strings["Remove This Channel"] = "Eliminar este canal"; $a->strings["This channel will be completely removed from the network. "] = "Este canal va a ser completamente eliminado de la red."; $a->strings["Remove this channel and all its clones from the network"] = "Eliminar este canal y todos sus clones de la red"; $a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red"; +$a->strings["Could not access contact record."] = "No se ha podido acceder al registro de contacto."; +$a->strings["Could not locate selected profile."] = "No se ha podido localizar el perfil seleccionado."; +$a->strings["Connection updated."] = "Conexión actualizada."; +$a->strings["Failed to update connection record."] = "Error al actualizar el registro de la conexión."; $a->strings["is now connected to"] = "ahora está conectado a"; $a->strings["Could not access address book record."] = "No se pudo acceder a la entrada en su libreta de direcciones."; $a->strings["Refresh failed - channel is currently unavailable."] = "Recarga fallida - no se puede encontrar actualmente el canal"; @@ -2020,7 +2020,7 @@ $a->strings["Recall message"] = "Recuperar el mensaje"; $a->strings["Message has been recalled."] = "El mensaje ha sido recuperado."; $a->strings["Private Conversation"] = "Conversación privada"; $a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página de perfil del remitente."; -$a->strings["Send Reply"] = "Envía respuesta"; +$a->strings["Send Reply"] = "Responder"; $a->strings["Invalid request identifier."] = "Petición inválida del identificador."; $a->strings["Discard"] = "Descartar"; $a->strings["Please login."] = "Por favor, inicie sesión."; @@ -2047,7 +2047,7 @@ $a->strings["Version ID"] = "Versión"; $a->strings["Price of app"] = "Precio de la aplicación"; $a->strings["Location (URL) to purchase app"] = "Ubicación (URL) donde adquirir la aplicación"; $a->strings["sent you a private message"] = "enviarle un mensaje privado"; -$a->strings["added your channel"] = "se añadió su canal"; +$a->strings["added your channel"] = "añadió este canal a sus conexiones"; $a->strings["posted an event"] = "publicó un evento"; $a->strings["Comanche page description language help"] = "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche"; $a->strings["Layout Description"] = "Descripción del formato"; diff --git a/view/js/mod_rpost.js b/view/js/mod_rpost.js new file mode 100644 index 000000000..06b67136b --- /dev/null +++ b/view/js/mod_rpost.js @@ -0,0 +1 @@ +$(document).ready(function() { initEditor(); }); diff --git a/view/pdl/mod_admin.pdl b/view/pdl/mod_admin.pdl new file mode 100644 index 000000000..5bd47ea37 --- /dev/null +++ b/view/pdl/mod_admin.pdl @@ -0,0 +1,3 @@ +[region=aside] +[widget=admin][/widget] +[/region]
\ No newline at end of file diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index 25436db5f..0446269c7 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -347,7 +347,7 @@ footer { .vcard { margin-bottom: 10px; padding: 10px; - background-color: $comment_item_colour; + background-color: rgba(254,254,254,0.5); border-bottom: 1px solid rgba(238,238,238,0.8); -moz-border-radius: $radiuspx; -webkit-border-radius: $radiuspx; @@ -698,7 +698,7 @@ a.rateme, div.rateme { #contact-block { width: 100%; float: left; - background-color: $comment_item_colour; + background-color: rgba(254,254,254,0.5); border-bottom: 1px solid rgba(238,238,238,0.8); -moz-border-radius: $radiuspx; -webkit-border-radius: $radiuspx; @@ -751,8 +751,8 @@ a.rateme, div.rateme { } .wall-item-conv { - padding-top: 5px; - padding-bottom: 10px; + padding-top: 10px; + padding-left: 10px; } @@ -1655,12 +1655,6 @@ img.mail-list-sender-photo { border-top-left-radius: $radiuspx; } -.generic-content-wrapper-styled { - background-color: $comment_item_colour; - padding: 10px; - border-radius: $radiuspx; -} - .wall-item-content-wrapper.comment { background-color: $comment_item_colour; border-color: $comment_border_colour; @@ -1786,7 +1780,7 @@ img.mail-list-sender-photo { /* widgets */ .widget { - background-color: $comment_item_colour; + background-color: rgba(254,254,254,0.5); border-bottom: 1px solid rgba(238,238,238,0.8); -moz-border-radius: $radiuspx; -webkit-border-radius: $radiuspx; @@ -1867,6 +1861,19 @@ nav .dropdown-menu { margin: 7px 0px; } +.generic-content-wrapper-styled { + background-color: $bgcolour; + padding: 10px; + border-radius: $radiuspx; +} + +.generic-content-wrapper { + border: 1px solid #ccc; + box-shadow: 0px 0px 5px 1px rgba(0,0,0,0.2); + border-radius: $radiuspx; + background-color: #fff; +} + .section-title-wrapper { padding: 7px 10px; background-color: $item_colour; @@ -2303,4 +2310,4 @@ nav .badge.mail-update:hover { .help-searchlist a { font-size: 130%; -}
\ No newline at end of file +} diff --git a/view/theme/redbasic/php/style.php b/view/theme/redbasic/php/style.php index 96dba59e5..f542e8e12 100644 --- a/view/theme/redbasic/php/style.php +++ b/view/theme/redbasic/php/style.php @@ -107,15 +107,15 @@ if (! $link_colour) if (! $banner_colour) $banner_colour = "#fff"; if (! $bgcolour) - $bgcolour = "#fdfdfd"; + $bgcolour = "rgb(254,254,254)"; if (! $background_image) $background_image =''; if (! $item_colour) - $item_colour = "rgba(238,238,238,0.8)"; + $item_colour = "rgb(238,238,238)"; if (! $comment_item_colour) - $comment_item_colour = "rgba(254,254,254,0.4)"; + $comment_item_colour = "rgb(255,255,255)"; if (! $comment_border_colour) - $comment_border_colour = "rgba(238,238,238,0.8)"; + $comment_border_colour = "rgb(255,255,255)"; if (! $toolicon_colour) $toolicon_colour = '#777'; if (! $toolicon_activecolour) @@ -133,7 +133,7 @@ if (! $radius) if (! $shadow) $shadow = "0"; if (! $converse_width) - $converse_width = "1024"; + $converse_width = "790"; if(! $top_photo) $top_photo = '48px'; if(! $comment_indent) diff --git a/view/theme/redbasic/schema/boxy.css b/view/theme/redbasic/schema/boxy.css index f3da9b262..ad3e587f0 100644 --- a/view/theme/redbasic/schema/boxy.css +++ b/view/theme/redbasic/schema/boxy.css @@ -3,9 +3,9 @@ } .wall-item-content-wrapper.comment { - border-width: 0px 1px 1px 1px; + border-width: 0px 0px 1px 0px; } .hide-comments-outer { - border-width: 1px 1px 1px 1px; + border-width: 1px 0px 1px 0px; } diff --git a/view/theme/redbasic/schema/boxy.php b/view/theme/redbasic/schema/boxy.php index d609ccd25..f298a0def 100644 --- a/view/theme/redbasic/schema/boxy.php +++ b/view/theme/redbasic/schema/boxy.php @@ -2,3 +2,5 @@ if (! $radiuspx) $radiuspx = "4"; +if (! $comment_border_colour) + $comment_border_colour = "rgb(238,238,238)"; diff --git a/view/theme/redbasic/schema/dark.css b/view/theme/redbasic/schema/dark.css index 02ee4707e..4e8e23de5 100644 --- a/view/theme/redbasic/schema/dark.css +++ b/view/theme/redbasic/schema/dark.css @@ -1,4 +1,10 @@ +.generic-content-wrapper { + border: 1px solid #111; + background-color: transparent; +} + .vcard, #contact-block, .widget { + background-color: transparent; border-bottom: 1px solid #fff; } diff --git a/view/theme/redbasic/schema/focus.css b/view/theme/redbasic/schema/focus.css deleted file mode 100644 index ea983ffc8..000000000 --- a/view/theme/redbasic/schema/focus.css +++ /dev/null @@ -1,22 +0,0 @@ -.generic-content-wrapper { - border: 1px solid #ccc; - box-shadow: 0px 0px 5px 1px rgba(0,0,0,0.2); - border-radius: 4px; - background-color: #fff; -} - -.wall-item-content-wrapper.comment { - background-color: #fff; -} - -.section-content-tools-wrapper, -.section-content-wrapper, -.section-content-wrapper-np, -.hide-comments-outer { - background-color: #fff; -} - -.wall-item-conv { - padding-top: 10px; - padding-left: 10px; -} diff --git a/view/theme/redbasic/schema/focus.php b/view/theme/redbasic/schema/focus.php deleted file mode 100644 index 1f1963764..000000000 --- a/view/theme/redbasic/schema/focus.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -if (! $nav_bg) - $nav_bg = "#222"; -if (! $nav_gradient_top) - $nav_gradient_top = "#3c3c3c"; -if (! $nav_gradient_bottom) - $nav_gradient_bottom = "#222"; -if (! $nav_active_gradient_top) - $nav_active_gradient_top = "#222"; -if (! $nav_active_gradient_bottom) - $nav_active_gradient_bottom = "#282828"; -if (! $nav_bd) - $nav_bd = "#222"; -if (! $nav_icon_colour) - $nav_icon_colour = "#999"; -if (! $nav_active_icon_colour) - $nav_active_icon_colour = "#fff"; -if (! $link_colour) - $link_colour = "#337AB7"; -if (! $banner_colour) - $banner_colour = "#fff"; -if (! $bgcolour) - $bgcolour = "#fdfdfd"; -if (! $background_image) - $background_image =''; -if (! $item_colour) - $item_colour = "rgb(238,238,238)"; -if (! $comment_item_colour) - $comment_item_colour = "rgba(254,254,254,0.4)"; -if (! $comment_border_colour) - $comment_border_colour = "transparent"; -if (! $toolicon_colour) - $toolicon_colour = '#777'; -if (! $toolicon_activecolour) - $toolicon_activecolour = '#000'; -if (! $item_opacity) - $item_opacity = "1"; -if (! $font_size) - $font_size = "0.9rem"; -if (! $body_font_size) - $body_font_size = "0.75rem"; -if (! $font_colour) - $font_colour = "#4d4d4d"; -if (! $radius) - $radius = "4"; -if (! $shadow) - $shadow = "0"; -if (! $converse_width) - $converse_width = "790"; -if(! $top_photo) - $top_photo = '48px'; -if(! $comment_indent) - $comment_indent = '0px'; -if(! $reply_photo) - $reply_photo = '32px'; -if($nav_min_opacity === false || $nav_min_opacity === '') { - $nav_float_min_opacity = 1.0; - $nav_percent_min_opacity = 100; -} -else { - $nav_float_min_opacity = (float) $nav_min_opacity; - $nav_percent_min_opacity = (int) 100 * $nav_min_opacity; -} diff --git a/view/theme/redbasic/schema/simple_black_on_white.css b/view/theme/redbasic/schema/simple_black_on_white.css index c00f3c260..f69ba3450 100644 --- a/view/theme/redbasic/schema/simple_black_on_white.css +++ b/view/theme/redbasic/schema/simple_black_on_white.css @@ -1,4 +1,10 @@ +.generic-content-wrapper { + border: 1px solid #fff; + background-color: transparent; +} + .vcard, #contact-block, .widget { + background-color: transparent; border-bottom: 1px solid #fff; } diff --git a/view/theme/redbasic/schema/simple_green_on_black.css b/view/theme/redbasic/schema/simple_green_on_black.css index ce4465930..1f0a2f1e6 100644 --- a/view/theme/redbasic/schema/simple_green_on_black.css +++ b/view/theme/redbasic/schema/simple_green_on_black.css @@ -1,4 +1,10 @@ +.generic-content-wrapper { + border: 1px solid #000; + background-color: transparent; +} + .vcard, #contact-block, .widget { + background-color: transparent; border-bottom: 1px solid #fff; } diff --git a/view/theme/redbasic/schema/simple_white_on_black.css b/view/theme/redbasic/schema/simple_white_on_black.css index 3504265b9..627f3ee5c 100644 --- a/view/theme/redbasic/schema/simple_white_on_black.css +++ b/view/theme/redbasic/schema/simple_white_on_black.css @@ -1,9 +1,11 @@ -.vcard, #contact-block, .widget { - border-bottom: 1px solid #fff; +.generic-content-wrapper { + border: 1px solid #000; + background-color: transparent; } -.abook-pending-contact, .abook-permschange { - background: #000; +.vcard, #contact-block, .widget { + background-color: transparent; + border-bottom: 1px solid #fff; } #cboxContent a { diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl index 49369ab63..7e12c6bb3 100755 --- a/view/tpl/jot-header.tpl +++ b/view/tpl/jot-header.tpl @@ -3,6 +3,7 @@ var editor = false; var textlen = 0; var plaintext = '{{$editselect}}'; +var pretext = '{{$pretext}}'; function initEditor(cb){ if (editor==false){ @@ -21,6 +22,8 @@ function initEditor(cb){ }); $(".jothidden").show(); if (typeof cb!="undefined") cb(); + if(pretext.length) + addeditortext(pretext); return; } tinyMCE.init({ diff --git a/view/tpl/uexport.tpl b/view/tpl/uexport.tpl index 5de995ba0..b9a1b9572 100644 --- a/view/tpl/uexport.tpl +++ b/view/tpl/uexport.tpl @@ -1,9 +1,12 @@ <div class="generic-content-wrapper"> -<h1>{{$title}}</h1> -<b><a href="uexport/basic">{{$basictitle}}</a></b></p> -<p>{{$basic}}</p> - -<p><b><a href="uexport/complete">{{$fulltitle}}</a></b></p> -<p>{{$full}}</p> + <div class="section-title-wrapper"> + <h2>{{$title}}</h2> + </div> + <div class="section-content-wrapper"> + <b><a href="uexport/basic">{{$basictitle}}</a></b></p> + <p>{{$basic}}</p> + <p><b><a href="uexport/complete">{{$fulltitle}}</a></b></p> + <p>{{$full}}</p> + </div> </div> |