diff options
-rw-r--r-- | .gitlab-ci.yml | 4 | ||||
-rw-r--r-- | .phpcs.xml | 78 | ||||
-rw-r--r-- | CHANGELOG | 61 | ||||
-rw-r--r-- | Zotlabs/Access/PermissionRoles.php | 4 | ||||
-rw-r--r-- | Zotlabs/Daemon/Cache_query.php | 7 | ||||
-rw-r--r-- | Zotlabs/Daemon/Checksites.php | 4 | ||||
-rw-r--r-- | Zotlabs/Daemon/Cron.php | 21 | ||||
-rw-r--r-- | Zotlabs/Daemon/Cron_daily.php | 7 | ||||
-rw-r--r-- | Zotlabs/Daemon/Cron_weekly.php | 4 | ||||
-rw-r--r-- | Zotlabs/Daemon/Directory.php | 3 | ||||
-rw-r--r-- | Zotlabs/Daemon/Expire.php | 16 | ||||
-rw-r--r-- | Zotlabs/Daemon/Master.php | 2 | ||||
-rw-r--r-- | Zotlabs/Daemon/Notifier.php | 7 | ||||
-rw-r--r-- | Zotlabs/Daemon/Onepoll.php | 5 | ||||
-rw-r--r-- | Zotlabs/Daemon/Poller.php | 16 | ||||
-rw-r--r-- | Zotlabs/Daemon/Thumbnail.php | 7 | ||||
-rw-r--r-- | Zotlabs/Daemon/Xchan_photo.php | 9 | ||||
-rw-r--r-- | Zotlabs/Extend/Route.php | 5 | ||||
-rw-r--r-- | Zotlabs/Extend/Widget.php | 5 | ||||
-rw-r--r-- | Zotlabs/Identity/OAuth2Server.php | 6 | ||||
-rw-r--r-- | Zotlabs/Lib/Activity.php | 6 | ||||
-rw-r--r-- | Zotlabs/Lib/Apps.php | 9 | ||||
-rw-r--r-- | Zotlabs/Lib/Cache.php | 9 | ||||
-rw-r--r-- | Zotlabs/Lib/Config.php | 2 | ||||
-rw-r--r-- | Zotlabs/Lib/Connect.php | 5 | ||||
-rw-r--r-- | Zotlabs/Lib/Crypto.php | 3 | ||||
-rw-r--r-- | Zotlabs/Lib/DB_Upgrade.php | 29 | ||||
-rw-r--r-- | Zotlabs/Lib/DReport.php | 4 | ||||
-rw-r--r-- | Zotlabs/Lib/Enotify.php | 9 | ||||
-rw-r--r-- | Zotlabs/Lib/Libsync.php | 7 | ||||
-rw-r--r-- | Zotlabs/Lib/Libzot.php | 52 | ||||
-rw-r--r-- | Zotlabs/Lib/Libzotdir.php | 27 | ||||
-rw-r--r-- | Zotlabs/Lib/QueueWorker.php | 61 | ||||
-rw-r--r-- | Zotlabs/Lib/ThreadItem.php | 24 | ||||
-rw-r--r-- | Zotlabs/Lib/Traits/HelpHelperTrait.php | 68 | ||||
-rw-r--r-- | Zotlabs/Lib/Zotfinger.php | 3 | ||||
-rw-r--r-- | Zotlabs/Module/Acl.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Admin.php | 4 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Accounts.php | 6 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Addons.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Channels.php | 52 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Dbsync.php | 14 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Features.php | 44 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Logs.php | 49 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Profs.php | 57 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Queueworker.php | 17 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Security.php | 73 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Site.php | 257 | ||||
-rw-r--r-- | Zotlabs/Module/Admin/Themes.php | 5 | ||||
-rw-r--r-- | Zotlabs/Module/Api.php | 4 | ||||
-rw-r--r-- | Zotlabs/Module/Apps.php | 4 | ||||
-rw-r--r-- | Zotlabs/Module/Channel.php | 3 | ||||
-rw-r--r-- | Zotlabs/Module/Cover_photo.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Dircensor.php | 6 | ||||
-rw-r--r-- | Zotlabs/Module/Directory.php | 16 | ||||
-rw-r--r-- | Zotlabs/Module/Dirsearch.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Display.php | 3 | ||||
-rw-r--r-- | Zotlabs/Module/Editpost.php | 2 | ||||
-rw-r--r-- | Zotlabs/Module/Email_validation.php | 9 | ||||
-rw-r--r-- | Zotlabs/Module/Fhublocs.php | 3 | ||||
-rw-r--r-- | Zotlabs/Module/Go.php | 9 | ||||
-rw-r--r-- | Zotlabs/Module/Group.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Help.php | 192 | ||||
-rw-r--r-- | Zotlabs/Module/Home.php | 13 | ||||
-rw-r--r-- | Zotlabs/Module/Hq.php | 20 | ||||
-rw-r--r-- | Zotlabs/Module/Import.php | 37 | ||||
-rw-r--r-- | Zotlabs/Module/Import_progress.php | 39 | ||||
-rw-r--r-- | Zotlabs/Module/Invite.php | 23 | ||||
-rw-r--r-- | Zotlabs/Module/Item.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Linkinfo.php | 3 | ||||
-rw-r--r-- | Zotlabs/Module/Lockview.php | 2 | ||||
-rw-r--r-- | Zotlabs/Module/Lostpass.php | 10 | ||||
-rw-r--r-- | Zotlabs/Module/New_channel.php | 11 | ||||
-rw-r--r-- | Zotlabs/Module/Profile_photo.php | 3 | ||||
-rw-r--r-- | Zotlabs/Module/Profiles.php | 16 | ||||
-rw-r--r-- | Zotlabs/Module/Profperm.php | 87 | ||||
-rw-r--r-- | Zotlabs/Module/Pubsites.php | 5 | ||||
-rw-r--r-- | Zotlabs/Module/Pubstream.php | 26 | ||||
-rw-r--r-- | Zotlabs/Module/Rbmark.php | 80 | ||||
-rw-r--r-- | Zotlabs/Module/Regate.php | 11 | ||||
-rw-r--r-- | Zotlabs/Module/Regdir.php | 31 | ||||
-rw-r--r-- | Zotlabs/Module/Register.php | 59 | ||||
-rw-r--r-- | Zotlabs/Module/Rpost.php | 248 | ||||
-rw-r--r-- | Zotlabs/Module/Search.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Service_limits.php | 14 | ||||
-rw-r--r-- | Zotlabs/Module/Settings/Account.php | 4 | ||||
-rw-r--r-- | Zotlabs/Module/Settings/Channel.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Settings/Display.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Settings/Privacy.php | 3 | ||||
-rw-r--r-- | Zotlabs/Module/Setup.php | 31 | ||||
-rw-r--r-- | Zotlabs/Module/Siteinfo.php | 11 | ||||
-rw-r--r-- | Zotlabs/Module/Sources.php | 10 | ||||
-rw-r--r-- | Zotlabs/Module/Sse.php | 5 | ||||
-rw-r--r-- | Zotlabs/Module/Sse_bs.php | 13 | ||||
-rw-r--r-- | Zotlabs/Module/Toggle_mobile.php | 23 | ||||
-rw-r--r-- | Zotlabs/Module/Toggle_safesearch.php | 31 | ||||
-rw-r--r-- | Zotlabs/Module/Wall_attach.php | 14 | ||||
-rw-r--r-- | Zotlabs/Module/Well_known.php | 3 | ||||
-rw-r--r-- | Zotlabs/Module/Wfinger.php | 3 | ||||
-rw-r--r-- | Zotlabs/Photo/PhotoDriver.php | 5 | ||||
-rw-r--r-- | Zotlabs/Photo/PhotoGd.php | 8 | ||||
-rw-r--r-- | Zotlabs/Photo/PhotoImagick.php | 8 | ||||
-rw-r--r-- | Zotlabs/Render/Comanche.php | 28 | ||||
-rw-r--r-- | Zotlabs/Render/SmartyInterface.php | 2 | ||||
-rw-r--r-- | Zotlabs/Render/SmartyTemplate.php | 2 | ||||
-rw-r--r-- | Zotlabs/Render/Theme.php | 6 | ||||
-rw-r--r-- | Zotlabs/Storage/Browser.php | 7 | ||||
-rw-r--r-- | Zotlabs/Storage/Directory.php | 9 | ||||
-rw-r--r-- | Zotlabs/Storage/File.php | 3 | ||||
-rw-r--r-- | Zotlabs/Thumbs/Pdf.php | 3 | ||||
-rw-r--r-- | Zotlabs/Thumbs/Video.php | 3 | ||||
-rw-r--r-- | Zotlabs/Update/_1103.php | 6 | ||||
-rw-r--r-- | Zotlabs/Update/_1226.php | 7 | ||||
-rw-r--r-- | Zotlabs/Update/_1236.php | 11 | ||||
-rw-r--r-- | Zotlabs/Update/_1242.php | 6 | ||||
-rw-r--r-- | Zotlabs/Update/_1243.php | 12 | ||||
-rw-r--r-- | Zotlabs/Web/Controller.php | 56 | ||||
-rw-r--r-- | Zotlabs/Web/HTTPSig.php | 5 | ||||
-rw-r--r-- | Zotlabs/Web/Router.php | 38 | ||||
-rw-r--r-- | Zotlabs/Web/Session.php | 13 | ||||
-rw-r--r-- | Zotlabs/Web/WebServer.php | 12 | ||||
-rw-r--r-- | Zotlabs/Widget/Helpindex.php | 63 | ||||
-rw-r--r-- | Zotlabs/Widget/Newmember.php | 6 | ||||
-rw-r--r-- | Zotlabs/Widget/Pinned.php | 4 | ||||
-rw-r--r-- | Zotlabs/Widget/Pubtagcloud.php | 8 | ||||
-rw-r--r-- | Zotlabs/Widget/Rating.php | 4 | ||||
-rw-r--r-- | boot.php | 88 | ||||
-rw-r--r-- | composer.json | 6 | ||||
-rw-r--r-- | composer.lock | 767 | ||||
-rw-r--r-- | doc/context/de/apps/edit/help.html | 4 | ||||
-rw-r--r-- | doc/context/de/apps/help.html | 6 | ||||
-rw-r--r-- | doc/context/en/apps/edit/help.html | 4 | ||||
-rw-r--r-- | doc/context/en/apps/help.html | 6 | ||||
-rw-r--r-- | doc/context/es-es/apps/edit/help.html | 4 | ||||
-rw-r--r-- | doc/context/es-es/apps/help.html | 6 | ||||
-rw-r--r-- | doc/context/fr/apps/edit/index.html | 4 | ||||
-rw-r--r-- | doc/context/fr/apps/help.html | 7 | ||||
-rw-r--r-- | doc/context/pl/apps/edit/help.html | 7 | ||||
-rw-r--r-- | doc/context/pl/apps/help.html | 15 | ||||
-rw-r--r-- | doc/en/AdvancedSearch.md (renamed from doc/AdvancedSearch.md) | 0 | ||||
-rw-r--r-- | doc/en/Comparison-of-activity-stream-networks.md (renamed from doc/Comparison-of-activity-stream-networks.md) | 0 | ||||
-rw-r--r-- | doc/en/Creating-Templates.md (renamed from doc/Creating-Templates.md) | 0 | ||||
-rw-r--r-- | doc/en/DerivedTheme1.md (renamed from doc/DerivedTheme1.md) | 0 | ||||
-rw-r--r-- | doc/en/Developers.md (renamed from doc/Developers.md) | 0 | ||||
-rw-r--r-- | doc/en/Features.md (renamed from doc/Features.md) | 0 | ||||
-rw-r--r-- | doc/en/Hubzilla_on_OpenShift.bb (renamed from doc/Hubzilla_on_OpenShift.bb) | 0 | ||||
-rw-r--r-- | doc/en/Plugins.md (renamed from doc/Plugins.md) | 0 | ||||
-rw-r--r-- | doc/en/Primary-Directory.md (renamed from doc/Primary-Directory.md) | 0 | ||||
-rw-r--r-- | doc/en/Remove-Account.md (renamed from doc/Remove-Account.md) | 0 | ||||
-rw-r--r-- | doc/en/Schema-development.md (renamed from doc/Schema-development.md) | 0 | ||||
-rw-r--r-- | doc/en/TermsOfService.md (renamed from doc/TermsOfService.md) | 0 | ||||
-rw-r--r-- | doc/en/Translations.md (renamed from doc/Translations.md) | 0 | ||||
-rw-r--r-- | doc/en/Widgets.md (renamed from doc/Widgets.md) | 0 | ||||
-rw-r--r-- | doc/en/Zot---A-High-Level-Overview.md (renamed from doc/Zot---A-High-Level-Overview.md) | 0 | ||||
-rw-r--r-- | doc/en/about/about.bb (renamed from doc/about/about.bb) | 0 | ||||
-rw-r--r-- | doc/en/about/about_hub.bb (renamed from doc/about/about_hub.bb) | 0 | ||||
-rw-r--r-- | doc/en/about/project.bb (renamed from doc/about/project.bb) | 0 | ||||
-rw-r--r-- | doc/en/accounts_profiles_channels_basics.bb (renamed from doc/accounts_profiles_channels_basics.bb) | 0 | ||||
-rw-r--r-- | doc/en/acl_dialog_post.html (renamed from doc/acl_dialog_post.html) | 0 | ||||
-rw-r--r-- | doc/en/addons.bb (renamed from doc/addons.bb) | 0 | ||||
-rw-r--r-- | doc/en/addons_gnusocial.bb (renamed from doc/addons_gnusocial.bb) | 0 | ||||
-rw-r--r-- | doc/en/admin/administrator_guide.md (renamed from doc/admin/administrator_guide.md) | 0 | ||||
-rw-r--r-- | doc/en/admin/hub_snapshots.md (renamed from doc/admin/hub_snapshots.md) | 0 | ||||
-rw-r--r-- | doc/en/admin/zarlog_msgs.md (renamed from doc/admin/zarlog_msgs.md) | 0 | ||||
-rw-r--r-- | doc/en/admins.bb (renamed from doc/admins.bb) | 0 | ||||
-rw-r--r-- | doc/en/api/api_albums.md (renamed from doc/api/api_albums.md) | 0 | ||||
-rw-r--r-- | doc/en/api/api_filedata.md (renamed from doc/api/api_filedata.md) | 0 | ||||
-rw-r--r-- | doc/en/api/api_files.md (renamed from doc/api/api_files.md) | 0 | ||||
-rw-r--r-- | doc/en/api/api_functions.bb (renamed from doc/api/api_functions.bb) | 0 | ||||
-rw-r--r-- | doc/en/api/api_group_members.md (renamed from doc/api/api_group_members.md) | 0 | ||||
-rw-r--r-- | doc/en/api/api_item_update.md (renamed from doc/api/api_item_update.md) | 0 | ||||
-rw-r--r-- | doc/en/api/api_posting.bb (renamed from doc/api/api_posting.bb) | 0 | ||||
-rw-r--r-- | doc/en/api/api_xchan.md (renamed from doc/api/api_xchan.md) | 0 | ||||
-rw-r--r-- | doc/en/api/group.md (renamed from doc/api/group.md) | 0 | ||||
-rw-r--r-- | doc/en/api/statuses_update.bb (renamed from doc/api/statuses_update.bb) | 0 | ||||
-rw-r--r-- | doc/en/bugs.bb (renamed from doc/bugs.bb) | 0 | ||||
-rw-r--r-- | doc/en/campaign.bb (renamed from doc/campaign.bb) | 0 | ||||
-rw-r--r-- | doc/en/checking_account_quota_usage.bb (renamed from doc/checking_account_quota_usage.bb) | 0 | ||||
-rw-r--r-- | doc/en/comanche.bb (renamed from doc/comanche.bb) | 0 | ||||
-rw-r--r-- | doc/en/context/de/admin/logs/help.html (renamed from doc/context/de/admin/logs/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/admin/queue/help.html (renamed from doc/context/de/admin/queue/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/admin/security/help.html (renamed from doc/context/de/admin/security/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/appman/help.html (renamed from doc/context/de/appman/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/channel/help.html (renamed from doc/context/de/channel/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/chat/help.html (renamed from doc/context/de/chat/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/cloud/help.html (renamed from doc/context/de/cloud/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/connections/help.html (renamed from doc/context/de/connections/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/connections/ifpending/help.html (renamed from doc/context/de/connections/ifpending/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/events/help.html (renamed from doc/context/de/events/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/mail/help.html (renamed from doc/context/de/mail/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/network/help.html (renamed from doc/context/de/network/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/photos/help.html (renamed from doc/context/de/photos/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/profile/help.html (renamed from doc/context/de/profile/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/register/help.html (renamed from doc/context/de/register/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/settings/account/help.html (renamed from doc/context/de/settings/account/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/settings/channel/help.html (renamed from doc/context/de/settings/channel/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/settings/features/help.html (renamed from doc/context/de/settings/features/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/settings/tokens/help.html (renamed from doc/context/de/settings/tokens/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/de/wiki/help.html (renamed from doc/context/de/wiki/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/admin/addons/assets/addon_repo_gui_1.png (renamed from doc/context/en/admin/addons/assets/addon_repo_gui_1.png) | bin | 16983 -> 16983 bytes | |||
-rw-r--r-- | doc/en/context/en/admin/addons/help.html (renamed from doc/context/en/admin/addons/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/admin/logs/help.html (renamed from doc/context/en/admin/logs/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/admin/queue/help.html (renamed from doc/context/en/admin/queue/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/admin/security/help.html (renamed from doc/context/en/admin/security/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/appman/help.html (renamed from doc/context/en/appman/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/cards/help.html (renamed from doc/context/en/cards/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/channel/help.html (renamed from doc/context/en/channel/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/chat/help.html (renamed from doc/context/en/chat/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/cloud/help.html (renamed from doc/context/en/cloud/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/connections/help.html (renamed from doc/context/en/connections/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/connections/ifpending/help.html (renamed from doc/context/en/connections/ifpending/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/connedit/help.html (renamed from doc/context/en/connedit/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/events/help.html (renamed from doc/context/en/events/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/mail/help.html (renamed from doc/context/en/mail/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/network/help.html (renamed from doc/context/en/network/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/photos/help.html (renamed from doc/context/en/photos/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/profile/help.html (renamed from doc/context/en/profile/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/profiles/help.html (renamed from doc/context/en/profiles/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/register/help.html (renamed from doc/context/en/register/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/settings/account/help.html (renamed from doc/context/en/settings/account/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/settings/channel/help.html (renamed from doc/context/en/settings/channel/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/settings/features/help.html (renamed from doc/context/en/settings/features/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/settings/tokens/help.html (renamed from doc/context/en/settings/tokens/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/webpages/help.html (renamed from doc/context/en/webpages/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/en/wiki/help.html (renamed from doc/context/en/wiki/help.html) | 0 | ||||
l--------- | doc/en/context/es (renamed from doc/context/es) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/admin/addons/assets/addon_repo_gui_1.png (renamed from doc/context/es-es/admin/addons/assets/addon_repo_gui_1.png) | bin | 16983 -> 16983 bytes | |||
-rw-r--r-- | doc/en/context/es-es/admin/addons/help.html (renamed from doc/context/es-es/admin/addons/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/admin/logs/help.html (renamed from doc/context/es-es/admin/logs/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/admin/queue/help.html (renamed from doc/context/es-es/admin/queue/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/admin/security/help.html (renamed from doc/context/es-es/admin/security/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/appman/help.html (renamed from doc/context/es-es/appman/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/articles/help.html (renamed from doc/context/es-es/articles/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/cards/help.html (renamed from doc/context/es-es/cards/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/channel/help.html (renamed from doc/context/es-es/channel/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/chat/help.html (renamed from doc/context/es-es/chat/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/cloud/help.html (renamed from doc/context/es-es/cloud/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/connections/help.html (renamed from doc/context/es-es/connections/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/connections/ifpending/help.html (renamed from doc/context/es-es/connections/ifpending/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/connedit/help.html (renamed from doc/context/es-es/connedit/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/events/help.html (renamed from doc/context/es-es/events/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/mail/help.html (renamed from doc/context/es-es/mail/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/network/help.html (renamed from doc/context/es-es/network/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/photos/help.html (renamed from doc/context/es-es/photos/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/profile/help.html (renamed from doc/context/es-es/profile/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/profiles/help.html (renamed from doc/context/es-es/profiles/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/settings/account/help.html (renamed from doc/context/es-es/settings/account/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/settings/channel/help.html (renamed from doc/context/es-es/settings/channel/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/settings/features/help.html (renamed from doc/context/es-es/settings/features/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/settings/tokens/help.html (renamed from doc/context/es-es/settings/tokens/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/webpages/help.html (renamed from doc/context/es-es/webpages/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/es-es/wiki/help.html (renamed from doc/context/es-es/wiki/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/admin/logs/help.html (renamed from doc/context/fr/admin/logs/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/admin/queue/help.html (renamed from doc/context/fr/admin/queue/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/appman/help.html (renamed from doc/context/fr/appman/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/cards/help.html (renamed from doc/context/fr/cards/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/channel/help.html (renamed from doc/context/fr/channel/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/chat/help.html (renamed from doc/context/fr/chat/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/cloud/help.html (renamed from doc/context/fr/cloud/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/connections/help.html (renamed from doc/context/fr/connections/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/connections/ifpending/help.html (renamed from doc/context/fr/connections/ifpending/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/connedit/help.html (renamed from doc/context/fr/connedit/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/events/help.html (renamed from doc/context/fr/events/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/mail/help.html (renamed from doc/context/fr/mail/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/photos/help.html (renamed from doc/context/fr/photos/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/profile/help.html (renamed from doc/context/fr/profile/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/settings/account/help.html (renamed from doc/context/fr/settings/account/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/settings/channel/help.html (renamed from doc/context/fr/settings/channel/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/settings/features/help.html (renamed from doc/context/fr/settings/features/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/settings/tokens (renamed from doc/context/fr/settings/tokens) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/webpages/help.html (renamed from doc/context/fr/webpages/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/fr/wiki/help.html (renamed from doc/context/fr/wiki/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/it/wiki/help.html (renamed from doc/context/it/wiki/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/admin/addons/assets/addon_repo_gui_1.png (renamed from doc/context/pl/admin/addons/assets/addon_repo_gui_1.png) | bin | 16983 -> 16983 bytes | |||
-rw-r--r-- | doc/en/context/pl/admin/addons/help.html (renamed from doc/context/pl/admin/addons/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/admin/logs/help.html (renamed from doc/context/pl/admin/logs/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/admin/queue/help.html (renamed from doc/context/pl/admin/queue/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/admin/security/help.html (renamed from doc/context/pl/admin/security/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/appman/help.html (renamed from doc/context/pl/appman/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/cards/help.html (renamed from doc/context/pl/cards/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/channel/help.html (renamed from doc/context/pl/channel/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/chat/help.html (renamed from doc/context/pl/chat/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/cloud/help.html (renamed from doc/context/pl/cloud/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/connections/help.html (renamed from doc/context/pl/connections/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/connections/ifpending/help.html (renamed from doc/context/pl/connections/ifpending/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/connedit/help.html (renamed from doc/context/pl/connedit/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/events/help.html (renamed from doc/context/pl/events/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/mail/help.html (renamed from doc/context/pl/mail/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/network/help.html (renamed from doc/context/pl/network/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/photos/help.html (renamed from doc/context/pl/photos/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/profile/help.html (renamed from doc/context/pl/profile/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/profiles/help.html (renamed from doc/context/pl/profiles/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/register/help.html (renamed from doc/context/pl/register/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/settings/account/help.html (renamed from doc/context/pl/settings/account/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/settings/channel/help.html (renamed from doc/context/pl/settings/channel/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/settings/features/help.html (renamed from doc/context/pl/settings/features/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/settings/tokens/help.html (renamed from doc/context/pl/settings/tokens/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/webpages/help.html (renamed from doc/context/pl/webpages/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/pl/wiki/help.html (renamed from doc/context/pl/wiki/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/ru/cards/help.html (renamed from doc/context/ru/cards/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/ru/connections/help.html (renamed from doc/context/ru/connections/help.html) | 0 | ||||
-rw-r--r-- | doc/en/context/ru/network/help.html (renamed from doc/context/ru/network/help.html) | 0 | ||||
-rw-r--r-- | doc/en/database.bb (renamed from doc/database.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_abook.bb (renamed from doc/database/db_abook.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_account.bb (renamed from doc/database/db_account.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_addon.bb (renamed from doc/database/db_addon.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_app.bb (renamed from doc/database/db_app.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_attach.bb (renamed from doc/database/db_attach.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_auth_codes.bb (renamed from doc/database/db_auth_codes.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_cache.bb (renamed from doc/database/db_cache.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_channel.bb (renamed from doc/database/db_channel.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_chat.bb (renamed from doc/database/db_chat.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_chatpresence.bb (renamed from doc/database/db_chatpresence.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_chatroom.bb (renamed from doc/database/db_chatroom.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_clients.bb (renamed from doc/database/db_clients.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_config.bb (renamed from doc/database/db_config.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_conv.bb (renamed from doc/database/db_conv.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_event.bb (renamed from doc/database/db_event.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_fcontact.bb (renamed from doc/database/db_fcontact.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_ffinder.bb (renamed from doc/database/db_ffinder.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_fserver.bb (renamed from doc/database/db_fserver.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_fsuggest.bb (renamed from doc/database/db_fsuggest.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_hook.bb (renamed from doc/database/db_hook.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_hubloc.bb (renamed from doc/database/db_hubloc.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_issue.bb (renamed from doc/database/db_issue.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_item.bb (renamed from doc/database/db_item.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_item_id.bb (renamed from doc/database/db_item_id.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_likes.bb (renamed from doc/database/db_likes.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_mail.bb (renamed from doc/database/db_mail.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_menu.bb (renamed from doc/database/db_menu.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_menu_item.bb (renamed from doc/database/db_menu_item.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_notify.bb (renamed from doc/database/db_notify.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_obj.bb (renamed from doc/database/db_obj.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_outq.bb (renamed from doc/database/db_outq.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_pconfig.bb (renamed from doc/database/db_pconfig.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_pgrp.bb (renamed from doc/database/db_pgrp.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_pgrp_member.bb (renamed from doc/database/db_pgrp_member.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_photo.bb (renamed from doc/database/db_photo.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_poll.bb (renamed from doc/database/db_poll.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_poll_elm.bb (renamed from doc/database/db_poll_elm.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_profdef.bb (renamed from doc/database/db_profdef.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_profext.bb (renamed from doc/database/db_profext.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_profile.bb (renamed from doc/database/db_profile.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_profile_check.bb (renamed from doc/database/db_profile_check.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_register.bb (renamed from doc/database/db_register.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_session.bb (renamed from doc/database/db_session.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_shares.bb (renamed from doc/database/db_shares.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_sign.bb (renamed from doc/database/db_sign.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_site.bb (renamed from doc/database/db_site.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_source.bb (renamed from doc/database/db_source.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_spam.bb (renamed from doc/database/db_spam.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_sys_perms.bb (renamed from doc/database/db_sys_perms.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_term.bb (renamed from doc/database/db_term.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_tokens.bb (renamed from doc/database/db_tokens.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_updates.bb (renamed from doc/database/db_updates.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_verify.bb (renamed from doc/database/db_verify.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_vote.bb (renamed from doc/database/db_vote.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_xchan.bb (renamed from doc/database/db_xchan.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_xchat.bb (renamed from doc/database/db_xchat.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_xconfig.bb (renamed from doc/database/db_xconfig.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_xign.bb (renamed from doc/database/db_xign.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_xlink.bb (renamed from doc/database/db_xlink.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_xprof.bb (renamed from doc/database/db_xprof.bb) | 0 | ||||
-rw-r--r-- | doc/en/database/db_xtag.bb (renamed from doc/database/db_xtag.bb) | 0 | ||||
-rw-r--r-- | doc/en/dev-function-overview.md (renamed from doc/dev-function-overview.md) | 10 | ||||
-rw-r--r-- | doc/en/dev_beginner.bb (renamed from doc/dev_beginner.bb) | 0 | ||||
-rw-r--r-- | doc/en/develop.bb (renamed from doc/develop.bb) | 0 | ||||
-rw-r--r-- | doc/en/developer/api_zot.bb (renamed from doc/developer/api_zot.bb) | 0 | ||||
-rw-r--r-- | doc/en/developer/covenant.bb (renamed from doc/developer/covenant.bb) | 0 | ||||
-rw-r--r-- | doc/en/developer/developer_guide.bb (renamed from doc/developer/developer_guide.bb) | 0 | ||||
-rw-r--r-- | doc/en/developer/testing.md (renamed from doc/developer/testing.md) | 0 | ||||
-rw-r--r-- | doc/en/developer/unorganized.md (renamed from doc/developer/unorganized.md) | 0 | ||||
-rw-r--r-- | doc/en/developer/zot_protocol.bb (renamed from doc/developer/zot_protocol.bb) | 0 | ||||
-rw-r--r-- | doc/en/developer_function_primer.bb (renamed from doc/developer_function_primer.bb) | 4 | ||||
-rw-r--r-- | doc/en/developers.bb (renamed from doc/developers.bb) | 0 | ||||
-rw-r--r-- | doc/en/diaspora_compat.bb (renamed from doc/diaspora_compat.bb) | 0 | ||||
-rw-r--r-- | doc/en/directories.bb (renamed from doc/directories.bb) | 0 | ||||
-rw-r--r-- | doc/en/dnt-policy.txt (renamed from doc/dnt-policy.txt) | 0 | ||||
-rw-r--r-- | doc/en/doco.bb (renamed from doc/doco.bb) | 0 | ||||
-rw-r--r-- | doc/en/encryption.bb (renamed from doc/encryption.bb) | 0 | ||||
-rw-r--r-- | doc/en/external-resource-links.bb (renamed from doc/external-resource-links.bb) | 0 | ||||
-rw-r--r-- | doc/en/extra_features.bb (renamed from doc/extra_features.bb) | 0 | ||||
-rw-r--r-- | doc/en/faq_admins.bb (renamed from doc/faq_admins.bb) | 0 | ||||
-rw-r--r-- | doc/en/feature/access_tokens.bb (renamed from doc/feature/access_tokens.bb) | 0 | ||||
-rw-r--r-- | doc/en/feature/additional/access.md (renamed from doc/feature/additional/access.md) | 0 | ||||
-rw-r--r-- | doc/en/feature/additional/composition.md (renamed from doc/feature/additional/composition.md) | 0 | ||||
-rw-r--r-- | doc/en/feature/additional/filtering.md (renamed from doc/feature/additional/filtering.md) | 0 | ||||
-rw-r--r-- | doc/en/feature/additional/general.md (renamed from doc/feature/additional/general.md) | 0 | ||||
-rw-r--r-- | doc/en/feature/additional/overview.md (renamed from doc/feature/additional/overview.md) | 0 | ||||
-rw-r--r-- | doc/en/feature/additional/posts.md (renamed from doc/feature/additional/posts.md) | 0 | ||||
-rw-r--r-- | doc/en/federate.bb (renamed from doc/federate.bb) | 0 | ||||
-rw-r--r-- | doc/en/filesync.md (renamed from doc/filesync.md) | 0 | ||||
-rw-r--r-- | doc/en/first-post.bb (renamed from doc/first-post.bb) | 0 | ||||
-rw-r--r-- | doc/en/gdpr1.md (renamed from doc/gdpr1.md) | 0 | ||||
-rw-r--r-- | doc/en/general.bb (renamed from doc/general.bb) | 0 | ||||
-rw-r--r-- | doc/en/git_for_non_developers.bb (renamed from doc/git_for_non_developers.bb) | 0 | ||||
-rw-r--r-- | doc/en/hidden_configs.bb (renamed from doc/hidden_configs.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/about_hook.bb (renamed from doc/hook/about_hook.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/accept_follow.bb (renamed from doc/hook/accept_follow.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/account_downgrade.bb (renamed from doc/hook/account_downgrade.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/account_settings.bb (renamed from doc/hook/account_settings.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/account_settings_post.bb (renamed from doc/hook/account_settings_post.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/activity_decode_mapper.bb (renamed from doc/hook/activity_decode_mapper.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/activity_filter.bb (renamed from doc/hook/activity_filter.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/activity_mapper.bb (renamed from doc/hook/activity_mapper.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/activity_obj_decode_mapper.bb (renamed from doc/hook/activity_obj_decode_mapper.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/activity_obj_mapper.bb (renamed from doc/hook/activity_obj_mapper.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/activity_order.bb (renamed from doc/hook/activity_order.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/activity_received.bb (renamed from doc/hook/activity_received.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/addon_app_installed_filter.bb (renamed from doc/hook/addon_app_installed_filter.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/affinity_labels.bb (renamed from doc/hook/affinity_labels.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/api_perm_is_allowed.bb (renamed from doc/hook/api_perm_is_allowed.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/app_destroy.bb (renamed from doc/hook/app_destroy.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/app_installed_filter.bb (renamed from doc/hook/app_installed_filter.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/atom_author.bb (renamed from doc/hook/atom_author.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/atom_entry.bb (renamed from doc/hook/atom_entry.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/atom_feed.bb (renamed from doc/hook/atom_feed.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/atom_feed_end.bb (renamed from doc/hook/atom_feed_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/attach_delete.bb (renamed from doc/hook/attach_delete.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/attach_upload_file.bb (renamed from doc/hook/attach_upload_file.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/authenticate.bb (renamed from doc/hook/authenticate.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/author_is_pmable.bb (renamed from doc/hook/author_is_pmable.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/bb2diaspora.bb (renamed from doc/hook/bb2diaspora.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/bbcode.bb (renamed from doc/hook/bbcode.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/bbcode_filter.bb (renamed from doc/hook/bbcode_filter.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/build_pagehead.bb (renamed from doc/hook/build_pagehead.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/can_comment_on_post.bb (renamed from doc/hook/can_comment_on_post.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/change_channel.bb (renamed from doc/hook/change_channel.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/channel_links.bb (renamed from doc/hook/channel_links.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/channel_remove.bb (renamed from doc/hook/channel_remove.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/chat_message.bb (renamed from doc/hook/chat_message.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/chat_post.bb (renamed from doc/hook/chat_post.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/check_account_email.bb (renamed from doc/hook/check_account_email.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/check_account_invite.bb (renamed from doc/hook/check_account_invite.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/check_account_password.bb (renamed from doc/hook/check_account_password.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/check_channelallowed.bb (renamed from doc/hook/check_channelallowed.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/check_siteallowed.bb (renamed from doc/hook/check_siteallowed.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/collect_public_recipients.bb (renamed from doc/hook/collect_public_recipients.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/comments_are_now_closed.bb (renamed from doc/hook/comments_are_now_closed.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/connect_premium.bb (renamed from doc/hook/connect_premium.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/connection_remove.bb (renamed from doc/hook/connection_remove.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/connector_settings.bb (renamed from doc/hook/connector_settings.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/construct_page.bb (renamed from doc/hook/construct_page.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/contact_block_end.bb (renamed from doc/hook/contact_block_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/contact_edit.bb (renamed from doc/hook/contact_edit.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/contact_edit_post.bb (renamed from doc/hook/contact_edit_post.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/contact_select_options.bb (renamed from doc/hook/contact_select_options.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/content_security_policy.bb (renamed from doc/hook/content_security_policy.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/conversation_start.bb (renamed from doc/hook/conversation_start.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/create_identity.bb (renamed from doc/hook/create_identity.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/cron.bb (renamed from doc/hook/cron.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/cron_daily.bb (renamed from doc/hook/cron_daily.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/cron_weekly.bb (renamed from doc/hook/cron_weekly.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/crypto_methods.bb (renamed from doc/hook/crypto_methods.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/daemon_addon.bb (renamed from doc/hook/daemon_addon.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/daemon_master_release.bb (renamed from doc/hook/daemon_master_release.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/directory_item.bb (renamed from doc/hook/directory_item.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/discover_channel_webfinger.bb (renamed from doc/hook/discover_channel_webfinger.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/display_item.bb (renamed from doc/hook/display_item.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/display_settings.bb (renamed from doc/hook/display_settings.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/display_settings_post.bb (renamed from doc/hook/display_settings_post.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/donate_contributors.bb (renamed from doc/hook/donate_contributors.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/donate_plugin.bb (renamed from doc/hook/donate_plugin.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/donate_sponsors.bb (renamed from doc/hook/donate_sponsors.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/dreport_is_storable.bb (renamed from doc/hook/dreport_is_storable.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/dreport_process.bb (renamed from doc/hook/dreport_process.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/drop_item.bb (renamed from doc/hook/drop_item.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/dropdown_extras.bb (renamed from doc/hook/dropdown_extras.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/encode_object.bb (renamed from doc/hook/encode_object.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/enotify.bb (renamed from doc/hook/enotify.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/enotify_mail.bb (renamed from doc/hook/enotify_mail.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/enotify_store.bb (renamed from doc/hook/enotify_store.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/event_created.bb (renamed from doc/hook/event_created.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/event_store_event.bb (renamed from doc/hook/event_store_event.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/event_updated.bb (renamed from doc/hook/event_updated.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/externals_url_select.bb (renamed from doc/hook/externals_url_select.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/feature_enabled.bb (renamed from doc/hook/feature_enabled.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/feature_settings.bb (renamed from doc/hook/feature_settings.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/feature_settings_post.bb (renamed from doc/hook/feature_settings_post.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/fetch_and_store.bb (renamed from doc/hook/fetch_and_store.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/follow.bb (renamed from doc/hook/follow.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/follow_allow.bb (renamed from doc/hook/follow_allow.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/gender_selector.bb (renamed from doc/hook/gender_selector.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/gender_selector_min.bb (renamed from doc/hook/gender_selector_min.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/generate_map.bb (renamed from doc/hook/generate_map.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/generate_named_map.bb (renamed from doc/hook/generate_named_map.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/get_all_api_perms.bb (renamed from doc/hook/get_all_api_perms.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/get_all_perms.bb (renamed from doc/hook/get_all_perms.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/get_default_export_sections (renamed from doc/hook/get_default_export_sections) | 0 | ||||
-rw-r--r-- | doc/en/hook/get_features.bb (renamed from doc/hook/get_features.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/get_photo.bb (renamed from doc/hook/get_photo.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/get_profile_photo.bb (renamed from doc/hook/get_profile_photo.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/get_role_perms.bb (renamed from doc/hook/get_role_perms.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/global_permissions.bb (renamed from doc/hook/global_permissions.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/home_content.bb (renamed from doc/hook/home_content.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/home_init.bb (renamed from doc/hook/home_init.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/hostxrd.bb (renamed from doc/hook/hostxrd.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/html2bbcode.bb (renamed from doc/hook/html2bbcode.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/identity_basic_export.bb (renamed from doc/hook/identity_basic_export.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/import_author_xchan.bb (renamed from doc/hook/import_author_xchan.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/import_channel.bb (renamed from doc/hook/import_channel.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/import_directory_profile.bb (renamed from doc/hook/import_directory_profile.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/import_xchan.bb (renamed from doc/hook/import_xchan.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/item_custom.bb (renamed from doc/hook/item_custom.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/item_photo_menu.bb (renamed from doc/hook/item_photo_menu.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/item_store.bb (renamed from doc/hook/item_store.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/item_store_update.bb (renamed from doc/hook/item_store_update.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/item_stored.bb (renamed from doc/hook/item_stored.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/item_stored_update.bb (renamed from doc/hook/item_stored_update.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/item_translate.bb (renamed from doc/hook/item_translate.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/jot_header_tpl_filter.bb (renamed from doc/hook/jot_header_tpl_filter.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/jot_networks.bb (renamed from doc/hook/jot_networks.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/jot_tool.bb (renamed from doc/hook/jot_tool.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/jot_tpl_filter.bb (renamed from doc/hook/jot_tpl_filter.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/legal_webbie.bb (renamed from doc/hook/legal_webbie.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/legal_webbie_text.bb (renamed from doc/hook/legal_webbie_text.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/load_pdl.bb (renamed from doc/hook/load_pdl.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/local_dir_update.bb (renamed from doc/hook/local_dir_update.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/logged_in.bb (renamed from doc/hook/logged_in.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/logger.bb (renamed from doc/hook/logger.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/logging_out.bb (renamed from doc/hook/logging_out.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/login_hook.bb (renamed from doc/hook/login_hook.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/magic_auth.bb (renamed from doc/hook/magic_auth.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/magic_auth_openid_success.bb (renamed from doc/hook/magic_auth_openid_success.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/magic_auth_success.bb (renamed from doc/hook/magic_auth_success.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/main_slider.bb (renamed from doc/hook/main_slider.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/marital_selector.bb (renamed from doc/hook/marital_selector.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/marital_selector_min.bb (renamed from doc/hook/marital_selector_min.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/markdown_to_bb.bb (renamed from doc/hook/markdown_to_bb.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/module_loaded.bb (renamed from doc/hook/module_loaded.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/module_mod_aftercontent.bb (renamed from doc/hook/module_mod_aftercontent.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/module_mod_content.bb (renamed from doc/hook/module_mod_content.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/module_mod_init.bb (renamed from doc/hook/module_mod_init.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/module_mod_post.bb (renamed from doc/hook/module_mod_post.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/mood_verbs.bb (renamed from doc/hook/mood_verbs.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/nav.bb (renamed from doc/hook/nav.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/network_content_init.bb (renamed from doc/hook/network_content_init.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/network_ping.bb (renamed from doc/hook/network_ping.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/network_to_name.bb (renamed from doc/hook/network_to_name.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/notifier_end.bb (renamed from doc/hook/notifier_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/notifier_hub.bb (renamed from doc/hook/notifier_hub.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/notifier_normal.bb (renamed from doc/hook/notifier_normal.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/obj_verbs.bb (renamed from doc/hook/obj_verbs.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/oembed_probe.bb (renamed from doc/hook/oembed_probe.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/other_encapsulate.bb (renamed from doc/hook/other_encapsulate.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/other_unencapsulate.bb (renamed from doc/hook/other_unencapsulate.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/page_content_top.bb (renamed from doc/hook/page_content_top.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/page_end.bb (renamed from doc/hook/page_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/page_header.bb (renamed from doc/hook/page_header.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/page_meta.bb (renamed from doc/hook/page_meta.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/parse_atom.bb (renamed from doc/hook/parse_atom.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/parse_link.bb (renamed from doc/hook/parse_link.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/pdl_selector.bb (renamed from doc/hook/pdl_selector.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/perm_is_allowed.bb (renamed from doc/hook/perm_is_allowed.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/permissions_create.bb (renamed from doc/hook/permissions_create.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/permissions_update.bb (renamed from doc/hook/permissions_update.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/permit_hook.bb (renamed from doc/hook/permit_hook.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/personal_xrd.bb (renamed from doc/hook/personal_xrd.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/photo_post_end.bb (renamed from doc/hook/photo_post_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/photo_upload_begin.bb (renamed from doc/hook/photo_upload_begin.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/photo_upload_end.bb (renamed from doc/hook/photo_upload_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/photo_upload_file.bb (renamed from doc/hook/photo_upload_file.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/photo_upload_form.bb (renamed from doc/hook/photo_upload_form.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/photo_view_filter.bb (renamed from doc/hook/photo_view_filter.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/poke_verbs.bb (renamed from doc/hook/poke_verbs.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/post_local.bb (renamed from doc/hook/post_local.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/post_local_end.bb (renamed from doc/hook/post_local_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/post_local_start.bb (renamed from doc/hook/post_local_start.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/post_mail.bb (renamed from doc/hook/post_mail.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/post_mail_end.bb (renamed from doc/hook/post_mail_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/post_remote.bb (renamed from doc/hook/post_remote.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/post_remote_end.bb (renamed from doc/hook/post_remote_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/post_remote_update.bb (renamed from doc/hook/post_remote_update.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/post_remote_update_end.bb (renamed from doc/hook/post_remote_update_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/prepare_body.bb (renamed from doc/hook/prepare_body.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/prepare_body_final.bb (renamed from doc/hook/prepare_body_final.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/prepare_body_init.bb (renamed from doc/hook/prepare_body_init.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/privacygroup_extras.bb (renamed from doc/hook/privacygroup_extras.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/privacygroup_extras_drop.bb (renamed from doc/hook/privacygroup_extras_drop.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/privacygroup_extras_post.bb (renamed from doc/hook/privacygroup_extras_post.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/proc_run.bb (renamed from doc/hook/proc_run.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/process_channel_sync_delivery.bb (renamed from doc/hook/process_channel_sync_delivery.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/profile_advanced.bb (renamed from doc/hook/profile_advanced.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/profile_edit.bb (renamed from doc/hook/profile_edit.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/profile_photo_content_end.bb (renamed from doc/hook/profile_photo_content_end.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/profile_post.bb (renamed from doc/hook/profile_post.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/profile_sidebar.bb (renamed from doc/hook/profile_sidebar.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/profile_sidebar_enter.bb (renamed from doc/hook/profile_sidebar_enter.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/register_account.bb (renamed from doc/hook/register_account.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/render_location.bb (renamed from doc/hook/render_location.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/replace_macros.bb (renamed from doc/hook/replace_macros.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/reverse_magic_auth.bb (renamed from doc/hook/reverse_magic_auth.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/settings_form.bb (renamed from doc/hook/settings_form.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/settings_post.bb (renamed from doc/hook/settings_post.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/sexpref_selector.bb (renamed from doc/hook/sexpref_selector.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/sexpref_selector_min.bb (renamed from doc/hook/sexpref_selector_min.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/smilie.bb (renamed from doc/hook/smilie.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/status_editor.bb (renamed from doc/hook/status_editor.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/stream_item.bb (renamed from doc/hook/stream_item.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/system_app_installed_filter.bb (renamed from doc/hook/system_app_installed_filter.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/tagged.bb (renamed from doc/hook/tagged.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/update_unseen.bb (renamed from doc/hook/update_unseen.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/validate_channelname.bb (renamed from doc/hook/validate_channelname.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/webfinger.bb (renamed from doc/hook/webfinger.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/well_known.bb (renamed from doc/hook/well_known.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/wiki_preprocess.bb (renamed from doc/hook/wiki_preprocess.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/zid.bb (renamed from doc/hook/zid.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/zid_init.bb (renamed from doc/hook/zid_init.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/zot_best_algorithm.bb (renamed from doc/hook/zot_best_algorithm.bb) | 0 | ||||
-rw-r--r-- | doc/en/hook/zot_finger.bb (renamed from doc/hook/zot_finger.bb) | 0 | ||||
-rw-r--r-- | doc/en/hooklist.bb (renamed from doc/hooklist.bb) | 0 | ||||
-rw-r--r-- | doc/en/hooks.html (renamed from doc/hooks.html) | 0 | ||||
-rw-r--r-- | doc/en/intro_for_developers.bb (renamed from doc/intro_for_developers.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/addons_footer.bb (renamed from doc/macros/addons_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/cloud_footer.bb (renamed from doc/macros/cloud_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/de/addons_footer.bb (renamed from doc/macros/de/addons_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/de/cloud_footer.bb (renamed from doc/macros/de/cloud_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/de/main_footer.bb (renamed from doc/macros/de/main_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/de/troubleshooting_footer.bb (renamed from doc/macros/de/troubleshooting_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/main_footer.bb (renamed from doc/macros/main_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/pl/addons_footer.bb (renamed from doc/macros/pl/addons_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/pl/cloud_footer.bb (renamed from doc/macros/pl/cloud_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/pl/main_footer.bb (renamed from doc/macros/pl/main_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/pl/troubleshooting_footer.bb (renamed from doc/macros/pl/troubleshooting_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/macros/troubleshooting_footer.bb (renamed from doc/macros/troubleshooting_footer.bb) | 0 | ||||
-rw-r--r-- | doc/en/member/assets/bookmarker-save-icon.png | bin | 0 -> 33987 bytes | |||
-rw-r--r-- | doc/en/member/assets/bookmarks-menu-dropdown.png | bin | 0 -> 53526 bytes | |||
-rw-r--r-- | doc/en/member/assets/privacy-group-tool-public.png | bin | 0 -> 39262 bytes | |||
-rw-r--r-- | doc/en/member/assets/privacy-tool-3.png | bin | 0 -> 140093 bytes | |||
-rw-r--r-- | doc/en/member/assets/qr_text_to_post.png (renamed from doc/member/assets/qr_text_to_post.png) | bin | 273 -> 273 bytes | |||
-rw-r--r-- | doc/en/member/assets/zat_dialog.png (renamed from doc/member/assets/zat_dialog.png) | bin | 81837 -> 81837 bytes | |||
-rw-r--r-- | doc/en/member/bbcode.html (renamed from doc/member/bbcode.html) | 0 | ||||
-rw-r--r-- | doc/en/member/member_faq.bb (renamed from doc/member/member_faq.bb) | 0 | ||||
-rw-r--r-- | doc/en/member/member_guide.bb (renamed from doc/member/member_guide.bb) | 177 | ||||
-rw-r--r-- | doc/en/plugins.bb (renamed from doc/plugins.bb) | 0 | ||||
-rw-r--r-- | doc/en/problems-following-an-update.bb (renamed from doc/problems-following-an-update.bb) | 0 | ||||
-rw-r--r-- | doc/en/red2pi.bb (renamed from doc/red2pi.bb) | 0 | ||||
-rw-r--r-- | doc/en/roadmap.bb (renamed from doc/roadmap.bb) | 0 | ||||
-rw-r--r-- | doc/en/schema_development.bb (renamed from doc/schema_development.bb) | 0 | ||||
-rw-r--r-- | doc/en/schemaspy_hubzilla/zot.meta.xml (renamed from doc/schemaspy_hubzilla/zot.meta.xml) | 0 | ||||
-rw-r--r-- | doc/en/sql_conventions.bb (renamed from doc/sql_conventions.bb) | 0 | ||||
-rw-r--r-- | doc/en/toc.html | 75 | ||||
-rw-r--r-- | doc/en/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png (renamed from doc/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png) | bin | 249151 -> 249151 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png (renamed from doc/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png) | bin | 293314 -> 293314 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png (renamed from doc/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png) | bin | 178913 -> 178913 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png (renamed from doc/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png) | bin | 43797 -> 43797 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png (renamed from doc/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png) | bin | 46752 -> 46752 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png (renamed from doc/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png) | bin | 257211 -> 257211 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png (renamed from doc/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png) | bin | 91478 -> 91478 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png (renamed from doc/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png) | bin | 293611 -> 293611 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png (renamed from doc/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png) | bin | 318766 -> 318766 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png (renamed from doc/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png) | bin | 298857 -> 298857 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png (renamed from doc/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png) | bin | 532838 -> 532838 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png (renamed from doc/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png) | bin | 137827 -> 137827 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png (renamed from doc/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png) | bin | 466641 -> 466641 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png (renamed from doc/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png) | bin | 240495 -> 240495 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png (renamed from doc/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png) | bin | 665755 -> 665755 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png (renamed from doc/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png) | bin | 324092 -> 324092 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png (renamed from doc/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png) | bin | 466584 -> 466584 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png (renamed from doc/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png) | bin | 155763 -> 155763 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png (renamed from doc/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png) | bin | 134643 -> 134643 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png (renamed from doc/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png) | bin | 306069 -> 306069 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png (renamed from doc/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png) | bin | 57185 -> 57185 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png (renamed from doc/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png) | bin | 255688 -> 255688 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png (renamed from doc/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png) | bin | 83265 -> 83265 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png (renamed from doc/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png) | bin | 264916 -> 264916 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png (renamed from doc/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png) | bin | 68194 -> 68194 bytes | |||
-rw-r--r-- | doc/en/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png (renamed from doc/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png) | bin | 99210 -> 99210 bytes | |||
-rw-r--r-- | doc/en/tutorials/personal_channel.html (renamed from doc/tutorials/personal_channel.html) | 110 | ||||
-rw-r--r-- | doc/toc.html | 75 | ||||
-rw-r--r-- | include/account.php | 51 | ||||
-rw-r--r-- | include/api_zot.php | 3 | ||||
-rw-r--r-- | include/attach.php | 30 | ||||
-rw-r--r-- | include/auth.php | 52 | ||||
-rw-r--r-- | include/bbcode.php | 15 | ||||
-rw-r--r-- | include/channel.php | 31 | ||||
-rw-r--r-- | include/cli_startup.php | 4 | ||||
-rw-r--r-- | include/config.php | 69 | ||||
-rw-r--r-- | include/connections.php | 15 | ||||
-rw-r--r-- | include/contact_widgets.php | 3 | ||||
-rw-r--r-- | include/conversation.php | 8 | ||||
-rw-r--r-- | include/crypto.php | 8 | ||||
-rw-r--r-- | include/event.php | 9 | ||||
-rw-r--r-- | include/features.php | 80 | ||||
-rw-r--r-- | include/feedutils.php | 8 | ||||
-rw-r--r-- | include/help.php | 197 | ||||
-rw-r--r-- | include/html2bbcode.php | 29 | ||||
-rw-r--r-- | include/html2plain.php | 8 | ||||
-rw-r--r-- | include/hubloc.php | 9 | ||||
-rw-r--r-- | include/import.php | 3 | ||||
-rw-r--r-- | include/items.php | 26 | ||||
-rw-r--r-- | include/language.php | 11 | ||||
-rw-r--r-- | include/menu.php | 7 | ||||
-rw-r--r-- | include/nav.php | 13 | ||||
-rw-r--r-- | include/network.php | 116 | ||||
-rw-r--r-- | include/oauth.php | 60 | ||||
-rw-r--r-- | include/oauth2.php | 10 | ||||
-rw-r--r-- | include/oembed.php | 33 | ||||
-rw-r--r-- | include/permissions.php | 8 | ||||
-rw-r--r-- | include/photo/photo_driver.php | 7 | ||||
-rw-r--r-- | include/photos.php | 9 | ||||
-rw-r--r-- | include/plugin.php | 30 | ||||
-rw-r--r-- | include/security.php | 8 | ||||
-rw-r--r-- | include/socgraph.php | 3 | ||||
-rw-r--r-- | include/statistics_fns.php | 22 | ||||
-rw-r--r-- | include/taxonomy.php | 4 | ||||
-rw-r--r-- | include/text.php | 34 | ||||
-rw-r--r-- | include/zid.php | 11 | ||||
-rw-r--r-- | library/jgrowl/.gitignore | 5 | ||||
-rw-r--r-- | library/jgrowl/Gruntfile.js | 61 | ||||
-rw-r--r-- | library/jgrowl/LICENSE | 7 | ||||
-rw-r--r-- | library/jgrowl/README.md | 75 | ||||
-rw-r--r-- | library/jgrowl/bower.json | 32 | ||||
-rw-r--r-- | library/jgrowl/examples/appendTo.html | 103 | ||||
-rw-r--r-- | library/jgrowl/examples/bootstrap.html | 91 | ||||
-rw-r--r-- | library/jgrowl/examples/jgrowl.html | 171 | ||||
-rw-r--r-- | library/jgrowl/jgrowl.jquery.json | 40 | ||||
-rw-r--r-- | library/jgrowl/jquery.jgrowl.css | 100 | ||||
-rw-r--r-- | library/jgrowl/jquery.jgrowl.js | 399 | ||||
-rw-r--r-- | library/jgrowl/jquery.jgrowl.map | 1 | ||||
-rw-r--r-- | library/jgrowl/jquery.jgrowl.min.css | 1 | ||||
-rw-r--r-- | library/jgrowl/jquery.jgrowl.min.js | 2 | ||||
-rw-r--r-- | library/jgrowl/less/jgrowl.core.less | 101 | ||||
-rw-r--r-- | library/jgrowl/less/jgrowl.less | 2 | ||||
-rw-r--r-- | library/jgrowl/less/jgrowl.variables.less | 8 | ||||
-rw-r--r-- | library/jgrowl/package.json | 23 | ||||
-rw-r--r-- | tests/phpunit.xml | 15 | ||||
-rw-r--r-- | tests/unit/Access/AccessListTest.php | 2 | ||||
-rw-r--r-- | tests/unit/Access/PermissionRolesTest.php | 2 | ||||
-rw-r--r-- | tests/unit/Access/PermissionsTest.php | 32 | ||||
-rw-r--r-- | tests/unit/AntiXSSTest.php | 2 | ||||
-rw-r--r-- | tests/unit/CallHooksTest.php | 65 | ||||
-rw-r--r-- | tests/unit/CreateIdentityTest.php | 65 | ||||
-rw-r--r-- | tests/unit/Lib/ActivityTest.php | 2 | ||||
-rw-r--r-- | tests/unit/Lib/PermissionDescriptionTest.php | 20 | ||||
-rw-r--r-- | tests/unit/Lib/ZotlibTest.php | 38 | ||||
-rw-r--r-- | tests/unit/Module/HelpTest.php | 179 | ||||
-rw-r--r-- | tests/unit/Module/RbmarkTest.php | 80 | ||||
-rw-r--r-- | tests/unit/Module/RpostTest.php | 81 | ||||
-rw-r--r-- | tests/unit/Module/SetupTest.php | 76 | ||||
-rw-r--r-- | tests/unit/Module/TestCase.php | 192 | ||||
-rw-r--r-- | tests/unit/Photo/PhotoGdTest.php | 17 | ||||
-rw-r--r-- | tests/unit/UnitTestCase.php | 91 | ||||
-rw-r--r-- | tests/unit/Web/HttpSigTest.php | 7 | ||||
-rw-r--r-- | tests/unit/Widget/HelpindexTest.php | 80 | ||||
-rw-r--r-- | tests/unit/includes/AccountTest.php | 2 | ||||
-rw-r--r-- | tests/unit/includes/AuthTest.php | 81 | ||||
-rw-r--r-- | tests/unit/includes/BBCodeTest.php | 42 | ||||
-rw-r--r-- | tests/unit/includes/FeedutilsTest.php | 66 | ||||
-rw-r--r-- | tests/unit/includes/LanguageTest.php | 50 | ||||
-rw-r--r-- | tests/unit/includes/MarkdownTest.php | 4 | ||||
-rw-r--r-- | tests/unit/includes/NetworkTest.php | 12 | ||||
-rw-r--r-- | tests/unit/includes/TextTest.php | 4 | ||||
-rw-r--r-- | tests/unit/includes/dba/TransactionTest.php | 6 | ||||
-rw-r--r-- | tests/unit/includes/dba/_files/account.yml | 2 | ||||
-rw-r--r-- | tests/unit/includes/dba/_files/config.yml | 4 | ||||
-rwxr-xr-x | util/addons | 20 | ||||
-rwxr-xr-x | util/config | 17 | ||||
-rwxr-xr-x | util/db_update.php | 4 | ||||
-rw-r--r-- | util/hmessages.po | 3744 | ||||
-rwxr-xr-x | util/service_class | 34 | ||||
-rwxr-xr-x | util/storageconv | 21 | ||||
-rw-r--r-- | vendor/composer/autoload_classmap.php | 3 | ||||
-rw-r--r-- | vendor/composer/autoload_static.php | 3 | ||||
-rw-r--r-- | view/css/mod_help.css | 7 | ||||
-rw-r--r-- | view/es-es/hmessages.po | 3150 | ||||
-rw-r--r-- | view/es-es/hstrings.php | 244 | ||||
-rw-r--r-- | view/js/main.js | 31 | ||||
-rw-r--r-- | view/js/mod_cloud.js | 4 | ||||
-rw-r--r-- | view/pdl/mod_admin.pdl | 5 | ||||
-rw-r--r-- | view/php/doubleleft.php | 2 | ||||
-rw-r--r-- | view/php/theme_init.php | 2 | ||||
-rw-r--r-- | view/theme/redbasic/css/narrow_navbar.css | 5 | ||||
-rw-r--r-- | view/theme/redbasic/css/style.css | 48 | ||||
-rw-r--r-- | view/theme/redbasic/php/theme_init.php | 6 | ||||
-rw-r--r-- | view/tpl/admin_accounts.tpl | 2 | ||||
-rw-r--r-- | view/tpl/admin_channels.tpl | 2 | ||||
-rw-r--r-- | view/tpl/cdav_calendar.tpl | 4 | ||||
-rw-r--r-- | view/tpl/contact_edit_modal.tpl | 8 | ||||
-rw-r--r-- | view/tpl/field_input.tpl | 17 | ||||
-rw-r--r-- | view/tpl/hdr.tpl | 1 | ||||
-rw-r--r-- | view/tpl/help.tpl | 8 | ||||
-rw-r--r-- | view/tpl/install.tpl | 4 | ||||
-rw-r--r-- | view/tpl/invite.tpl | 1 | ||||
-rw-r--r-- | view/tpl/jot-header.tpl | 2 | ||||
-rw-r--r-- | view/tpl/notifications_widget.tpl | 5 | ||||
-rw-r--r-- | view/tpl/nwiki_page_history.tpl | 59 | ||||
-rw-r--r-- | view/tpl/oembed_video.tpl | 5 | ||||
-rw-r--r-- | view/tpl/profile_vcard.tpl | 3 | ||||
-rw-r--r-- | view/tpl/register.tpl | 2 | ||||
-rw-r--r-- | view/tpl/siteinfo.tpl | 2 | ||||
-rw-r--r-- | view/tpl/totp_setup.tpl | 4 | ||||
-rw-r--r-- | view/tpl/widget.tpl | 12 |
793 files changed, 7330 insertions, 7826 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 76dc41334..04ae550b2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -58,7 +58,7 @@ before_script: - echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host="$DB_HOST" "$MYSQL_DATABASE" # Run the actual tests - touch dbfail.out - - vendor/bin/phpunit --configuration tests/phpunit.xml --verbose --stop-on-error --coverage-text --colors=never --log-junit tests/results/junit.xml || exit_code=$? + - vendor/bin/phpunit --configuration tests/phpunit.xml --no-progress --stop-on-error --coverage-text --colors=never --log-junit tests/results/junit.xml || exit_code=$? - if [ $exit_code -ne 0 ]; then echo "Test barfed!"; cat dbfail.out; exit $exit_code; fi coverage: '/^\s*Lines:\s*\d+.\d+\%/' @@ -83,7 +83,7 @@ before_script: - psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "\dt;" # Run the actual tests - touch dbfail.out - - vendor/bin/phpunit --configuration tests/phpunit.xml --verbose --stop-on-error --coverage-text --colors=never --log-junit tests/results/junit.xml || exit_code=$? + - vendor/bin/phpunit --configuration tests/phpunit.xml --no-progress --stop-on-error --coverage-text --colors=never --log-junit tests/results/junit.xml || exit_code=$? - if [ $exit_code -ne 0 ]; then echo "Test barfed!"; cat dbfail.out; exit $exit_code; fi coverage: '/^\s*Lines:\s*\d+.\d+\%/' diff --git a/.phpcs.xml b/.phpcs.xml new file mode 100644 index 000000000..0054e4cda --- /dev/null +++ b/.phpcs.xml @@ -0,0 +1,78 @@ +<?xml version="1.0"?> +<ruleset + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + name="PHP_CodeSniffer" + xsi:noNamespaceSchemaLocation="phpcs.xsd" + > + + <description>PHP CodeSniffer config for Hubzilla</description> + + <file>app</file> + <file>boot.php</file> + <file>include</file> + <file>index.php</file> + <file>install</file> + <file>library</file> + <file>tests</file> + <file>util</file> + <file>view</file> + <file>Zotlabs</file> + + <rule ref="Generic"> + <exclude name="Generic.Arrays.ArrayIndent"/> + <exclude name="Generic.Arrays.DisallowLongArraySyntax"/> + <exclude name="Generic.Arrays.DisallowShortArraySyntax"/> + <exclude name="Generic.Files.EndFileNoNewline"/> + <exclude name="Generic.Files.LowercasedFilename"/> + <exclude name="Generic.Formatting.MultipleStatementAlignment"/> + <exclude name="Generic.Formatting.SpaceAfterNot"/> + <exclude name="Generic.Functions.FunctionCallArgumentSpacing"/> + <exclude name="Generic.Functions.OpeningFunctionBraceBsdAllman"/> + <exclude name="Generic.NamingConventions.CamelCapsFunctionName"/> + <exclude name="Generic.PHP.ClosingPHPTag"/> + <exclude name="Generic.PHP.RequireStrictTypes"/> + <exclude name="Generic.PHP.UpperCaseConstant"/> + <exclude name="Generic.WhiteSpace.DisallowTabIndent"/> + <exclude name="Generic.WhiteSpace.ScopeIndent"/> + <exclude name="Generic.Commenting.DocComment.ContentAfterOpen"/> + <exclude name="Generic.Commenting.DocComment.ContentBeforeClose"/> + <exclude name="Generic.Commenting.DocComment.LongNotCapital"/> + <exclude name="Generic.Commenting.DocComment.MissingShort"/> + <exclude name="Generic.Commenting.DocComment.NonParamGroup"/> + <exclude name="Generic.Commenting.DocComment.ParamNotFirst"/> + <exclude name="Generic.Commenting.DocComment.ShortNotCapital"/> + <exclude name="Generic.Commenting.DocComment.SpacingAfter"/> + <exclude name="Generic.Commenting.DocComment.SpacingBeforeShort"/> + <exclude name="Generic.Commenting.DocComment.TagValueIndent"/> + <exclude name="Generic.ControlStructures.InlineControlStructure.NotAllowed"/> + <exclude name="Generic.Files.OneClassPerFile.MultipleFound"/> + <exclude name="Generic.Files.OneObjectStructurePerFile.MultipleFound"/> + <exclude name="Generic.Formatting.SpaceAfterCast.NoSpace"/> + </rule> + + <!-- + Warn about lines longer than 100 columns, lines longer than 150 + columns will flag an error. + --> + <rule ref="Generic.Files.LineLength"> + <properties> + <property name="lineLimit" value="100" /> + <property name="absoluteLineLimit" value="150" /> + </properties> + </rule> + + <!-- + Mark deprecated functions. + --> + <rule ref="Generic.PHP.DeprecatedFunctions"> + <properties> + <property name="forbiddenFunctions" type="array" extend="true"> + <element key="load_config" value="Zotlabs\Lib\Config::Load" /> + <element key="get_config" value="Zotlabs\Lib\Config::Get" /> + <element key="set_config" value="Zotlabs\Lib\Config::Set" /> + <element key="del_config" value="Zotlabs\Lib\Config::Delete" /> + </property> + </properties> + </rule> + +</ruleset> @@ -1,3 +1,64 @@ +Hubzilla 9.2 (2024-??-??) + - Fail to import more gracefully if a channel has already been imported at some point but was deleted again + - Use the doubleleft template by default for admin pages to work around some display issues + - Reflect the censored state in the local xchan + - Exclude toplevel posts by censored channels in the public stream + - Update API docs for Module test case base class + - Add helper expectRedirectTo to module test class + - Refactor is_local_url() and add api doc + - Use empty() to check if array entry exist in create_identity() + - Add basic test for create_identity function + - Allow passing callable as array to hooks + - Use DbaTransaction class for db transactions in queueworker + - Remove obsolete stubs from Permissions tests + - Refactor mod rpost to fix open redirect issue and add tests + - Configure system.baseurl for tests + - Add basic test and fix session access for mod rpost + - Add config file and rules for PHP Code Sniffer + - Refactor mod setup + - Pass the force argument to the xchan_photo daemon + - Declare arg and return types for unparse_url() + - Skip checking MFA status for WebDAV and CardDAV requests + - Upgrade test framework to PHPUnit 10.5 + - Minor style update for the .abook-self CSS class + - Update docs on tags and mentions. + - Refactor and cleanup Rbmark module and add tests + - Remove unused Toggle_(safesearch|mobile) modules + - Make mod regate return to system.workflow_channel_next + - Show register message field only if registration is set to register_approve + - Add bbcode support for the HTML5 del tag + - Rename HelpHelper to HelpHelperTrait + - Remove jgrowl in favour of bootstrap toast + - Refactor mod help + - Reduce some global state and add some docs + - Make save_chunk() deal with userfile and file array keys + - Update siteinfo to remove traces of zotlabs.org + - Minor refactor for in mod import and store import host for possible later use + - Allow to kick off import sync process in case it did not start at all + - Updated spanish translations + + Bugfixes + - Fix possible PHP error in zid() + - Fix display issue for doubleleft template + - Fix issue where event items were parsed multiple times on display + - Fix return to blank page after editing post under some circumstances + - Fix missing include in QueueWorker + - Fix warnings exposed by tests + - Fix timestamp handling in menu_create() + - Fix updated arg not supported in pconfig wrapper function + - Fix default timeouts for z_(fetch|post)_url + - Fix hcard addon markup not available if profile entries were missing + - Fix nested lists parsing + - Fix help menu CSS + - Fix get_rpost_path() broken for URL's with no port + - Fix passing an empty filter to deliverable_abook_xchans() will return all deliverable abook xchans + + Addons + - Wiki: fix revert if editor is not ace + - Wiki: do not slate deleted wiki pages for download + - Pubcrawl: do not use mentions for addressing if post is restricted + + Hubzilla 9.0.2 (2024-06-07) - Fix buttons in event viewer - Fix some PHP warnings and errors diff --git a/Zotlabs/Access/PermissionRoles.php b/Zotlabs/Access/PermissionRoles.php index 2078b52a8..5dfedfcd7 100644 --- a/Zotlabs/Access/PermissionRoles.php +++ b/Zotlabs/Access/PermissionRoles.php @@ -2,6 +2,8 @@ namespace Zotlabs\Access; +use Zotlabs\Lib\Config; + /** * @brief PermissionRoles class. * @@ -247,7 +249,7 @@ class PermissionRoles { break; } - $x = get_config('system','role_perms'); + $x = Config::Get('system','role_perms'); // let system settings over-ride any or all if($x && is_array($x) && array_key_exists($role,$x)) diff --git a/Zotlabs/Daemon/Cache_query.php b/Zotlabs/Daemon/Cache_query.php index d6f66f1f0..d5788795f 100644 --- a/Zotlabs/Daemon/Cache_query.php +++ b/Zotlabs/Daemon/Cache_query.php @@ -3,6 +3,7 @@ namespace Zotlabs\Daemon; use Zotlabs\Lib\Cache; +use Zotlabs\Lib\Config; class Cache_query { @@ -14,14 +15,14 @@ class Cache_query { $r = null; $key = $argv[1]; - $pid = get_config('procid', $key, false); + $pid = Config::Get('procid', $key, false); if ($pid && (function_exists('posix_kill') ? posix_kill($pid, 0) : true)) { logger($key . ': procedure already run with pid ' . $pid, LOGGER_DEBUG); return; } $pid = getmypid(); - set_config('procid', $key, $pid); + Config::Set('procid', $key, $pid); array_shift($argv); array_shift($argv); @@ -34,7 +35,7 @@ class Cache_query { Cache::set($key, serialize($r)); } - del_config('procid', $key); + Config::Delete('procid', $key); return; } diff --git a/Zotlabs/Daemon/Checksites.php b/Zotlabs/Daemon/Checksites.php index eacf8c6bc..8f6319edb 100644 --- a/Zotlabs/Daemon/Checksites.php +++ b/Zotlabs/Daemon/Checksites.php @@ -2,6 +2,8 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; + require_once('include/hubloc.php'); class Checksites { @@ -19,7 +21,7 @@ class Checksites { if ($site_id) $sql_options = " and site_url = '" . dbesc($argv[1]) . "' "; - $days = intval(get_config('system', 'sitecheckdays')); + $days = intval(Config::Get('system', 'sitecheckdays')); if ($days < 1) $days = 30; diff --git a/Zotlabs/Daemon/Cron.php b/Zotlabs/Daemon/Cron.php index e0fa2d629..d2c863572 100644 --- a/Zotlabs/Daemon/Cron.php +++ b/Zotlabs/Daemon/Cron.php @@ -2,6 +2,7 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; use Zotlabs\Lib\Libzotdir; @@ -9,7 +10,7 @@ class Cron { static public function run($argc, $argv) { - $maxsysload = intval(get_config('system', 'maxloadavg')); + $maxsysload = intval(Config::Get('system', 'maxloadavg')); if ($maxsysload < 1) $maxsysload = 50; if (function_exists('sys_getloadavg')) { @@ -24,7 +25,7 @@ class Cron { // Check for a lockfile. If it exists, but is over an hour old, it's stale. Ignore it. $lockfile = 'store/[data]/cron'; if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600)) - && (!get_config('system', 'override_cron_lockfile'))) { + && (!Config::Get('system', 'override_cron_lockfile'))) { logger("cron: Already running"); return; } @@ -41,7 +42,7 @@ class Cron { // Pull remote changes and push local changes. // potential issue: how do we keep from creating an endless update loop? - $dirmode = get_config('system', 'directory_mode'); + $dirmode = Config::Get('system', 'directory_mode'); if ($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) { Libzotdir::sync_directories($dirmode); @@ -64,7 +65,7 @@ class Cron { require_once('include/account.php'); remove_expired_registrations(); - $interval = get_config('queueworker', 'queue_interval', 500000); + $interval = Config::Get('queueworker', 'queue_interval', 500000); // expire any expired items @@ -124,13 +125,13 @@ class Cron { $r = q("SELECT DISTINCT xchan, content FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s", intval(PHOTO_CACHE), db_utcnow(), - db_quoteinterval(get_config('system', 'cache_expire_days', 7) . ' DAY') + db_quoteinterval(Config::Get('system', 'cache_expire_days', 7) . ' DAY') ); if ($r) { q("DELETE FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s", intval(PHOTO_CACHE), db_utcnow(), - db_quoteinterval(get_config('system', 'cache_expire_days', 7) . ' DAY') + db_quoteinterval(Config::Get('system', 'cache_expire_days', 7) . ' DAY') ); foreach ($r as $rr) { $file = dbunescbin($rr['content']); @@ -185,13 +186,13 @@ class Cron { // FIXME: add birthday updates, both locally and for xprof for use // by directory servers - $d1 = intval(get_config('system', 'last_expire_day')); + $d1 = intval(Config::Get('system', 'last_expire_day')); $d2 = intval(datetime_convert('UTC', 'UTC', 'now', 'd')); // Allow somebody to staggger daily activities if they have more than one site on their server, // or if it happens at an inconvenient (busy) hour. - $h1 = intval(get_config('system', 'cron_hour')); + $h1 = intval(Config::Get('system', 'cron_hour')); $h2 = intval(datetime_convert('UTC', 'UTC', 'now', 'G')); @@ -225,7 +226,7 @@ class Cron { // pull in some public posts if allowed - $disable_externals = get_config('system', 'disable_discover_tab') || get_config('system', 'disable_discover_tab') === false || get_config('system', 'site_firehose'); + $disable_externals = Config::Get('system', 'disable_discover_tab') || Config::Get('system', 'disable_discover_tab') === false || Config::Get('system', 'site_firehose'); if (!$disable_externals) Master::Summon(['Externals']); @@ -245,7 +246,7 @@ class Cron { if (!$restart) Master::Summon(array('Cronhooks')); - set_config('system', 'lastcron', datetime_convert()); + Config::Set('system', 'lastcron', datetime_convert()); //All done - clear the lockfile //@unlink($lockfile); diff --git a/Zotlabs/Daemon/Cron_daily.php b/Zotlabs/Daemon/Cron_daily.php index 98379be1b..3bc267f08 100644 --- a/Zotlabs/Daemon/Cron_daily.php +++ b/Zotlabs/Daemon/Cron_daily.php @@ -2,6 +2,7 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzotdir; class Cron_daily { @@ -68,7 +69,7 @@ class Cron_daily { // Clean up cache q("DELETE FROM cache WHERE updated < %s - INTERVAL %s", db_utcnow(), - db_quoteinterval(get_config('system', 'cache_expire_days', 7) . ' DAY') + db_quoteinterval(Config::Get('system', 'cache_expire_days', 7) . ' DAY') ); //update statistics in config @@ -82,7 +83,7 @@ class Cron_daily { // expire old delivery reports - $keep_reports = intval(get_config('system', 'expire_delivery_reports')); + $keep_reports = intval(Config::Get('system', 'expire_delivery_reports')); if ($keep_reports === 0) $keep_reports = 10; @@ -103,7 +104,7 @@ class Cron_daily { $date = datetime_convert(); call_hooks('cron_daily', $date); - set_config('system', 'last_expire_day', intval(datetime_convert('UTC', 'UTC', 'now', 'd'))); + Config::Set('system', 'last_expire_day', intval(datetime_convert('UTC', 'UTC', 'now', 'd'))); /** * End Cron Daily diff --git a/Zotlabs/Daemon/Cron_weekly.php b/Zotlabs/Daemon/Cron_weekly.php index 75fb94700..f9ea5aae7 100644 --- a/Zotlabs/Daemon/Cron_weekly.php +++ b/Zotlabs/Daemon/Cron_weekly.php @@ -2,6 +2,8 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; + class Cron_weekly { static public function run($argc, $argv) { @@ -44,7 +46,7 @@ class Cron_weekly { db_utcnow(), db_quoteinterval('14 DAY') ); - $dirmode = intval(get_config('system', 'directory_mode')); + $dirmode = intval(Config::Get('system', 'directory_mode')); if ($dirmode === DIRECTORY_MODE_SECONDARY || $dirmode === DIRECTORY_MODE_PRIMARY) { logger('regdir: ' . print_r(z_fetch_url(get_directory_primary() . '/regdir?f=&url=' . urlencode(z_root()) . '&realm=' . urlencode(get_directory_realm())), true)); } diff --git a/Zotlabs/Daemon/Directory.php b/Zotlabs/Daemon/Directory.php index 19adf8273..1c4c29ac2 100644 --- a/Zotlabs/Daemon/Directory.php +++ b/Zotlabs/Daemon/Directory.php @@ -2,6 +2,7 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Libzotdir; use Zotlabs\Lib\Queue; @@ -25,7 +26,7 @@ class Directory { logger('directory update', LOGGER_DEBUG); - $dirmode = get_config('system', 'directory_mode'); + $dirmode = Config::Get('system', 'directory_mode'); if ($dirmode === false) $dirmode = DIRECTORY_MODE_NORMAL; diff --git a/Zotlabs/Daemon/Expire.php b/Zotlabs/Daemon/Expire.php index 6ab67150f..ad52a6b71 100644 --- a/Zotlabs/Daemon/Expire.php +++ b/Zotlabs/Daemon/Expire.php @@ -2,6 +2,8 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; + require_once('include/items.php'); class Expire { @@ -10,14 +12,14 @@ class Expire { cli_startup(); - $pid = get_config('procid', 'expire', false); + $pid = Config::Get('procid', 'expire', false); if ($pid && (function_exists('posix_kill') ? posix_kill($pid, 0) : true)) { logger('procedure already run with pid ' . $pid, LOGGER_DEBUG); return; } $pid = getmypid(); - set_config('procid', 'expire', $pid); + Config::Set('procid', 'expire', $pid); // perform final cleanup on previously delete items @@ -38,13 +40,13 @@ class Expire { db_quoteinterval('36 DAY') ); - if (intval(get_config('system', 'optimize_items'))) + if (intval(Config::Get('system', 'optimize_items'))) q("optimize table item"); logger('expire: start with pid ' . $pid, LOGGER_DEBUG); - $site_expire = intval(get_config('system', 'default_expire_days', 30)); - $commented_days = intval(get_config('system', 'active_expire_days', 7)); + $site_expire = intval(Config::Get('system', 'default_expire_days', 30)); + $commented_days = intval(Config::Get('system', 'active_expire_days', 7)); logger('site_expire: ' . $site_expire); @@ -84,7 +86,7 @@ class Expire { // this should probably just fetch the channel_expire_days from the sys channel, // but there's no convenient way to set it. - $expire_days = get_config('system', 'sys_expire_days'); + $expire_days = Config::Get('system', 'sys_expire_days'); if ($expire_days === false) $expire_days = 30; @@ -101,7 +103,7 @@ class Expire { logger('Expire: sys: done', LOGGER_DEBUG); } - del_config('procid', 'expire'); + Config::Delete('procid', 'expire'); return; } diff --git a/Zotlabs/Daemon/Master.php b/Zotlabs/Daemon/Master.php index c9ed91aaa..d28e462dd 100644 --- a/Zotlabs/Daemon/Master.php +++ b/Zotlabs/Daemon/Master.php @@ -37,7 +37,7 @@ class Master { return; } - $phpbin = get_config('system', 'phpbin', 'php'); + $phpbin = Config::Get('system', 'phpbin', 'php'); proc_run($phpbin, 'Zotlabs/Daemon/Master.php', $arr); */ } diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php index 4e7ca3911..20134b8fe 100644 --- a/Zotlabs/Daemon/Notifier.php +++ b/Zotlabs/Daemon/Notifier.php @@ -2,8 +2,9 @@ namespace Zotlabs\Daemon; -use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; +use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Queue; require_once('include/html2plain.php'); @@ -668,7 +669,7 @@ class Notifier { ); // only create delivery reports for normal undeleted items - if (is_array($target_item) && (!$target_item['item_deleted']) && (!get_config('system', 'disable_dreport'))) { + if (is_array($target_item) && (!$target_item['item_deleted']) && (!Config::Get('system', 'disable_dreport'))) { q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan, dreport_queue ) values ( '%s', '%s','%s','%s','%s','%s','%s','%s' ) ", dbesc($target_item['mid']), @@ -698,7 +699,7 @@ class Notifier { do_delivery(self::$deliveries); } - if ($dead_hosts && is_array($target_item) && (!$target_item['item_deleted']) && (!get_config('system', 'disable_dreport'))) { + if ($dead_hosts && is_array($target_item) && (!$target_item['item_deleted']) && (!Config::Get('system', 'disable_dreport'))) { foreach ($dead_hosts as $deceased_host) { $r = q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan, dreport_queue ) values ( '%s', '%s','%s','%s','%s','%s','%s','%s' ) ", diff --git a/Zotlabs/Daemon/Onepoll.php b/Zotlabs/Daemon/Onepoll.php index 973bcf402..e525d138c 100644 --- a/Zotlabs/Daemon/Onepoll.php +++ b/Zotlabs/Daemon/Onepoll.php @@ -5,6 +5,7 @@ namespace Zotlabs\Daemon; use Zotlabs\Lib\Activity; use Zotlabs\Lib\ActivityStreams; use Zotlabs\Lib\ASCollection; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; require_once('include/socgraph.php'); @@ -25,7 +26,7 @@ class Onepoll { } $sql_extra = ''; - $allow_feeds = get_config('system', 'feed_contacts'); + $allow_feeds = Config::Get('system', 'feed_contacts'); if(!$allow_feeds) { $sql_extra = ' and abook_feed = 0 '; } @@ -125,7 +126,7 @@ class Onepoll { if ($fetch_feed) { - $max = intval(get_config('system', 'max_imported_posts', 30)); + $max = intval(Config::Get('system', 'max_imported_posts', 30)); if (intval($max)) { $cl = Activity::get_actor_collections($contact['abook_xchan']); diff --git a/Zotlabs/Daemon/Poller.php b/Zotlabs/Daemon/Poller.php index 77a428ec3..2103310b9 100644 --- a/Zotlabs/Daemon/Poller.php +++ b/Zotlabs/Daemon/Poller.php @@ -2,11 +2,13 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; + class Poller { static public function run($argc, $argv) { - $maxsysload = intval(get_config('system', 'maxloadavg')); + $maxsysload = intval(Config::Get('system', 'maxloadavg')); if ($maxsysload < 1) $maxsysload = 50; if (function_exists('sys_getloadavg')) { @@ -17,7 +19,7 @@ class Poller { } } - $interval = get_config('queueworker', 'queue_interval', 500000); + $interval = Config::Get('queueworker', 'queue_interval', 500000); logger('poller: start'); @@ -43,13 +45,13 @@ class Poller { reload_plugins(); // Only poll from those with suitable relationships - $abandon_days = intval(get_config('system', 'account_abandon_days', 0)); + $abandon_days = intval(Config::Get('system', 'account_abandon_days', 0)); $abandon_sql = (($abandon_days) ? sprintf(" AND account_lastlog > %s - INTERVAL %s ", db_utcnow(), db_quoteinterval(intval($abandon_days) . ' DAY')) : '' ); - $allow_feeds = get_config('system', 'feed_contacts'); + $allow_feeds = Config::Get('system', 'feed_contacts'); if(!$allow_feeds) { $sql_extra .= ' and abook_feed = 0 '; } @@ -81,7 +83,7 @@ class Poller { if (intval($contact['abook_feed'])) { $min = service_class_fetch($contact['abook_channel'], 'minimum_feedcheck_minutes'); if (!$min) - $min = intval(get_config('system', 'minimum_feedcheck_minutes')); + $min = intval(Config::Get('system', 'minimum_feedcheck_minutes')); if (!$min) $min = 60; @@ -167,7 +169,7 @@ class Poller { } } - $dirmode = intval(get_config('system', 'directory_mode')); + $dirmode = intval(Config::Get('system', 'directory_mode')); if ($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) { $r = q("SELECT * FROM updates WHERE ud_update = 1 AND (ud_last = '%s' OR ud_last > %s - INTERVAL %s)", @@ -195,7 +197,7 @@ class Poller { } } - set_config('system', 'lastpoll', datetime_convert()); + Config::Set('system', 'lastpoll', datetime_convert()); return; } diff --git a/Zotlabs/Daemon/Thumbnail.php b/Zotlabs/Daemon/Thumbnail.php index fa9570658..85fcb8b72 100644 --- a/Zotlabs/Daemon/Thumbnail.php +++ b/Zotlabs/Daemon/Thumbnail.php @@ -2,6 +2,7 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; class Thumbnail { @@ -19,9 +20,9 @@ class Thumbnail { $attach = $c[0]; - $preview_style = intval(get_config('system', 'thumbnail_security', 0)); - $preview_width = intval(get_config('system', 'thumbnail_width', 300)); - $preview_height = intval(get_config('system', 'thumbnail_height', 300)); + $preview_style = intval(Config::Get('system', 'thumbnail_security', 0)); + $preview_width = intval(Config::Get('system', 'thumbnail_width', 300)); + $preview_height = intval(Config::Get('system', 'thumbnail_height', 300)); $p = [ 'attach' => $attach, diff --git a/Zotlabs/Daemon/Xchan_photo.php b/Zotlabs/Daemon/Xchan_photo.php index f90d1d726..662fc967c 100644 --- a/Zotlabs/Daemon/Xchan_photo.php +++ b/Zotlabs/Daemon/Xchan_photo.php @@ -8,14 +8,15 @@ class Xchan_photo { static public function run($argc, $argv) { - if ($argc != 3) { + if ($argc < 3) { return; } $url = hex2bin($argv[1]); $xchan = hex2bin($argv[2]); + $force = $argv[3]; - $photos = import_xchan_photo($url, $xchan); + $photos = import_xchan_photo($url, $xchan, false, $force); if ($photos) { $result = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'", dbescdate(datetime_convert()), @@ -27,8 +28,10 @@ class Xchan_photo { ); if (! $result) { - logger("xchan update failed for $url"); + logger("xchan photo update failed for $url"); } } + + return; } } diff --git a/Zotlabs/Extend/Route.php b/Zotlabs/Extend/Route.php index f7b90ec6e..95b83e11b 100644 --- a/Zotlabs/Extend/Route.php +++ b/Zotlabs/Extend/Route.php @@ -2,6 +2,7 @@ namespace Zotlabs\Extend; +use Zotlabs\Lib\Config; class Route { @@ -38,11 +39,11 @@ class Route { } static function get() { - return get_config('system','routes',[]); + return Config::Get('system','routes',[]); } static function set($r) { - return set_config('system','routes',$r); + return Config::Set('system','routes',$r); } } diff --git a/Zotlabs/Extend/Widget.php b/Zotlabs/Extend/Widget.php index dee64c61b..6ab95237d 100644 --- a/Zotlabs/Extend/Widget.php +++ b/Zotlabs/Extend/Widget.php @@ -2,6 +2,7 @@ namespace Zotlabs\Extend; +use Zotlabs\Lib\Config; class Widget { @@ -38,10 +39,10 @@ class Widget { } static function get() { - return get_config('system','widgets',[]); + return Config::Get('system','widgets',[]); } static function set($r) { - return set_config('system','widgets',$r); + return Config::Set('system','widgets',$r); } } diff --git a/Zotlabs/Identity/OAuth2Server.php b/Zotlabs/Identity/OAuth2Server.php index b747b95db..67326b599 100644 --- a/Zotlabs/Identity/OAuth2Server.php +++ b/Zotlabs/Identity/OAuth2Server.php @@ -2,6 +2,8 @@ namespace Zotlabs\Identity; +use Zotlabs\Lib\Config; + class OAuth2Server extends \OAuth2\Server { public function __construct(OAuth2Storage $storage, $config = null) { @@ -24,8 +26,8 @@ class OAuth2Server extends \OAuth2\Server { $keyStorage = new \OAuth2\Storage\Memory( [ 'keys' => [ - 'public_key' => get_config('system', 'pubkey'), - 'private_key' => get_config('system', 'prvkey') + 'public_key' => Config::Get('system', 'pubkey'), + 'private_key' => Config::Get('system', 'prvkey') ] ]); diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index b628221fb..9178dac39 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -70,7 +70,7 @@ class Activity { } if ($items) { - return self::encode_item(array_shift($items), true); + return self::encode_item(array_shift($items)); } return null; @@ -1875,7 +1875,7 @@ class Activity { } if ($icon) { - Master::Summon(['Xchan_photo', bin2hex($icon), bin2hex($url)]); + Master::Summon(['Xchan_photo', bin2hex($icon), bin2hex($url), $force]); } } @@ -2902,7 +2902,7 @@ class Activity { if (intval($parent[0]['item_private'])) { if (!intval($item['item_private'])) { - $item['item_private'] = intval($parent_item['item_private']); + $item['item_private'] = intval($parent[0]['item_private']); $item['allow_cid'] = '<' . $channel['channel_hash'] . '>'; $item['allow_gid'] = $item['deny_cid'] = $item['deny_gid'] = ''; } diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php index 1c05d69b1..0dc405ea9 100644 --- a/Zotlabs/Lib/Apps.php +++ b/Zotlabs/Lib/Apps.php @@ -3,6 +3,7 @@ namespace Zotlabs\Lib; use App; +use Zotlabs\Lib\Config; require_once('include/plugin.php'); require_once('include/channel.php'); @@ -65,7 +66,7 @@ class Apps { } static public function get_base_apps() { - $x = get_config('system','base_apps',[ + $x = Config::Get('system','base_apps',[ 'Connections', 'Contact Roles', 'Network', @@ -301,7 +302,7 @@ class Apps { break; default: if($config) - $unset = ((get_config('system', $require[0]) == $require[1]) ? false : true); + $unset = ((Config::Get('system', $require[0]) == $require[1]) ? false : true); else $unset = ((local_channel() && feature_enabled(local_channel(),$require)) ? false : true); if($unset) @@ -523,7 +524,7 @@ class Apps { break; default: if($config) - $unset = ((get_config('system', $require[0]) === $require[1]) ? false : true); + $unset = ((Config::Get('system', $require[0]) === $require[1]) ? false : true); else $unset = ((local_channel() && feature_enabled(local_channel(),$require)) ? false : true); if($unset) @@ -960,7 +961,7 @@ class Apps { $conf = (($menu === 'nav_featured_app') ? 'app_order' : 'app_pin_order'); - $x = (($uid) ? get_pconfig($uid,'system',$conf) : get_config('system',$conf)); + $x = (($uid) ? get_pconfig($uid,'system',$conf) : Config::Get('system',$conf)); if(($x) && (! is_array($x))) { $y = explode(',',$x); $y = array_map('trim',$y); diff --git a/Zotlabs/Lib/Cache.php b/Zotlabs/Lib/Cache.php index f3f520496..4b5beb2aa 100644 --- a/Zotlabs/Lib/Cache.php +++ b/Zotlabs/Lib/Cache.php @@ -2,10 +2,11 @@ namespace Zotlabs\Lib; - /** - * cache api - */ +use Zotlabs\Lib\Config; +/** + * cache api + */ class Cache { /** @@ -23,7 +24,7 @@ class Cache { $r = q("SELECT v FROM cache WHERE k = '%s' AND updated > %s - INTERVAL %s LIMIT 1", dbesc($hash), db_utcnow(), - db_quoteinterval(($age ? $age : get_config('system','object_cache_days', '30') . ' DAY')) + db_quoteinterval(($age ? $age : Config::Get('system','object_cache_days', '30') . ' DAY')) ); if ($r) diff --git a/Zotlabs/Lib/Config.php b/Zotlabs/Lib/Config.php index 95df8ed6f..cd8b08991 100644 --- a/Zotlabs/Lib/Config.php +++ b/Zotlabs/Lib/Config.php @@ -115,7 +115,7 @@ class Config { * The category of the configuration value * @param string $key * The configuration key to query - * @param string $default (optional) default false + * @param mixed $default (optional) default false * @return mixed Return value or false on error or if not set */ public static function Get($family, $key, $default = false) { diff --git a/Zotlabs/Lib/Connect.php b/Zotlabs/Lib/Connect.php index 4de41526b..b8e7a5c4e 100644 --- a/Zotlabs/Lib/Connect.php +++ b/Zotlabs/Lib/Connect.php @@ -5,8 +5,7 @@ namespace Zotlabs\Lib; use App; use Zotlabs\Access\Permissions; use Zotlabs\Daemon\Master; - - +use Zotlabs\Lib\Config; class Connect { @@ -96,7 +95,7 @@ class Connect { $wf = discover_by_webbie($url,$protocol); if (! $wf) { - $feeds = get_config('system','feed_contacts'); + $feeds = Config::Get('system','feed_contacts'); if (($feeds) && (in_array($protocol, [ '', 'feed', 'rss' ]))) { $d = discover_by_url($url); diff --git a/Zotlabs/Lib/Crypto.php b/Zotlabs/Lib/Crypto.php index 188c6bd81..46a25d3b5 100644 --- a/Zotlabs/Lib/Crypto.php +++ b/Zotlabs/Lib/Crypto.php @@ -3,6 +3,7 @@ namespace Zotlabs\Lib; use Exception; +use Zotlabs\Lib\Config; class Crypto { @@ -44,7 +45,7 @@ class Crypto { 'encrypt_key' => false ]; - $conf = get_config('system', 'openssl_conf_file'); + $conf = Config::Get('system', 'openssl_conf_file'); if ($conf) { $openssl_options['config'] = $conf; diff --git a/Zotlabs/Lib/DB_Upgrade.php b/Zotlabs/Lib/DB_Upgrade.php index b6e3f7b7b..981c354a4 100644 --- a/Zotlabs/Lib/DB_Upgrade.php +++ b/Zotlabs/Lib/DB_Upgrade.php @@ -2,6 +2,7 @@ namespace Zotlabs\Lib; +use Zotlabs\Lib\Config; class DB_Upgrade { @@ -13,9 +14,9 @@ class DB_Upgrade { $this->config_name = 'db_version'; $this->func_prefix = '_'; - $build = get_config('system', 'db_version', 0); + $build = Config::Get('system', 'db_version', 0); if(! intval($build)) - $build = set_config('system', 'db_version', $db_revision); + $build = Config::Set('system', 'db_version', $db_revision); if($build == $db_revision) { // Nothing to be done. @@ -27,7 +28,7 @@ class DB_Upgrade { logger('Critical: check_config unable to determine database schema version'); return; } - + $current = intval($db_revision); if($stored < $current) { @@ -38,7 +39,7 @@ class DB_Upgrade { for($x = $stored + 1; $x <= $current; $x ++) { $s = '_' . $x; $cls = '\\Zotlabs\Update\\' . $s ; - if(! class_exists($cls)) { + if(! class_exists($cls)) { return; } @@ -52,10 +53,10 @@ class DB_Upgrade { Config::Load('database'); - if(get_config('database', $s)) + if(Config::Get('database', $s)) break; - set_config('database',$s, '1'); - + Config::Set('database',$s, '1'); + $c = new $cls(); @@ -65,10 +66,10 @@ class DB_Upgrade { $source = t('Source code of failed update: ') . "\n\n" . @file_get_contents('Zotlabs/Update/' . $s . '.php'); - + // Prevent sending hundreds of thousands of emails by creating - // a lockfile. + // a lockfile. $lockfile = 'store/[data]/mailsent'; @@ -77,7 +78,7 @@ class DB_Upgrade { @unlink($lockfile); //send the administrator an e-mail file_put_contents($lockfile, $x); - + $r = q("select account_language from account where account_email = '%s' limit 1", dbesc(\App::$config['system']['admin_email']) ); @@ -86,7 +87,7 @@ class DB_Upgrade { [ 'toEmail' => \App::$config['system']['admin_email'], 'messageSubject' => sprintf( t('Update Error at %s'), z_root()), - 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'), + 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'), [ '$sitename' => \App::$config['system']['sitename'], '$siteurl' => z_root(), @@ -104,11 +105,11 @@ class DB_Upgrade { pop_lang(); } else { - set_config('database',$s, 'success'); + Config::Set('database',$s, 'success'); } } } - set_config('system', 'db_version', $db_revision); + Config::Set('system', 'db_version', $db_revision); } } -}
\ No newline at end of file +} diff --git a/Zotlabs/Lib/DReport.php b/Zotlabs/Lib/DReport.php index 71e39a9d7..ac8e0d377 100644 --- a/Zotlabs/Lib/DReport.php +++ b/Zotlabs/Lib/DReport.php @@ -1,6 +1,8 @@ <?php namespace Zotlabs\Lib; +use Zotlabs\Lib\Config; + class DReport { private $location; @@ -70,7 +72,7 @@ class DReport { static function is_storable($dr) { - if(get_config('system', 'disable_dreport')) + if(Config::Get('system', 'disable_dreport')) return false; /** diff --git a/Zotlabs/Lib/Enotify.php b/Zotlabs/Lib/Enotify.php index 48a255e95..121ad9b09 100644 --- a/Zotlabs/Lib/Enotify.php +++ b/Zotlabs/Lib/Enotify.php @@ -6,6 +6,7 @@ namespace Zotlabs\Lib; * @brief File with functions and a class for generating system and email notifications. */ +use Zotlabs\Lib\Config; class Enotify { @@ -61,7 +62,7 @@ class Enotify { $product = t('$projectname'); // PLATFORM_NAME; $siteurl = z_root(); $thanks = t('Thank You,'); - $sitename = get_config('system','sitename'); + $sitename = Config::Get('system','sitename'); $site_admin = sprintf( t('%s Administrator'), $sitename); $opt_out1 = sprintf( t('This email was sent by %1$s at %2$s.'), t('$Projectname'), \App::get_hostname()); $opt_out2 = sprintf( t('To stop receiving these messages, please adjust your Notification Settings at %s'), z_root() . '/settings'); @@ -73,15 +74,15 @@ class Enotify { // Do not translate 'noreply' as it must be a legal 7-bit email address - $reply_email = get_config('system', 'reply_address'); + $reply_email = Config::Get('system', 'reply_address'); if(! $reply_email) $reply_email = 'noreply' . '@' . $hostname; - $sender_email = get_config('system', 'from_email'); + $sender_email = Config::Get('system', 'from_email'); if(! $sender_email) $sender_email = 'Administrator' . '@' . $hostname; - $sender_name = get_config('system', 'from_email_name'); + $sender_name = Config::Get('system', 'from_email_name'); if(! $sender_name) $sender_name = \Zotlabs\Lib\System::get_site_name(); diff --git a/Zotlabs/Lib/Libsync.php b/Zotlabs/Lib/Libsync.php index 3130290f7..a7e33ba6b 100644 --- a/Zotlabs/Lib/Libsync.php +++ b/Zotlabs/Lib/Libsync.php @@ -5,6 +5,7 @@ namespace Zotlabs\Lib; use App; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; class Libsync { @@ -135,7 +136,7 @@ class Libsync { $info['collection_members'] = $r; } - $interval = get_config('queueworker', 'queue_interval', 500000); + $interval = Config::Get('queueworker', 'queue_interval', 500000); logger('Packet: ' . print_r($info, true), LOGGER_DATA, LOG_DEBUG); @@ -157,7 +158,7 @@ class Libsync { /* $x = q("select count(outq_hash) as total from outq where outq_delivered = 0"); - if (intval($x[0]['total']) > intval(get_config('system', 'force_queue_threshold', 3000))) { + if (intval($x[0]['total']) > intval(Config::Get('system', 'force_queue_threshold', 3000))) { logger('immediate delivery deferred.', LOGGER_DEBUG, LOG_INFO); Queue::update($hash); continue; @@ -266,7 +267,7 @@ class Libsync { } if ($cat !== 'hz_delpconfig') { - set_pconfig($channel['channel_id'],$cat,$k,$v,$pconfig_updated[$k]); + set_pconfig($channel['channel_id'], $cat, $k, $v, $pconfig_updated[$k]); } } } diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php index 3495ede06..bc944c97c 100644 --- a/Zotlabs/Lib/Libzot.php +++ b/Zotlabs/Lib/Libzot.php @@ -3,10 +3,11 @@ namespace Zotlabs\Lib; use App; -use Zotlabs\Web\HTTPSig; -use Zotlabs\Access\Permissions; use Zotlabs\Access\PermissionLimits; +use Zotlabs\Access\Permissions; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; +use Zotlabs\Web\HTTPSig; require_once('include/crypto.php'); @@ -101,12 +102,12 @@ class Libzot { */ static function build_packet($channel, $type = 'activity', $recipients = null, $msg = [], $encoding = 'activitystreams', $remote_key = null, $methods = '') { - $sig_method = get_config('system', 'signature_algorithm', 'sha256'); + $sig_method = Config::Get('system', 'signature_algorithm', 'sha256'); $data = [ 'type' => $type, 'encoding' => $encoding, 'sender' => $channel['channel_hash'], - 'site_id' => self::make_xchan_hash(z_root(), get_config('system', 'pubkey')), + 'site_id' => self::make_xchan_hash(z_root(), Config::Get('system', 'pubkey')), 'version' => System::get_zot_revision(), ]; @@ -661,7 +662,7 @@ class Libzot { */ call_hooks('import_xchan', $arr); - $dirmode = intval(get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL)); + $dirmode = intval(Config::Get('system', 'directory_mode', DIRECTORY_MODE_NORMAL)); $changed = false; $what = ''; @@ -710,7 +711,7 @@ class Libzot { // if we import an entry from a site that's not ours and either or both of us is off the grid - hide the entry. /** @TODO: check if we're the same directory realm, which would mean we are allowed to see it */ - $dirmode = get_config('system', 'directory_mode'); + $dirmode = Config::Get('system', 'directory_mode'); if (((isset($arr['site']['directory_mode']) && $arr['site']['directory_mode'] === 'standalone') || ($dirmode & DIRECTORY_MODE_STANDALONE)) && ($arr['site']['url'] != z_root())) $arr['searchable'] = false; @@ -1008,7 +1009,7 @@ class Libzot { logger('Headers: ' . print_r($arr['header'], true), LOGGER_DATA, LOG_DEBUG); } - $x = Crypto::unencapsulate($x, get_config('system', 'prvkey')); + $x = Crypto::unencapsulate($x, Config::Get('system', 'prvkey')); if ($x && !is_array($x)) { $x = json_decode($x, true); @@ -1416,7 +1417,7 @@ class Libzot { $include_sys = false; if ($msg['type'] === 'activity') { - $disable_discover_tab = get_config('system', 'disable_discover_tab') || get_config('system', 'disable_discover_tab') === false; + $disable_discover_tab = Config::Get('system', 'disable_discover_tab') || Config::Get('system', 'disable_discover_tab') === false; if (!$disable_discover_tab) $include_sys = true; @@ -1632,8 +1633,8 @@ class Libzot { continue; } - $incl = get_config('system','pubstream_incl'); - $excl = get_config('system','pubstream_excl'); + $incl = Config::Get('system','pubstream_incl'); + $excl = Config::Get('system','pubstream_excl'); if(($incl || $excl) && !MessageFilter::evaluate($arr, $incl, $excl)) { $local_public = false; @@ -2568,9 +2569,14 @@ class Libzot { if (!$observer) return ''; - $parsed = parse_url($observer['xchan_url']); + $url = $observer['xchan_url']; + if (preg_match('|^https?://|', $url) === 0) { + $url = "https://{$url}"; + } + + $parsed = parse_url($url); - return $parsed['scheme'] . '://' . $parsed['host'] . (($parsed['port']) ? ':' . $parsed['port'] : '') . '/rpost?f='; + return $parsed['scheme'] . '://' . $parsed['host'] . (isset($parsed['port']) ? ':' . $parsed['port'] : '') . '/rpost?f='; } /** @@ -2924,8 +2930,8 @@ class Libzot { */ static function site_info() { - $signing_key = get_config('system', 'prvkey'); - $sig_method = get_config('system', 'signature_algorithm', 'sha256'); + $signing_key = Config::Get('system', 'prvkey'); + $sig_method = Config::Get('system', 'signature_algorithm', 'sha256'); $ret = []; $ret['site'] = []; @@ -2934,10 +2940,10 @@ class Libzot { $ret['site']['post'] = z_root() . '/zot'; $ret['site']['openWebAuth'] = z_root() . '/owa'; $ret['site']['authRedirect'] = z_root() . '/magic'; - $ret['site']['sitekey'] = get_config('system', 'pubkey'); + $ret['site']['sitekey'] = Config::Get('system', 'pubkey'); $ret['site']['directory_mode'] = 'normal'; - $dirmode = get_config('system', 'directory_mode'); + $dirmode = Config::Get('system', 'directory_mode'); if ($dirmode == DIRECTORY_MODE_PRIMARY) $ret['site']['directory_mode'] = 'primary'; @@ -2956,7 +2962,7 @@ class Libzot { if ($dirmode != DIRECTORY_MODE_STANDALONE) { - $register_policy = intval(get_config('system', 'register_policy')); + $register_policy = intval(Config::Get('system', 'register_policy')); if ($register_policy == REGISTER_CLOSED) $ret['site']['register_policy'] = 'closed'; @@ -2966,7 +2972,7 @@ class Libzot { $ret['site']['register_policy'] = 'open'; - $access_policy = intval(get_config('system', 'access_policy')); + $access_policy = intval(Config::Get('system', 'access_policy')); if ($access_policy == ACCESS_PRIVATE) $ret['site']['access_policy'] = 'private'; @@ -2982,7 +2988,7 @@ class Libzot { require_once('include/channel.php'); $ret['site']['channels'] = channel_total(); - $ret['site']['admin'] = get_config('system', 'admin_email'); + $ret['site']['admin'] = Config::Get('system', 'admin_email'); $visible_plugins = []; if (is_array(App::$plugins) && count(App::$plugins)) { @@ -2993,10 +2999,10 @@ class Libzot { } $ret['site']['plugins'] = $visible_plugins; - $ret['site']['sitehash'] = get_config('system', 'location_hash'); - $ret['site']['sitename'] = get_config('system', 'sitename'); - $ret['site']['sellpage'] = get_config('system', 'sellpage'); - $ret['site']['location'] = get_config('system', 'site_location'); + $ret['site']['sitehash'] = Config::Get('system', 'location_hash'); + $ret['site']['sitename'] = Config::Get('system', 'sitename'); + $ret['site']['sellpage'] = Config::Get('system', 'sellpage'); + $ret['site']['location'] = Config::Get('system', 'site_location'); $ret['site']['realm'] = get_directory_realm(); $ret['site']['project'] = System::get_platform_name(); $ret['site']['version'] = System::get_project_version(); diff --git a/Zotlabs/Lib/Libzotdir.php b/Zotlabs/Lib/Libzotdir.php index ca3902a9e..25f308fc2 100644 --- a/Zotlabs/Lib/Libzotdir.php +++ b/Zotlabs/Lib/Libzotdir.php @@ -2,6 +2,7 @@ namespace Zotlabs\Lib; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Zotfinger; use Zotlabs\Lib\Webfinger; @@ -20,7 +21,7 @@ class Libzotdir { static function find_upstream_directory($dirmode) { - $preferred = get_config('system','directory_server'); + $preferred = Config::Get('system','directory_server'); // Thwart attempts to use a private directory @@ -47,17 +48,17 @@ class Libzotdir { $directory_fallback_servers = get_directory_fallback_servers(); - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); if ($dirmode == DIRECTORY_MODE_NORMAL) { $toss = mt_rand(0,count($directory_fallback_servers)); $preferred = $directory_fallback_servers[$toss]; if(! $preferred) { $preferred = DIRECTORY_FALLBACK_MASTER; } - set_config('system','directory_server',$preferred); + Config::Set('system','directory_server',$preferred); } else { - set_config('system','directory_server',z_root()); + Config::Set('system','directory_server',z_root()); } } if($preferred) { @@ -77,7 +78,7 @@ class Libzotdir { static function check_upstream_directory() { - $directory = get_config('system', 'directory_server'); + $directory = Config::Get('system', 'directory_server'); // it's possible there is no directory server configured and the local hub is being used. // If so, default to preserving the absence of a specific server setting. @@ -94,7 +95,7 @@ class Libzotdir { } if (! $isadir) - set_config('system', 'directory_server', ''); + Config::Set('system', 'directory_server', ''); } @@ -106,7 +107,7 @@ class Libzotdir { $ret = ((array_key_exists($setting,$_SESSION)) ? intval($_SESSION[$setting]) : false); if($ret === false) - $ret = get_config('directory', $setting); + $ret = Config::Get('directory', $setting); // 'safemode' is the default if there is no observer or no established preference. @@ -114,7 +115,7 @@ class Libzotdir { if($setting === 'safemode' && $ret === false) $ret = 1; - if($setting === 'globaldir' && intval(get_config('system','localdir_hide'))) + if($setting === 'globaldir' && intval(Config::Get('system','localdir_hide'))) $ret = 1; return $ret; @@ -133,7 +134,7 @@ class Libzotdir { $globaldir = self::get_directory_setting($observer, 'globaldir'); $pubforums = self::get_directory_setting($observer, 'pubforums'); - $hide_local = intval(get_config('system','localdir_hide')); + $hide_local = intval(Config::Get('system','localdir_hide')); if($hide_local) $globaldir = 1; @@ -141,7 +142,7 @@ class Libzotdir { // Build urls without order and pubforums so it's easy to tack on the changed value // Probably there's an easier way to do this - $directory_sort_order = get_config('system','directory_sort_order'); + $directory_sort_order = Config::Get('system','directory_sort_order'); if(! $directory_sort_order) $directory_sort_order = 'date'; @@ -232,7 +233,7 @@ class Libzotdir { if (! $r) return; - $dir_trusted_hosts = array_merge(get_directory_fallback_servers(), get_config('system', 'trusted_directory_servers', [])); + $dir_trusted_hosts = array_merge(get_directory_fallback_servers(), Config::Get('system', 'trusted_directory_servers', [])); foreach ($r as $rr) { if (! $rr['site_directory']) @@ -244,7 +245,7 @@ class Libzotdir { // It will take about a month for a new directory to obtain the full current repertoire of channels. /** @FIXME Go back and pick up earlier ratings if this is a new directory server. These do not get refreshed. */ - $token = get_config('system','realm_token'); + $token = Config::Get('system','realm_token'); $syncdate = (($rr['site_sync'] <= NULL_DATE) ? datetime_convert('UTC','UTC','now - 2 days') : $rr['site_sync']); $x = z_fetch_url($rr['site_directory'] . '?f=&sync=' . urlencode($syncdate) . (($token) ? '&t=' . $token : '')); @@ -696,7 +697,7 @@ class Libzotdir { static function update($hash, $addr, $bump_date = true, $flag = null) { - $dirmode = intval(get_config('system', 'directory_mode')); + $dirmode = intval(Config::Get('system', 'directory_mode')); if($dirmode == DIRECTORY_MODE_NORMAL) { return; diff --git a/Zotlabs/Lib/QueueWorker.php b/Zotlabs/Lib/QueueWorker.php index 68e747b0f..24114438e 100644 --- a/Zotlabs/Lib/QueueWorker.php +++ b/Zotlabs/Lib/QueueWorker.php @@ -4,6 +4,9 @@ namespace Zotlabs\Lib; use Ramsey\Uuid\Uuid; use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Zotlabs\Lib\Config; + +require_once 'include/dba/dba_transaction.php'; class QueueWorker { @@ -28,18 +31,6 @@ class QueueWorker { 'Expire' ]; - private static function qstart() { - q('START TRANSACTION'); - } - - private static function qcommit() { - q("COMMIT"); - } - - private static function qrollback() { - q("ROLLBACK"); - } - public static function Summon($argv) { if ($argv[0] !== 'Queueworker') { @@ -65,7 +56,7 @@ class QueueWorker { logger('queueworker_stats_summon: cmd:' . $argv[0] . ' ' . 'timestamp:' . time()); - self::qstart(); + $transaction = new \DbaTransaction(\DBA::$dba); $r = q("INSERT INTO workerq (workerq_priority, workerq_data, workerq_uuid, workerq_cmd) VALUES (%d, '%s', '%s', '%s')", intval($priority), $workinfo_json, @@ -73,18 +64,18 @@ class QueueWorker { dbesc($argv[0]) ); if (!$r) { - self::qrollback(); + // Transaction is autmatically rolled back on return logger("INSERT FAILED", LOGGER_DEBUG); return; } - self::qcommit(); + $transaction->commit(); logger('INSERTED: ' . $workinfo_json, LOGGER_DEBUG); } $workers = self::GetWorkerCount(); if ($workers < self::$maxworkers) { logger($workers . '/' . self::$maxworkers . ' workers active', LOGGER_DEBUG); - $phpbin = get_config('system', 'phpbin', 'php'); + $phpbin = Config::Get('system', 'phpbin', 'php'); proc_run($phpbin, 'Zotlabs/Daemon/Master.php', ['Queueworker']); } } @@ -111,7 +102,7 @@ class QueueWorker { return; } - self::qstart(); + $transaction = new \DbaTransaction(\DBA::$dba); $r = q("INSERT INTO workerq (workerq_priority, workerq_data, workerq_uuid, workerq_cmd) VALUES (%d, '%s', '%s', '%s')", intval($priority), $workinfo_json, @@ -119,11 +110,11 @@ class QueueWorker { dbesc($argv[0]) ); if (!$r) { - self::qrollback(); + // Transaction is automatically rolled back on return logger("Insert failed: " . $workinfo_json, LOGGER_DEBUG); return; } - self::qcommit(); + $transaction->commit(); logger('INSERTED: ' . $workinfo_json, LOGGER_DEBUG); } @@ -132,18 +123,18 @@ class QueueWorker { public static function GetWorkerCount() { if (self::$maxworkers == 0) { - self::$maxworkers = get_config('queueworker', 'max_queueworkers', 4); + self::$maxworkers = Config::Get('queueworker', 'max_queueworkers', 4); self::$maxworkers = self::$maxworkers > 3 ? self::$maxworkers : 4; } if (self::$workermaxage == 0) { - self::$workermaxage = get_config('queueworker', 'max_queueworker_age'); + self::$workermaxage = Config::Get('queueworker', 'max_queueworker_age'); self::$workermaxage = self::$workermaxage > 120 ? self::$workermaxage : 300; } - self::qstart(); + $transaction = new \DbaTransaction(\DBA::$dba); // skip locked is preferred but is not supported by mariadb < 10.6 which is still used a lot - hence make it optional - $sql_quirks = ((get_config('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT'); + $sql_quirks = ((Config::Get('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT'); $r = q("SELECT workerq_id FROM workerq WHERE workerq_reservationid IS NOT NULL AND workerq_processtimeout < %s FOR UPDATE $sql_quirks", db_utcnow() @@ -158,7 +149,7 @@ class QueueWorker { $u = dbq("update workerq set workerq_reservationid = null where workerq_id in ($ids)"); } - self::qcommit(); + $transaction->commit(); //q("update workerq set workerq_reservationid = null where workerq_reservationid is not null and workerq_processtimeout < %s", //db_utcnow() @@ -196,15 +187,15 @@ class QueueWorker { private static function getWorkId() { self::GetWorkerCount(); - self::qstart(); + $transaction = new \DbaTransaction(\DBA::$dba); // skip locked is preferred but is not supported by mariadb < 10.6 which is still used a lot - hence make it optional - $sql_quirks = ((get_config('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT'); + $sql_quirks = ((Config::Get('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT'); $work = dbq("SELECT workerq_id, workerq_cmd FROM workerq WHERE workerq_reservationid IS NULL ORDER BY workerq_priority DESC, workerq_id ASC LIMIT 1 FOR UPDATE $sql_quirks"); if (!$work) { - self::qrollback(); + // Transaction automatically rolled back on return return false; } @@ -224,24 +215,24 @@ class QueueWorker { ); if (!$work) { - self::qrollback(); + // Transaction automatically rolled back on return logger("Could not update workerq.", LOGGER_DEBUG); return false; } logger("GOTWORK: " . json_encode($work), LOGGER_DEBUG); - self::qcommit(); + $transaction->commit(); return $id; } public static function Process() { - $sleep = intval(get_config('queueworker', 'queue_worker_sleep', 100)); - $auto_queue_worker_sleep = get_config('queueworker', 'auto_queue_worker_sleep', 0); + $sleep = intval(Config::Get('queueworker', 'queue_worker_sleep', 100)); + $auto_queue_worker_sleep = Config::Get('queueworker', 'auto_queue_worker_sleep', 0); if (!self::GetWorkerID()) { if ($auto_queue_worker_sleep) { - set_config('queueworker', 'queue_worker_sleep', $sleep + 100); + Config::Set('queueworker', 'queue_worker_sleep', $sleep + 100); } logger('Unable to get worker ID. Exiting.', LOGGER_DEBUG); @@ -250,7 +241,7 @@ class QueueWorker { if ($auto_queue_worker_sleep && $sleep > 100) { $next_sleep = $sleep - 100; - set_config('queueworker', 'queue_worker_sleep', (($next_sleep < 100) ? 100 : $next_sleep)); + Config::Set('queueworker', 'queue_worker_sleep', (($next_sleep < 100) ? 100 : $next_sleep)); } $jobs = 0; @@ -259,7 +250,7 @@ class QueueWorker { self::$workersleep = $sleep; self::$workersleep = ((intval(self::$workersleep) > 100) ? intval(self::$workersleep) : 100); - if (function_exists('sys_getloadavg') && get_config('queueworker', 'load_average_sleep')) { + if (function_exists('sys_getloadavg') && Config::Get('queueworker', 'load_average_sleep')) { // very experimental! $load_average_sleep = true; } @@ -287,7 +278,7 @@ class QueueWorker { if ($workers < self::$maxworkers) { logger($workers . '/' . self::$maxworkers . ' workers active', LOGGER_DEBUG); - $phpbin = get_config('system', 'phpbin', 'php'); + $phpbin = Config::Get('system', 'phpbin', 'php'); proc_run($phpbin, 'Zotlabs/Daemon/Master.php', ['Queueworker']); } diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php index 8f364e945..1082bf642 100644 --- a/Zotlabs/Lib/ThreadItem.php +++ b/Zotlabs/Lib/ThreadItem.php @@ -3,8 +3,9 @@ namespace Zotlabs\Lib; use App; -use Zotlabs\Lib\Apps; use Zotlabs\Access\AccessList; +use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; require_once('include/text.php'); @@ -41,9 +42,7 @@ class ThreadItem { $this->data = $data; $this->toplevel = ($this->get_id() == $this->get_data_value('parent')); - $this->threaded = get_config('system','thread_allow'); - - $observer = \App::get_observer(); + $this->threaded = Config::Get('system','thread_allow'); // Prepare the children if(isset($data['children'])) { @@ -70,7 +69,7 @@ class ThreadItem { // allow a site to configure the order and content of the reaction emoji list if($this->toplevel) { - $x = get_config('system','reactions'); + $x = Config::Get('system','reactions'); if($x && is_array($x) && count($x)) { $this->reactions = $x; } @@ -347,12 +346,12 @@ class ThreadItem { $dreport = ''; - $keep_reports = intval(get_config('system','expire_delivery_reports')); + $keep_reports = intval(Config::Get('system','expire_delivery_reports')); if($keep_reports === 0) $keep_reports = 10; $dreport_link = ''; - if((intval($item['item_type']) == ITEM_TYPE_POST) && (! get_config('system','disable_dreport')) && strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC',"now - $keep_reports days")) > 0) { + if((intval($item['item_type']) == ITEM_TYPE_POST) && (! Config::Get('system','disable_dreport')) && strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC',"now - $keep_reports days")) > 0) { $dreport = t('Delivery Report'); $dreport_link = '?mid=' . $item['mid']; } @@ -363,7 +362,8 @@ class ThreadItem { localize_item($item); - $body = prepare_body($item,true); + $opts = (($item['resource_type'] === 'event') ? ['is_event_item' => true] : []); + $body = prepare_body($item, true, $opts); // $viewthread (below) is only valid in list mode. If this is a channel page, build the thread viewing link // since we can't depend on llink or plink pointing to the right local location. @@ -397,7 +397,7 @@ class ThreadItem { $json_mids = json_encode($mids); // Pinned item processing - $allowed_type = (in_array($item['item_type'], get_config('system', 'pin_types', [ ITEM_TYPE_POST ])) ? true : false); + $allowed_type = (in_array($item['item_type'], Config::Get('system', 'pin_types', [ ITEM_TYPE_POST ])) ? true : false); $pinned_items = ($allowed_type ? get_pconfig($item['uid'], 'pinned', $item['item_type'], []) : []); $pinned = ((!empty($pinned_items) && in_array($midb64, $pinned_items)) ? true : false); @@ -549,7 +549,7 @@ class ThreadItem { $result['children'] = array(); $nb_children = count($children); - $visible_comments = get_config('system','expanded_comments'); + $visible_comments = Config::Get('system','expanded_comments'); if($visible_comments === false) $visible_comments = 3; @@ -826,7 +826,7 @@ class ThreadItem { */ private function get_comment_box() { - if(!$this->is_toplevel() && !get_config('system','thread_allow')) { + if(!$this->is_toplevel() && !Config::Get('system','thread_allow')) { return ''; } @@ -874,7 +874,7 @@ class ThreadItem { '$feature_encrypt' => ((feature_enabled($conv->get_profile_owner(),'content_encrypt')) ? true : false), '$encrypt' => t('Encrypt text'), '$cipher' => $conv->get_cipher(), - '$sourceapp' => \App::$sourcename, + '$sourceapp' => App::$sourcename, '$observer' => get_observer_hash(), '$anoncomments' => ((in_array($conv->get_mode(), ['channel', 'display', 'cards', 'articles']) && perm_is_allowed($conv->get_profile_owner(),'','post_comments')) ? true : false), '$anonname' => [ 'anonname', t('Your full name (required)') ], diff --git a/Zotlabs/Lib/Traits/HelpHelperTrait.php b/Zotlabs/Lib/Traits/HelpHelperTrait.php new file mode 100644 index 000000000..b7711bbd5 --- /dev/null +++ b/Zotlabs/Lib/Traits/HelpHelperTrait.php @@ -0,0 +1,68 @@ +<?php + +namespace Zotlabs\Lib\Traits; + +use CommerceGuys\Intl\Language\LanguageRepository; + +trait HelpHelperTrait { + + // PHP versions before 8.2 does not support trait constants, + // Leave this commented out until we drop support for PHP 8.1. + // + // const VALID_FILE_EXT = ['md', 'bb', 'html']; + + private string $file_name = ''; + private string $file_type = ''; + + /** + * Determines help language. + * + * If the language was specified in the URL, override the language preference + * of the browser. Default to English if both of these are absent. + * + * Updates the `$lang` property of the module. + */ + private function determine_help_language() { + + $language_repository = new LanguageRepository; + $languages = $language_repository->getList(); + + if(array_key_exists(argv(1), $languages)) { + $lang = argv(1); + $from_url = true; + } else { + $lang = \App::$language; + if(! isset($lang)) + $lang = 'en'; + + $from_url = false; + } + + $this->lang = array('language' => $lang, 'from_url' => $from_url); + } + + /** + * Find the full path name of the file, given it's base path and + * the language of the request. + * + * @param string $base_path The path of the file to find, relative to the + * doc root path, and without the extension. + */ + private function find_help_file(string $base_path, string $lang): void { + + // Use local variable until we can use trait constants. + $valid_file_ext = ['md', 'bb', 'html']; + + $base_path = "doc/{$lang}/${base_path}"; + + foreach ($valid_file_ext as $ext) { + $path = "{$base_path}.{$ext}"; + if (file_exists($path)) { + $this->file_name = $path; + $this->file_type = $ext; + + break; + } + } + } +} diff --git a/Zotlabs/Lib/Zotfinger.php b/Zotlabs/Lib/Zotfinger.php index ccf64d6d1..2a16fc8cf 100644 --- a/Zotlabs/Lib/Zotfinger.php +++ b/Zotlabs/Lib/Zotfinger.php @@ -2,6 +2,7 @@ namespace Zotlabs\Lib; +use Zotlabs\Lib\Config; use Zotlabs\Web\HTTPSig; class Zotfinger { @@ -75,7 +76,7 @@ class Zotfinger { $result['data'] = json_decode($x['body'],true); if($result['data'] && is_array($result['data']) && array_key_exists('encrypted',$result['data']) && $result['data']['encrypted']) { - $result['data'] = json_decode(Crypto::unencapsulate($result['data'],get_config('system','prvkey')),true); + $result['data'] = json_decode(Crypto::unencapsulate($result['data'],Config::Get('system','prvkey')),true); } logger('decrypted: ' . print_r($result,true), LOGGER_DATA); diff --git a/Zotlabs/Module/Acl.php b/Zotlabs/Module/Acl.php index b98f5621e..1de7a3d02 100644 --- a/Zotlabs/Module/Acl.php +++ b/Zotlabs/Module/Acl.php @@ -2,8 +2,9 @@ namespace Zotlabs\Module; -use Zotlabs\Lib\Libzotdir; use Zotlabs\Lib\AccessList; +use Zotlabs\Lib\Config; +use Zotlabs\Lib\Libzotdir; require_once 'include/acl_selectors.php'; @@ -414,7 +415,7 @@ class Acl extends \Zotlabs\Web\Controller { return; } - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); $search = ((x($_REQUEST,'search')) ? htmlentities($_REQUEST['search'],ENT_COMPAT,'UTF-8',false) : ''); if(! $search || mb_strlen($search) < 2) return array(); @@ -443,7 +444,7 @@ class Acl extends \Zotlabs\Web\Controller { $url = $directory['url'] . '/dirsearch'; } - $token = get_config('system','realm_token'); + $token = Config::Get('system','realm_token'); $count = (x($_REQUEST,'count') ? $_REQUEST['count'] : 100); if($url) { diff --git a/Zotlabs/Module/Admin.php b/Zotlabs/Module/Admin.php index 59a9e22b2..89eaeccfe 100644 --- a/Zotlabs/Module/Admin.php +++ b/Zotlabs/Module/Admin.php @@ -8,6 +8,8 @@ namespace Zotlabs\Module; +use Zotlabs\Lib\Config; + require_once('include/account.php'); /** @@ -149,7 +151,7 @@ class Admin extends \Zotlabs\Web\Controller { '$vmaster' => array( t('Repository version (master)'), $vmaster), '$vdev' => array( t('Repository version (dev)'), $vdev), '$upgrade' => $upgrade, - '$build' => get_config('system', 'db_version') + '$build' => Config::Get('system', 'db_version') )); } diff --git a/Zotlabs/Module/Admin/Accounts.php b/Zotlabs/Module/Admin/Accounts.php index b067b4bf6..6f7cb0311 100644 --- a/Zotlabs/Module/Admin/Accounts.php +++ b/Zotlabs/Module/Admin/Accounts.php @@ -2,7 +2,7 @@ namespace Zotlabs\Module\Admin; - +use Zotlabs\Lib\Config; class Accounts { @@ -76,7 +76,7 @@ class Accounts { if ( $ac['success'] ) { $rc .= '✔'; - $auto_create = get_config('system','auto_channel_create',1); + $auto_create = Config::Get('system','auto_channel_create',1); if($auto_create) { $reonar = json_decode($rs[0]['reg_stuff'], true); @@ -87,7 +87,7 @@ class Accounts { if($reonar['chan.did1']) set_aconfig($ac['account']['account_id'], 'register', 'channel_address', $reonar['chan.did1']); - $permissions_role = get_config('system','default_permissions_role'); + $permissions_role = Config::Get('system','default_permissions_role'); if($permissions_role) set_aconfig($ac['account']['account_id'], 'register', 'permissions_role', $permissions_role); diff --git a/Zotlabs/Module/Admin/Addons.php b/Zotlabs/Module/Admin/Addons.php index e088353e3..b7cfb651c 100644 --- a/Zotlabs/Module/Admin/Addons.php +++ b/Zotlabs/Module/Admin/Addons.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module\Admin; use App; +use \Zotlabs\Lib\Config; use \Zotlabs\Storage\GitRepo; use \Michelf\MarkdownExtra; @@ -276,7 +277,7 @@ class Addons { if ($idz !== false) { unset(App::$plugins[$idz]); uninstall_plugin($plugin); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); } } $info['disabled'] = 1-intval($x); @@ -297,7 +298,7 @@ class Addons { $pinstalled = true; info( sprintf( t("Plugin %s enabled."), $plugin ) ); } - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); if($pinstalled) { @require_once("addon/$plugin/$plugin.php"); @@ -395,7 +396,7 @@ class Addons { if ($idz !== false) { unset(App::$plugins[$idz]); uninstall_plugin($id); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); } } $info['disabled'] = 1-intval($x); diff --git a/Zotlabs/Module/Admin/Channels.php b/Zotlabs/Module/Admin/Channels.php index c6b7ad17a..52b661420 100644 --- a/Zotlabs/Module/Admin/Channels.php +++ b/Zotlabs/Module/Admin/Channels.php @@ -14,7 +14,7 @@ class Channels { */ function post() { - $channels = ( x($_POST, 'channel') ? $_POST['channel'] : Array() ); + $channels = (x($_POST, 'channel') ? $_POST['channel'] : []); check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels'); @@ -22,11 +22,28 @@ class Channels { if(x($_POST, 'page_channels_block')) { foreach($channels as $uid) { - q("UPDATE channel SET channel_pageflags = ( channel_pageflags $xor %d ) where channel_id = %d", - intval(PAGE_CENSORED), - intval( $uid ) + $channel = channelx_by_n($uid); + + if (!$channel) { + notice( t('Channel not found') . EOL); + continue; + } + + $pflags = $channel['channel_pageflags'] ^ PAGE_CENSORED; + + q("UPDATE channel SET channel_pageflags = %d where channel_id = %d", + intval($pflags), + intval($uid) ); + \Zotlabs\Daemon\Master::Summon(array('Directory', $uid, 'nopush')); + + $censored = (($pflags & PAGE_CENSORED) ? 1 : 0); + + q("UPDATE xchan SET xchan_censored = %d WHERE xchan_hash = '%s'", + intval($censored), + dbesc($channel['channel_hash']) + ); } notice( sprintf( tt("%s channel censored/uncensored", "%s channels censored/uncensored", count($channels)), count($channels)) ); } @@ -57,11 +74,9 @@ class Channels { function get() { if(argc() > 2) { $uid = argv(3); - $channel = q("SELECT * FROM channel WHERE channel_id = %d", - intval($uid) - ); + $channel = channelx_by_n($uid); - if(! $channel) { + if(!$channel) { notice( t('Channel not found') . EOL); goaway(z_root() . '/admin/channels' ); } @@ -72,30 +87,37 @@ class Channels { // delete channel channel_remove($uid,true); - notice( sprintf(t("Channel '%s' deleted"), $channel[0]['channel_name']) . EOL); + notice( sprintf(t("Channel '%s' deleted"), $channel['channel_name']) . EOL); }; break; case "block":{ check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels', 't'); - $pflags = $channel[0]['channel_pageflags'] ^ PAGE_CENSORED; + $pflags = $channel['channel_pageflags'] ^ PAGE_CENSORED; q("UPDATE channel SET channel_pageflags = %d where channel_id = %d", intval($pflags), - intval( $uid ) + intval($uid) ); \Zotlabs\Daemon\Master::Summon(array('Directory',$uid,'nopush')); - notice( sprintf( (($pflags & PAGE_CENSORED) ? t("Channel '%s' censored"): t("Channel '%s' uncensored")) , $channel[0]['channel_name'] . ' (' . $channel[0]['channel_address'] . ')' ) . EOL); + $censored = (($pflags & PAGE_CENSORED) ? 1 : 0); + + q("UPDATE xchan SET xchan_censored = %d WHERE xchan_hash = '%s'", + intval($censored), + dbesc($channel['channel_hash']) + ); + + notice( sprintf( (($censored) ? t("Channel '%s' censored"): t("Channel '%s' uncensored")) , $channel['channel_name'] . ' (' . $channel['channel_address'] . ')' ) . EOL); }; break; case "code":{ check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels', 't'); - $pflags = $channel[0]['channel_pageflags'] ^ PAGE_ALLOWCODE; + $pflags = $channel['channel_pageflags'] ^ PAGE_ALLOWCODE; q("UPDATE channel SET channel_pageflags = %d where channel_id = %d", intval($pflags), - intval( $uid ) + intval($uid) ); - notice( sprintf( (($pflags & PAGE_ALLOWCODE) ? t("Channel '%s' code allowed"): t("Channel '%s' code disallowed")) , $channel[0]['channel_name'] . ' (' . $channel[0]['channel_address'] . ')' ) . EOL); + notice( sprintf( (($pflags & PAGE_ALLOWCODE) ? t("Channel '%s' code allowed"): t("Channel '%s' code disallowed")) , $channel['channel_name'] . ' (' . $channel['channel_address'] . ')' ) . EOL); }; break; default: diff --git a/Zotlabs/Module/Admin/Dbsync.php b/Zotlabs/Module/Admin/Dbsync.php index b68e7bbc2..9f202993d 100644 --- a/Zotlabs/Module/Admin/Dbsync.php +++ b/Zotlabs/Module/Admin/Dbsync.php @@ -2,7 +2,7 @@ namespace Zotlabs\Module\Admin; - +use Zotlabs\Lib\Config; class Dbsync { @@ -12,10 +12,10 @@ class Dbsync { if(argc() > 3 && intval(argv(3)) && argv(2) === 'mark') { // remove the old style config if it exists - del_config('database', 'update_r' . intval(argv(3))); - set_config('database', '_' . intval(argv(3)), 'success'); - if(intval(get_config('system','db_version')) < intval(argv(3))) - set_config('system','db_version',intval(argv(3))); + Config::Delete('database', 'update_r' . intval(argv(3))); + Config::Set('database', '_' . intval(argv(3)), 'success'); + if(intval(Config::Get('system','db_version')) < intval(argv(3))) + Config::Set('system','db_version',intval(argv(3))); info( t('Update has been marked successful') . EOL); goaway(z_root() . '/admin/dbsync'); } @@ -33,7 +33,7 @@ class Dbsync { } elseif($retval === UPDATE_SUCCESS) { $o .= sprintf( t('Update %s was successfully applied.'), $s); - set_config('database',$s, 'success'); + Config::Set('database',$s, 'success'); } else $o .= sprintf( t('Verifying update %s did not return a status. Unknown if it succeeded.'), $s); @@ -60,7 +60,7 @@ class Dbsync { } elseif($retval === UPDATE_SUCCESS) { $o .= sprintf( t('Update %s was successfully applied.'), $s); - set_config('database',$s, 'success'); + Config::Set('database',$s, 'success'); } else $o .= sprintf( t('Update %s did not return a status. It cannot be determined if it was successful.'), $s); diff --git a/Zotlabs/Module/Admin/Features.php b/Zotlabs/Module/Admin/Features.php index 504caae79..e0b3a3fd4 100644 --- a/Zotlabs/Module/Admin/Features.php +++ b/Zotlabs/Module/Admin/Features.php @@ -2,53 +2,53 @@ namespace Zotlabs\Module\Admin; - +use Zotlabs\Lib\Config; class Features { - + function post() { - + check_form_security_token_redirectOnErr('/admin/features', 'admin_manage_features'); - + logger('postvars: ' . print_r($_POST,true)); - + $arr = array(); $features = get_features(false); - + foreach($features as $fname => $fdata) { foreach(array_slice($fdata,1) as $f) { $feature = $f[0]; - + if(array_key_exists('feature_' . $feature,$_POST)) $val = intval($_POST['feature_' . $feature]); else $val = 0; - set_config('feature',$feature,$val); - + Config::Set('feature',$feature,$val); + if(array_key_exists('featurelock_' . $feature,$_POST)) - set_config('feature_lock',$feature,$val); + Config::Set('feature_lock',$feature,$val); else - del_config('feature_lock',$feature); + Config::Delete('feature_lock',$feature); } } - + goaway(z_root() . '/admin/features' ); - + } - + function get() { - + if((argc() > 1) && (argv(1) === 'features')) { $arr = array(); $features = get_features(false); - + foreach($features as $fname => $fdata) { $arr[$fname] = array(); $arr[$fname][0] = $fdata[0]; foreach(array_slice($fdata,1) as $f) { - - $set = get_config('feature',$f[0]); + + $set = Config::Get('feature',$f[0]); if($set === false) $set = $f[3]; $arr[$fname][1][] = array( @@ -57,7 +57,7 @@ class Features { ); } } - + $tpl = get_markup_template("admin_settings_features.tpl"); $o .= replace_macros($tpl, array( '$form_security_token' => get_form_security_token("admin_manage_features"), @@ -65,10 +65,10 @@ class Features { '$features' => $arr, '$submit' => t('Submit'), )); - + return $o; } } - -}
\ No newline at end of file + +} diff --git a/Zotlabs/Module/Admin/Logs.php b/Zotlabs/Module/Admin/Logs.php index c83fc6a9a..73c890e26 100644 --- a/Zotlabs/Module/Admin/Logs.php +++ b/Zotlabs/Module/Admin/Logs.php @@ -2,11 +2,12 @@ namespace Zotlabs\Module\Admin; +use Zotlabs\Lib\Config; class Logs { - + /** * @brief POST handler for logs admin page. * @@ -15,20 +16,20 @@ class Logs { function post() { if (x($_POST, 'page_logs')) { check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs'); - + $logfile = ((x($_POST,'logfile')) ? notags(trim($_POST['logfile'])) : ''); $debugging = ((x($_POST,'debugging')) ? true : false); $loglevel = ((x($_POST,'loglevel')) ? intval(trim($_POST['loglevel'])) : 0); - - set_config('system','logfile', $logfile); - set_config('system','debugging', $debugging); - set_config('system','loglevel', $loglevel); + + Config::Set('system','logfile', $logfile); + Config::Set('system','debugging', $debugging); + Config::Set('system','loglevel', $loglevel); } - + info( t('Log settings updated.') ); goaway(z_root() . '/admin/logs' ); } - + /** * @brief Logs admin page. * @@ -36,7 +37,7 @@ class Logs { */ function get() { - + $log_choices = Array( LOGGER_NORMAL => 'Normal', LOGGER_TRACE => 'Trace', @@ -44,15 +45,15 @@ class Logs { LOGGER_DATA => 'Data', LOGGER_ALL => 'All' ); - + $t = get_markup_template('admin_logs.tpl'); - - $f = get_config('system', 'logfile'); - + + $f = Config::Get('system', 'logfile'); + $data = ''; - + if(!file_exists($f)) { - $data = t("Error trying to open <strong>$f</strong> log file.\r\n<br/>Check to see if file $f exist and is + $data = t("Error trying to open <strong>$f</strong> log file.\r\n<br/>Check to see if file $f exist and is readable."); } else { @@ -77,7 +78,7 @@ class Logs { fclose($fp); } } - + return replace_macros($t, array( '$title' => t('Administration'), '$page' => t('Logs'), @@ -85,17 +86,17 @@ class Logs { '$clear' => t('Clear'), '$data' => $data, '$baseurl' => z_root(), - '$logname' => get_config('system','logfile'), - + '$logname' => Config::Get('system','logfile'), + // name, label, value, help string, extra data... - '$debugging' => array('debugging', t("Debugging"),get_config('system','debugging'), ""), - '$logfile' => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your top-level webserver directory.")), - '$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices), - + '$debugging' => array('debugging', t("Debugging"),Config::Get('system','debugging'), ""), + '$logfile' => array('logfile', t("Log file"), Config::Get('system','logfile'), t("Must be writable by web server. Relative to your top-level webserver directory.")), + '$loglevel' => array('loglevel', t("Log level"), Config::Get('system','loglevel'), "", $log_choices), + '$form_security_token' => get_form_security_token('admin_logs'), )); } - -}
\ No newline at end of file + +} diff --git a/Zotlabs/Module/Admin/Profs.php b/Zotlabs/Module/Admin/Profs.php index eb2501d43..9965cab19 100644 --- a/Zotlabs/Module/Admin/Profs.php +++ b/Zotlabs/Module/Admin/Profs.php @@ -2,11 +2,12 @@ namespace Zotlabs\Module\Admin; +use Zotlabs\Lib\Config; class Profs { function post() { - + if(array_key_exists('basic',$_REQUEST)) { $arr = explode(',',$_REQUEST['basic']); array_walk($arr,'array_trim'); @@ -19,9 +20,9 @@ class Profs { } } if(! $narr) - del_config('system','profile_fields_basic'); + Config::Delete('system','profile_fields_basic'); else - set_config('system','profile_fields_basic',$narr); + Config::Set('system','profile_fields_basic',$narr); if(array_key_exists('advanced',$_REQUEST)) { @@ -36,15 +37,15 @@ class Profs { } } if(! $narr) - del_config('system','profile_fields_advanced'); + Config::Delete('system','profile_fields_advanced'); else - set_config('system','profile_fields_advanced',$narr); + Config::Set('system','profile_fields_advanced',$narr); } goaway(z_root() . '/admin/profs'); } - - + + if(array_key_exists('field_name',$_REQUEST)) { if($_REQUEST['id']) { $r = q("update profdef set field_name = '%s', field_type = '%s', field_desc = '%s' field_help = '%s', field_inputs = '%s' where id = %d", @@ -66,24 +67,24 @@ class Profs { ); } } - - + + // add to chosen array basic or advanced - + goaway(z_root() . '/admin/profs'); } - + function get() { - + if((argc() > 3) && argv(2) == 'drop' && intval(argv(3))) { $r = q("delete from profdef where id = %d", intval(argv(3)) ); // remove from allowed fields - - goaway(z_root() . '/admin/profs'); + + goaway(z_root() . '/admin/profs'); } - + if((argc() > 2) && argv(2) === 'new') { return replace_macros(get_markup_template('profdef_edit.tpl'),array( '$header' => t('New Profile Field'), @@ -94,7 +95,7 @@ class Profs { '$submit' => t('Save') )); } - + if((argc() > 2) && intval(argv(2))) { $r = q("select * from profdef where id = %d limit 1", intval(argv(2)) @@ -103,7 +104,7 @@ class Profs { notice( t('Field definition not found') . EOL); goaway(z_root() . '/admin/profs'); } - + return replace_macros(get_markup_template('profdef_edit.tpl'),array( '$id' => intval($r[0]['id']), '$header' => t('Edit Profile Field'), @@ -114,7 +115,7 @@ class Profs { '$submit' => t('Save') )); } - + $basic = ''; $barr = array(); $fields = get_profile_fields_basic(); @@ -129,7 +130,7 @@ class Profs { $barr[] = trim($k); } } - + $advanced = ''; $fields = get_profile_fields_advanced(); if(! $fields) @@ -143,7 +144,7 @@ class Profs { $advanced .= trim($k); } } - + $all = ''; $fields = get_profile_fields_advanced(1); if($fields) { @@ -153,7 +154,7 @@ class Profs { $all .= trim($k); } } - + $r = q("select * from profdef where true"); if($r) { foreach($r as $rr) { @@ -162,8 +163,8 @@ class Profs { $all .= $rr['field_name']; } } - - + + $o = replace_macros(get_markup_template('admin_profiles.tpl'),array( '$title' => t('Profile Fields'), '$basic' => array('basic',t('Basic Profile Fields'),$basic,''), @@ -174,17 +175,17 @@ class Profs { '$cust_fields' => $r, '$edit' => t('Edit'), '$drop' => t('Delete'), - '$new' => t('Create Custom Field'), + '$new' => t('Create Custom Field'), '$submit' => t('Submit') )); - + return $o; - - + + } -}
\ No newline at end of file +} diff --git a/Zotlabs/Module/Admin/Queueworker.php b/Zotlabs/Module/Admin/Queueworker.php index a4f38d07c..c98df6ac0 100644 --- a/Zotlabs/Module/Admin/Queueworker.php +++ b/Zotlabs/Module/Admin/Queueworker.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module\Admin; use App; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; class Queueworker extends Controller { @@ -17,18 +18,18 @@ class Queueworker extends Controller { $maxqueueworkers = intval($_POST['queueworker_maxworkers']); $maxqueueworkers = ($maxqueueworkers > 3) ? $maxqueueworkers : 4; - set_config('queueworker', 'max_queueworkers', $maxqueueworkers); + Config::Set('queueworker', 'max_queueworkers', $maxqueueworkers); $maxworkerage = intval($_POST['queueworker_max_age']); $maxworkerage = ($maxworkerage >= 120) ? $maxworkerage : 300; - set_config('queueworker', 'queueworker_max_age', $maxworkerage); + Config::Set('queueworker', 'queueworker_max_age', $maxworkerage); $queueworkersleep = intval($_POST['queue_worker_sleep']); $queueworkersleep = ($queueworkersleep > 100) ? $queueworkersleep : 100; - set_config('queueworker', 'queue_worker_sleep', $queueworkersleep); + Config::Set('queueworker', 'queue_worker_sleep', $queueworkersleep); $auto_queue_worker_sleep = intval($_POST['auto_queue_worker_sleep']); - set_config('queueworker', 'auto_queue_worker_sleep', $auto_queue_worker_sleep); + Config::Set('queueworker', 'auto_queue_worker_sleep', $auto_queue_worker_sleep); goaway(z_root() . '/admin/queueworker'); } @@ -54,7 +55,7 @@ class Queueworker extends Controller { } } - $maxqueueworkers = get_config('queueworker', 'max_queueworkers', 4); + $maxqueueworkers = Config::Get('queueworker', 'max_queueworkers', 4); $maxqueueworkers = ($maxqueueworkers > 3) ? $maxqueueworkers : 4; $sc = ''; @@ -68,7 +69,7 @@ class Queueworker extends Controller { ] ]); - $workermaxage = get_config('queueworker', 'queueworker_max_age'); + $workermaxage = Config::Get('queueworker', 'queueworker_max_age'); $workermaxage = ($workermaxage >= 120) ? $workermaxage : 300; $sc .= replace_macros(get_markup_template('field_input.tpl'), [ @@ -80,10 +81,10 @@ class Queueworker extends Controller { ] ]); - $queueworkersleep = get_config('queueworker', 'queue_worker_sleep'); + $queueworkersleep = Config::Get('queueworker', 'queue_worker_sleep'); $queueworkersleep = ($queueworkersleep > 100) ? $queueworkersleep : 100; - $auto_queue_worker_sleep = get_config('queueworker', 'auto_queue_worker_sleep', 0); + $auto_queue_worker_sleep = Config::Get('queueworker', 'auto_queue_worker_sleep', 0); $sc .= replace_macros(get_markup_template('field_input.tpl'), [ '$field' => [ diff --git a/Zotlabs/Module/Admin/Security.php b/Zotlabs/Module/Admin/Security.php index 499572170..559097df2 100644 --- a/Zotlabs/Module/Admin/Security.php +++ b/Zotlabs/Module/Admin/Security.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module\Admin; +use Zotlabs\Lib\Config; class Security { @@ -11,53 +12,53 @@ class Security { $allowed_email = ((x($_POST,'allowed_email')) ? notags(trim($_POST['allowed_email'])) : ''); $not_allowed_email = ((x($_POST,'not_allowed_email')) ? notags(trim($_POST['not_allowed_email'])) : ''); - set_config('system','allowed_email', $allowed_email); - set_config('system','not_allowed_email', $not_allowed_email); + Config::Set('system','allowed_email', $allowed_email); + Config::Set('system','not_allowed_email', $not_allowed_email); $block_public = ((x($_POST,'block_public')) ? True : False); - set_config('system','block_public',$block_public); + Config::Set('system','block_public',$block_public); $cloud_noroot = ((x($_POST,'cloud_noroot')) ? 1 : 0); - set_config('system','cloud_disable_siteroot',1 - $cloud_noroot); + Config::Set('system','cloud_disable_siteroot',1 - $cloud_noroot); $cloud_disksize = ((x($_POST,'cloud_disksize')) ? 1 : 0); - set_config('system','cloud_report_disksize',$cloud_disksize); + Config::Set('system','cloud_report_disksize',$cloud_disksize); $ws = $this->trim_array_elems(explode("\n",$_POST['whitelisted_sites'])); - set_config('system','whitelisted_sites',$ws); + Config::Set('system','whitelisted_sites',$ws); $bs = $this->trim_array_elems(explode("\n",$_POST['blacklisted_sites'])); - set_config('system','blacklisted_sites',$bs); + Config::Set('system','blacklisted_sites',$bs); $wc = $this->trim_array_elems(explode("\n",$_POST['whitelisted_channels'])); - set_config('system','whitelisted_channels',$wc); + Config::Set('system','whitelisted_channels',$wc); $bc = $this->trim_array_elems(explode("\n",$_POST['blacklisted_channels'])); - set_config('system','blacklisted_channels',$bc); + Config::Set('system','blacklisted_channels',$bc); $embed_sslonly = ((x($_POST,'embed_sslonly')) ? True : False); - set_config('system','embed_sslonly',$embed_sslonly); + Config::Set('system','embed_sslonly',$embed_sslonly); $we = $this->trim_array_elems(explode("\n",$_POST['embed_allow'])); - set_config('system','embed_allow',$we); + Config::Set('system','embed_allow',$we); $be = $this->trim_array_elems(explode("\n",$_POST['embed_deny'])); - set_config('system','embed_deny',$be); + Config::Set('system','embed_deny',$be); $thumbnail_security = ((x($_POST,'thumbnail_security')) ? intval($_POST['thumbnail_security']) : 0); - set_config('system', 'thumbnail_security' , $thumbnail_security); + Config::Set('system', 'thumbnail_security' , $thumbnail_security); $inline_pdf = ((x($_POST,'inline_pdf')) ? intval($_POST['inline_pdf']) : 0); - set_config('system', 'inline_pdf' , $inline_pdf); + Config::Set('system', 'inline_pdf' , $inline_pdf); $ts = ((x($_POST,'transport_security')) ? True : False); - set_config('system','transport_security_header',$ts); + Config::Set('system','transport_security_header',$ts); $cs = ((x($_POST,'content_security')) ? True : False); - set_config('system','content_security_policy',$cs); + Config::Set('system','content_security_policy',$cs); $trusted_directory_servers = $this->trim_array_elems(explode("\n", $_POST['trusted_directory_servers'])); - set_config('system', 'trusted_directory_servers', $trusted_directory_servers); + Config::Set('system', 'trusted_directory_servers', $trusted_directory_servers); goaway(z_root() . '/admin/security'); } @@ -66,31 +67,31 @@ class Security { function get() { - $whitesites = get_config('system','whitelisted_sites'); + $whitesites = Config::Get('system','whitelisted_sites'); $whitesites_str = ((is_array($whitesites)) ? implode("\n",$whitesites) : ''); - $blacksites = get_config('system','blacklisted_sites'); + $blacksites = Config::Get('system','blacklisted_sites'); $blacksites_str = ((is_array($blacksites)) ? implode("\n",$blacksites) : ''); - $whitechannels = get_config('system','whitelisted_channels'); + $whitechannels = Config::Get('system','whitelisted_channels'); $whitechannels_str = ((is_array($whitechannels)) ? implode("\n",$whitechannels) : ''); - $blackchannels = get_config('system','blacklisted_channels'); + $blackchannels = Config::Get('system','blacklisted_channels'); $blackchannels_str = ((is_array($blackchannels)) ? implode("\n",$blackchannels) : ''); - $whiteembeds = get_config('system','embed_allow'); + $whiteembeds = Config::Get('system','embed_allow'); $whiteembeds_str = ((is_array($whiteembeds)) ? implode("\n",$whiteembeds) : ''); - $blackembeds = get_config('system','embed_deny'); + $blackembeds = Config::Get('system','embed_deny'); $blackembeds_str = ((is_array($blackembeds)) ? implode("\n",$blackembeds) : ''); - $trusted_directory_servers = get_config('system', 'trusted_directory_servers'); + $trusted_directory_servers = Config::Get('system', 'trusted_directory_servers'); $trusted_directory_servers_str = ((is_array($trusted_directory_servers)) ? implode("\n", $trusted_directory_servers) : ''); - $is_dir = (intval(get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL)) !== DIRECTORY_MODE_NORMAL); + $is_dir = (intval(Config::Get('system', 'directory_mode', DIRECTORY_MODE_NORMAL)) !== DIRECTORY_MODE_NORMAL); - $embed_coop = intval(get_config('system','embed_coop')); + $embed_coop = intval(Config::Get('system','embed_coop')); if((! $whiteembeds) && (! $blackembeds)) { $embedhelp1 = t("By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."); @@ -105,22 +106,22 @@ class Security { '$title' => t('Administration'), '$page' => t('Security'), '$form_security_token' => get_form_security_token('admin_security'), - '$block_public' => array('block_public', t("Block public"), get_config('system','block_public'), t("Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated.")), - '$cloud_noroot' => [ 'cloud_noroot', t('Provide a cloud root directory'), 1 - intval(get_config('system','cloud_disable_siteroot')), t('The cloud root directory lists all channel names which provide public files') ], - '$cloud_disksize' => [ 'cloud_disksize', t('Show total disk space available to cloud uploads'), intval(get_config('system','cloud_report_disksize')), '' ], - '$transport_security' => array('transport_security', t('Set "Transport Security" HTTP header'),intval(get_config('system','transport_security_header')),''), - '$content_security' => array('content_security', t('Set "Content Security Policy" HTTP header'),intval(get_config('system','content_security_policy')),''), - '$allowed_email' => array('allowed_email', t("Allowed email domains"), get_config('system','allowed_email'), t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")), - '$not_allowed_email' => array('not_allowed_email', t("Not allowed email domains"), get_config('system','not_allowed_email'), t("Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined.")), + '$block_public' => array('block_public', t("Block public"), Config::Get('system','block_public'), t("Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated.")), + '$cloud_noroot' => [ 'cloud_noroot', t('Provide a cloud root directory'), 1 - intval(Config::Get('system','cloud_disable_siteroot')), t('The cloud root directory lists all channel names which provide public files') ], + '$cloud_disksize' => [ 'cloud_disksize', t('Show total disk space available to cloud uploads'), intval(Config::Get('system','cloud_report_disksize')), '' ], + '$transport_security' => array('transport_security', t('Set "Transport Security" HTTP header'),intval(Config::Get('system','transport_security_header')),''), + '$content_security' => array('content_security', t('Set "Content Security Policy" HTTP header'),intval(Config::Get('system','content_security_policy')),''), + '$allowed_email' => array('allowed_email', t("Allowed email domains"), Config::Get('system','allowed_email'), t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")), + '$not_allowed_email' => array('not_allowed_email', t("Not allowed email domains"), Config::Get('system','not_allowed_email'), t("Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined.")), '$whitelisted_sites' => array('whitelisted_sites', t('Allow communications only from these sites'), $whitesites_str, t('One site per line. Leave empty to allow communication from anywhere by default')), '$blacklisted_sites' => array('blacklisted_sites', t('Block communications from these sites'), $blacksites_str, ''), '$whitelisted_channels' => array('whitelisted_channels', t('Allow communications only from these channels'), $whitechannels_str, t('One channel (hash) per line. Leave empty to allow from any channel by default')), '$blacklisted_channels' => array('blacklisted_channels', t('Block communications from these channels'), $blackchannels_str, ''), - '$embed_sslonly' => array('embed_sslonly',t('Only allow embeds from secure (SSL) websites and links.'), intval(get_config('system','embed_sslonly')),''), + '$embed_sslonly' => array('embed_sslonly',t('Only allow embeds from secure (SSL) websites and links.'), intval(Config::Get('system','embed_sslonly')),''), '$embed_allow' => array('embed_allow', t('Allow unfiltered embedded HTML content only from these domains'), $whiteembeds_str, t('One site per line. By default embedded content is filtered.')), '$embed_deny' => array('embed_deny', t('Block embedded HTML from these domains'), $blackembeds_str, ''), - '$thumbnail_security' => [ 'thumbnail_security', t("Allow SVG thumbnails in file browser"), get_config('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.") ], - '$inline_pdf' => [ 'inline_pdf', t("Allow embedded (inline) PDF files"), get_config('system','inline_pdf',0), '' ], + '$thumbnail_security' => [ 'thumbnail_security', t("Allow SVG thumbnails in file browser"), Config::Get('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.") ], + '$inline_pdf' => [ 'inline_pdf', t("Allow embedded (inline) PDF files"), Config::Get('system','inline_pdf',0), '' ], '$trusted_directory_servers' => (($is_dir) ? ['trusted_directory_servers', t('Additional trusted directory server URLs'), $trusted_directory_servers_str, t('Accept directory flags (spam, nsfw) from those servers. One per line like https://example.tld')] : ''), diff --git a/Zotlabs/Module/Admin/Site.php b/Zotlabs/Module/Admin/Site.php index dae5e7c77..abc56d298 100644 --- a/Zotlabs/Module/Admin/Site.php +++ b/Zotlabs/Module/Admin/Site.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module\Admin; +use Zotlabs\Lib\Config; class Site { @@ -125,8 +126,8 @@ class Site { //logger( print_r( $this->msgbg, true) ); //logger( print_r( $this->joo, true) ); if ($this->error === 0) { - set_config('system', 'register_duty', $this->register_duty); - set_config('system', 'register_duty_jso', $this->joo); + Config::Set('system', 'register_duty', $this->register_duty); + Config::Set('system', 'register_duty_jso', $this->joo); } else { notice('ZAR0130E,' . t('Errors') . ': ' . $this->error . EOL . $this->msgfg . EOL); } @@ -134,87 +135,87 @@ class Site { } // <-hilmar] - set_config('system', 'feed_contacts', $feed_contacts); - set_config('system', 'delivery_interval', $delivery_interval); - set_config('system', 'delivery_batch_count', $delivery_batch_count); - set_config('system', 'poll_interval', $poll_interval); - set_config('system', 'maxloadavg', $maxloadavg); - set_config('system', 'frontpage', $frontpage); - set_config('system', 'sellpage', $site_sellpage); - set_config('system', 'workflow_channel_next', $first_page); - set_config('system', 'site_location', $site_location); - set_config('system', 'mirror_frontpage', $mirror_frontpage); - set_config('system', 'sitename', $sitename); - set_config('system', 'login_on_homepage', $login_on_homepage); - set_config('system', 'enable_context_help', $enable_context_help); - set_config('system', 'verify_email', $verify_email); - set_config('system', 'max_daily_registrations', $register_perday); - set_config('system', 'register_sameip', $register_sameip); - set_config('system', 'register_delay', $reg_delay); - set_config('system', 'register_expire', $reg_expire); - set_config('system', 'default_expire_days', $default_expire_days); - set_config('system', 'active_expire_days', $active_expire_days); - set_config('system', 'reply_address', $reply_address); - set_config('system', 'from_email', $from_email); - set_config('system', 'from_email_name' , $from_email_name); - set_config('system', 'imagick_convert_path' , $imagick_path); - set_config('system', 'default_permissions_role', $permissions_role); - set_config('system', 'pubstream_incl',$pub_incl); - set_config('system', 'pubstream_excl',$pub_excl); + Config::Set('system', 'feed_contacts', $feed_contacts); + Config::Set('system', 'delivery_interval', $delivery_interval); + Config::Set('system', 'delivery_batch_count', $delivery_batch_count); + Config::Set('system', 'poll_interval', $poll_interval); + Config::Set('system', 'maxloadavg', $maxloadavg); + Config::Set('system', 'frontpage', $frontpage); + Config::Set('system', 'sellpage', $site_sellpage); + Config::Set('system', 'workflow_channel_next', $first_page); + Config::Set('system', 'site_location', $site_location); + Config::Set('system', 'mirror_frontpage', $mirror_frontpage); + Config::Set('system', 'sitename', $sitename); + Config::Set('system', 'login_on_homepage', $login_on_homepage); + Config::Set('system', 'enable_context_help', $enable_context_help); + Config::Set('system', 'verify_email', $verify_email); + Config::Set('system', 'max_daily_registrations', $register_perday); + Config::Set('system', 'register_sameip', $register_sameip); + Config::Set('system', 'register_delay', $reg_delay); + Config::Set('system', 'register_expire', $reg_expire); + Config::Set('system', 'default_expire_days', $default_expire_days); + Config::Set('system', 'active_expire_days', $active_expire_days); + Config::Set('system', 'reply_address', $reply_address); + Config::Set('system', 'from_email', $from_email); + Config::Set('system', 'from_email_name' , $from_email_name); + Config::Set('system', 'imagick_convert_path' , $imagick_path); + Config::Set('system', 'default_permissions_role', $permissions_role); + Config::Set('system', 'pubstream_incl',$pub_incl); + Config::Set('system', 'pubstream_excl',$pub_excl); if($directory_server) - set_config('system','directory_server',$directory_server); + Config::Set('system','directory_server',$directory_server); if ($banner == '') { - del_config('system', 'banner'); + Config::Delete('system', 'banner'); } else { - set_config('system', 'banner', $banner); + Config::Set('system', 'banner', $banner); } if ($admininfo == ''){ - del_config('system', 'admininfo'); + Config::Delete('system', 'admininfo'); } else { require_once('include/text.php'); linkify_tags($admininfo, local_channel()); - set_config('system', 'admininfo', $admininfo); + Config::Set('system', 'admininfo', $admininfo); } - set_config('system','siteinfo',$siteinfo); - //set_config('system', 'language', $language); - set_config('system', 'theme', $theme); + Config::Set('system','siteinfo',$siteinfo); + //Config::Set('system', 'language', $language); + Config::Set('system', 'theme', $theme); // if ( $theme_mobile === '---' ) { - // del_config('system', 'mobile_theme'); + // Config::Delete('system', 'mobile_theme'); // } else { - // set_config('system', 'mobile_theme', $theme_mobile); + // Config::Set('system', 'mobile_theme', $theme_mobile); // } - // set_config('system','site_channel', $site_channel); - set_config('system','maximagesize', $maximagesize); - - set_config('system','register_policy', $register_policy); - set_config('system','register_wo_email', $register_wo_email); - set_config('system','minimum_age', $minimum_age); - set_config('system','auto_channel_create', $reg_autochannel); - set_config('system', 'invitation_only', $invitation_only); - set_config('system', 'invitation_also', $invitation_also); - set_config('system','access_policy', $access_policy); - set_config('system','account_abandon_days', $abandon_days); - set_config('system','register_text', $register_text); - set_config('system','allowed_sites', $allowed_sites); - set_config('system','publish_all', $force_publish); - set_config('system','disable_discover_tab', $disable_discover_tab); - set_config('system','site_firehose', $site_firehose); - set_config('system','open_pubstream', $open_pubstream); - //set_config('system','force_queue_threshold', $force_queue); - - set_config('system','no_community_page', $no_community_page); - set_config('system','no_utf', $no_utf); - - set_config('system','sse_enabled', $sse_enabled); - - set_config('system','verifyssl', $verifyssl); - set_config('system','proxyuser', $proxyuser); - set_config('system','proxy', $proxy); - set_config('system','curl_timeout', $timeout); + // Config::Set('system','site_channel', $site_channel); + Config::Set('system','maximagesize', $maximagesize); + + Config::Set('system','register_policy', $register_policy); + Config::Set('system','register_wo_email', $register_wo_email); + Config::Set('system','minimum_age', $minimum_age); + Config::Set('system','auto_channel_create', $reg_autochannel); + Config::Set('system', 'invitation_only', $invitation_only); + Config::Set('system', 'invitation_also', $invitation_also); + Config::Set('system','access_policy', $access_policy); + Config::Set('system','account_abandon_days', $abandon_days); + Config::Set('system','register_text', $register_text); + Config::Set('system','allowed_sites', $allowed_sites); + Config::Set('system','publish_all', $force_publish); + Config::Set('system','disable_discover_tab', $disable_discover_tab); + Config::Set('system','site_firehose', $site_firehose); + Config::Set('system','open_pubstream', $open_pubstream); + //Config::Set('system','force_queue_threshold', $force_queue); + + Config::Set('system','no_community_page', $no_community_page); + Config::Set('system','no_utf', $no_utf); + + Config::Set('system','sse_enabled', $sse_enabled); + + Config::Set('system','verifyssl', $verifyssl); + Config::Set('system','proxyuser', $proxyuser); + Config::Set('system','proxy', $proxy); + Config::Set('system','curl_timeout', $timeout); info( t('Site settings updated.') . EOL); goaway(z_root() . '/admin/site' ); @@ -263,7 +264,7 @@ class Site { } $dir_choices = null; - $dirmode = get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL); + $dirmode = Config::Get('system', 'directory_mode', DIRECTORY_MODE_NORMAL); $realm = get_directory_realm(); // directory server should not be set or settable unless we are a directory client @@ -291,14 +292,14 @@ class Site { /* Banner */ - $banner = get_config('system', 'banner'); + $banner = Config::Get('system', 'banner'); if($banner === false) - $banner = get_config('system','sitename'); + $banner = Config::Get('system','sitename'); $banner = htmlspecialchars($banner); /* Admin Info */ - $admininfo = get_config('system', 'admininfo'); + $admininfo = Config::Get('system', 'admininfo'); /* Register policy */ $register_choices = Array( @@ -306,8 +307,8 @@ class Site { REGISTER_APPROVE => t("Yes - with approval"), REGISTER_OPEN => t("Yes") ); - $this->register_duty = get_config('system', 'register_duty', '-:-'); - $register_perday = get_config('system','max_daily_registrations', 50); + $this->register_duty = Config::Get('system', 'register_duty', '-:-'); + $register_perday = Config::Get('system','max_daily_registrations', 50); /* Acess policy */ $access_choices = Array( @@ -317,7 +318,7 @@ class Site { ACCESS_TIERED => t("My site offers free accounts with optional paid upgrades") ); - $discover_tab = get_config('system','disable_discover_tab'); + $discover_tab = Config::Get('system','disable_discover_tab'); // $disable public streams by default if($discover_tab === false) @@ -326,7 +327,7 @@ class Site { $discover_tab = (1 - $discover_tab); $perm_roles = \Zotlabs\Access\PermissionRoles::channel_roles(); - $default_role = get_config('system', 'default_permissions_role', 'personal'); + $default_role = Config::Get('system', 'default_permissions_role', 'personal'); if (!in_array($default_role, array_keys($perm_roles))) { $default_role = 'personal'; @@ -334,8 +335,8 @@ class Site { $role = array('permissions_role' , t('Default permission role for new accounts'), $default_role, t('This role will be used for the first channel created after registration.'),$perm_roles); - $homelogin = get_config('system','login_on_homepage'); - $enable_context_help = get_config('system','enable_context_help'); + $homelogin = Config::Get('system','login_on_homepage'); + $enable_context_help = Config::Get('system','enable_context_help'); // for reuse reg_delay and reg_expire $reg_rabots = array( @@ -347,7 +348,7 @@ class Site { 'y' => t('Year(s)') ); $regdelay_n = $regdelay_u = false; - $regdelay = get_config('system','register_delay'); + $regdelay = Config::Get('system','register_delay'); if ($regdelay) list($regdelay_n, $regdelay_u) = array(substr($regdelay,0,-1),substr($regdelay,-1)); $reg_delay = replace_macros(get_markup_template('field_duration.qmc.tpl'), @@ -369,7 +370,7 @@ class Site { ) ); $regexpire_n = $regexpire_u = false; - $regexpire = get_config('system','register_expire'); + $regexpire = Config::Get('system','register_expire'); if ($regexpire) list($regexpire_n, $regexpire_u) = array(substr($regexpire,0,-1),substr($regexpire,-1)); $reg_expire = replace_macros(get_markup_template('field_duration.qmc.tpl'), @@ -406,38 +407,38 @@ class Site { '$baseurl' => z_root(), // name, label, value, help string, extra data... - '$sitename' => array('sitename', t("Site name"), htmlspecialchars(get_config('system','sitename'), ENT_QUOTES, 'UTF-8'),''), + '$sitename' => array('sitename', t("Site name"), htmlspecialchars(Config::Get('system','sitename'), ENT_QUOTES, 'UTF-8'),''), '$banner' => array('banner', t("Banner/Logo"), $banner, t('Unfiltered HTML/CSS/JS is allowed')), '$admininfo' => array('admininfo', t("Administrator Information"), $admininfo, t("Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here")), - '$siteinfo' => array('siteinfo', t('Site Information'), get_config('system','siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here")), - '$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"), $theme_choices), - // '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile), - // '$site_channel' => array('site_channel', t("Channel to use for this website's static pages"), get_config('system','site_channel'), t("Site Channel")), - '$feed_contacts' => array('feed_contacts', t('Allow Feeds as Connections'),get_config('system','feed_contacts'),t('(Heavy system resource usage)')), - '$maximagesize' => array('maximagesize', t("Maximum image size"), intval(get_config('system','maximagesize')), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")), - '$minimum_age' => array('minimum_age', t("Minimum age"), (x(get_config('system','minimum_age'))?get_config('system','minimum_age'):13), t("Minimum age (in years) for who may register on this site.")), - '$access_policy' => array('access_policy', t("Which best describes the types of account offered by this hub?"), get_config('system','access_policy'), t("This is displayed on the public server site list."), $access_choices), + '$siteinfo' => array('siteinfo', t('Site Information'), Config::Get('system','siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here")), + '$theme' => array('theme', t("System theme"), Config::Get('system','theme'), t("Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"), $theme_choices), + // '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), Config::Get('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile), + // '$site_channel' => array('site_channel', t("Channel to use for this website's static pages"), Config::Get('system','site_channel'), t("Site Channel")), + '$feed_contacts' => array('feed_contacts', t('Allow Feeds as Connections'),Config::Get('system','feed_contacts'),t('(Heavy system resource usage)')), + '$maximagesize' => array('maximagesize', t("Maximum image size"), intval(Config::Get('system','maximagesize')), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")), + '$minimum_age' => array('minimum_age', t("Minimum age"), (x(Config::Get('system','minimum_age'))?Config::Get('system','minimum_age'):13), t("Minimum age (in years) for who may register on this site.")), + '$access_policy' => array('access_policy', t("Which best describes the types of account offered by this hub?"), Config::Get('system','access_policy'), t("This is displayed on the public server site list."), $access_choices), // Register // [hilmar-> '$register_text' => [ 'register_text', t("Register text"), - htmlspecialchars(get_config('system','register_text'), ENT_QUOTES, 'UTF-8'), + htmlspecialchars(Config::Get('system','register_text'), ENT_QUOTES, 'UTF-8'), t("This text will be displayed prominently at the registration page") ], '$register_policy' => [ 'register_policy', t("Does this site allow new member registration?"), - get_config('system','register_policy'), + Config::Get('system','register_policy'), "", $register_choices, ], '$register_duty' => [ 'register_duty', t('Configure the registration open days/hours'), - get_config('system', 'register_duty', '-:-'), + Config::Get('system', 'register_duty', '-:-'), t('Empty or \'-:-\' value will keep registration open 24/7 (default)') . EOL . t('Weekdays and hours must be separated by colon \':\', From-To ranges with a dash `-` example: 1:800-1200') . EOL . t('Weekday:Hour pairs must be separated by space \' \' example: 1:900-1700 2:900-1700') . EOL . @@ -448,13 +449,13 @@ class Site { '$register_perday' => [ 'register_perday', t('Max account registrations per day'), - get_config('system', 'max_daily_registrations', 50), + Config::Get('system', 'max_daily_registrations', 50), t('Unlimited if zero or no value - default 50') ], '$register_sameip' => [ 'register_sameip', t('Max account registrations from same IP'), - get_config('system', 'register_sameip', 3), + Config::Get('system', 'register_sameip', 3), t('Unlimited if zero or no value - default 3') ], '$reg_delay' => $reg_delay, @@ -462,70 +463,70 @@ class Site { '$reg_autochannel' => [ 'auto_channel_create', t("Auto channel create"), - get_config('system','auto_channel_create', 1), + Config::Get('system','auto_channel_create', 1), t("If disabled the channel will be created in a separate step during the registration process") ], '$invitation_only' => [ 'invitation_only', t("Require invite code"), - get_config('system', 'invitation_only', 0) + Config::Get('system', 'invitation_only', 0) ], '$invitation_also' => [ 'invitation_also', t("Allow invite code"), - get_config('system', 'invitation_also', 0) + Config::Get('system', 'invitation_also', 0) ], '$verify_email' => [ 'verify_email', t("Require email address"), - get_config('system','verify_email'), + Config::Get('system','verify_email'), t("The provided email address will be verified (recommended)") ], '$abandon_days' => [ 'abandon_days', t('Abandon account after x days'), - get_config('system','account_abandon_days'), + Config::Get('system','account_abandon_days'), t('Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit.') ], // <-hilmar] '$role' => $role, - '$frontpage' => array('frontpage', t("Site homepage to show visitors (default: login box)"), get_config('system','frontpage'), t("example: 'pubstream' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file.")), - '$mirror_frontpage' => array('mirror_frontpage', t("Preserve site homepage URL"), get_config('system','mirror_frontpage'), t('Present the site homepage in a frame at the original location instead of redirecting')), - '$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), get_config('system','allowed_sites'), t("Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains")), - '$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory")), + '$frontpage' => array('frontpage', t("Site homepage to show visitors (default: login box)"), Config::Get('system','frontpage'), t("example: 'pubstream' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file.")), + '$mirror_frontpage' => array('mirror_frontpage', t("Preserve site homepage URL"), Config::Get('system','mirror_frontpage'), t('Present the site homepage in a frame at the original location instead of redirecting')), + '$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), Config::Get('system','allowed_sites'), t("Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains")), + '$force_publish' => array('publish_all', t("Force publish"), Config::Get('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory")), '$disable_discover_tab' => array('disable_discover_tab', t('Enable public stream'), $discover_tab, t('Enable the public stream. Warning: this content is unmoderated')), - '$site_firehose' => array('site_firehose', t('Site only public stream'), get_config('system','site_firehose'), t('Restrict the public stream to content originating at this site')), - '$open_pubstream' => array('open_pubstream', t('Allow anybody on the internet to access the public streams'), get_config('system','open_pubstream',1), t('Disable to require authentication before viewing')), - '$incl' => array('pub_incl',t('Only import Public stream posts with this text'), get_config('system','pubstream_incl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')), - '$excl' => array('pub_excl',t('Do not import Public stream posts with this text'), get_config('system','pubstream_excl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')), + '$site_firehose' => array('site_firehose', t('Site only public stream'), Config::Get('system','site_firehose'), t('Restrict the public stream to content originating at this site')), + '$open_pubstream' => array('open_pubstream', t('Allow anybody on the internet to access the public streams'), Config::Get('system','open_pubstream',1), t('Disable to require authentication before viewing')), + '$incl' => array('pub_incl',t('Only import Public stream posts with this text'), Config::Get('system','pubstream_incl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')), + '$excl' => array('pub_excl',t('Do not import Public stream posts with this text'), Config::Get('system','pubstream_excl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')), '$login_on_homepage' => array('login_on_homepage', t("Login on Homepage"),((intval($homelogin) || $homelogin === false) ? 1 : '') , t("Present a login box to visitors on the home page if no other content has been configured.")), '$enable_context_help' => array('enable_context_help', t("Enable context help"),((intval($enable_context_help) === 1 || $enable_context_help === false) ? 1 : 0) , t("Display contextual help for the current page when the help button is pressed.")), - '$reply_address' => [ 'reply_address', t('Reply-to email address for system generated email.'), get_config('system','reply_address','noreply@' . \App::get_hostname()),'' ], - '$from_email' => [ 'from_email', t('Sender (From) email address for system generated email.'), get_config('system','from_email','Administrator@' . \App::get_hostname()),'' ], - '$from_email_name' => [ 'from_email_name', t('Name of email sender for system generated email.'), get_config('system','from_email_name',\Zotlabs\Lib\System::get_site_name()),'' ], - - '$directory_server' => (($dir_choices) ? array('directory_server', t("Directory Server URL"), get_config('system','directory_server'), t("Default directory server"), $dir_choices) : null), - - '$sse_enabled' => array('sse_enabled', t('Enable SSE Notifications'), get_config('system', 'sse_enabled', 0), t('If disabled, traditional polling will be used. Warning: this setting might not be suited for shared hosting')), - - '$proxyuser' => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""), - '$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""), - '$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")), - '$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(get_config('system','delivery_interval'))?get_config('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")), - '$delivery_batch_count' => array('delivery_batch_count', t('Deliveries per process'),(x(get_config('system','delivery_batch_count'))?get_config('system','delivery_batch_count'):1), t("Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5.")), - //'$force_queue' => array('force_queue', t("Queue Threshold"), get_config('system','force_queue_threshold',3000), t("Always defer immediate delivery if queue contains more than this number of entries.")), - '$poll_interval' => array('poll_interval', t("Poll interval"), (x(get_config('system','poll_interval'))?get_config('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")), - '$imagick_path' => array('imagick_path', t("Path to ImageMagick convert program"), get_config('system','imagick_convert_path'), t("If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert")), - '$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")), - '$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (grid/network) content'), intval(get_config('system','default_expire_days', 30)), t('0 for no expiration of imported content')), - '$active_expire_days' => array('active_expire_days', t('Do not expire any posts which have comments less than this many days ago'), intval(get_config('system','active_expire_days',7)), ''), - '$sellpage' => array('site_sellpage', t('Public servers: Optional landing (marketing) webpage for new registrants'), get_config('system','sellpage',''), sprintf( t('Create this page first. Default is %s/register'),z_root())), - '$first_page' => array('first_page', t('Page to display after creating a new channel'), get_config('system','workflow_channel_next','profiles'), t('Default: profiles')), - '$location' => array('site_location', t('Optional: site location'), get_config('system','site_location',''), t('Region or country')), + '$reply_address' => [ 'reply_address', t('Reply-to email address for system generated email.'), Config::Get('system','reply_address','noreply@' . \App::get_hostname()),'' ], + '$from_email' => [ 'from_email', t('Sender (From) email address for system generated email.'), Config::Get('system','from_email','Administrator@' . \App::get_hostname()),'' ], + '$from_email_name' => [ 'from_email_name', t('Name of email sender for system generated email.'), Config::Get('system','from_email_name',\Zotlabs\Lib\System::get_site_name()),'' ], + + '$directory_server' => (($dir_choices) ? array('directory_server', t("Directory Server URL"), Config::Get('system','directory_server'), t("Default directory server"), $dir_choices) : null), + + '$sse_enabled' => array('sse_enabled', t('Enable SSE Notifications'), Config::Get('system', 'sse_enabled', 0), t('If disabled, traditional polling will be used. Warning: this setting might not be suited for shared hosting')), + + '$proxyuser' => array('proxyuser', t("Proxy user"), Config::Get('system','proxyuser'), ""), + '$proxy' => array('proxy', t("Proxy URL"), Config::Get('system','proxy'), ""), + '$timeout' => array('timeout', t("Network timeout"), (x(Config::Get('system','curl_timeout'))?Config::Get('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")), + '$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(Config::Get('system','delivery_interval'))?Config::Get('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")), + '$delivery_batch_count' => array('delivery_batch_count', t('Deliveries per process'),(x(Config::Get('system','delivery_batch_count'))?Config::Get('system','delivery_batch_count'):1), t("Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5.")), + //'$force_queue' => array('force_queue', t("Queue Threshold"), Config::Get('system','force_queue_threshold',3000), t("Always defer immediate delivery if queue contains more than this number of entries.")), + '$poll_interval' => array('poll_interval', t("Poll interval"), (x(Config::Get('system','poll_interval'))?Config::Get('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")), + '$imagick_path' => array('imagick_path', t("Path to ImageMagick convert program"), Config::Get('system','imagick_convert_path'), t("If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert")), + '$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(Config::Get('system','maxloadavg')) > 0)?Config::Get('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")), + '$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (grid/network) content'), intval(Config::Get('system','default_expire_days', 30)), t('0 for no expiration of imported content')), + '$active_expire_days' => array('active_expire_days', t('Do not expire any posts which have comments less than this many days ago'), intval(Config::Get('system','active_expire_days',7)), ''), + '$sellpage' => array('site_sellpage', t('Public servers: Optional landing (marketing) webpage for new registrants'), Config::Get('system','sellpage',''), sprintf( t('Create this page first. Default is %s/register'),z_root())), + '$first_page' => array('first_page', t('Page to display after creating a new channel'), Config::Get('system','workflow_channel_next','profiles'), t('Default: profiles')), + '$location' => array('site_location', t('Optional: site location'), Config::Get('system','site_location',''), t('Region or country')), '$form_security_token' => get_form_security_token("admin_site"), )); } diff --git a/Zotlabs/Module/Admin/Themes.php b/Zotlabs/Module/Admin/Themes.php index 7f615afa8..6793f56b1 100644 --- a/Zotlabs/Module/Admin/Themes.php +++ b/Zotlabs/Module/Admin/Themes.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module\Admin; use \Michelf\MarkdownExtra; +use Zotlabs\Lib\Config; /** * @brief Admin area theme settings. @@ -37,7 +38,7 @@ class Themes { * @return string with parsed HTML */ function get(){ - $allowed_themes_str = get_config('system', 'allowed_themes'); + $allowed_themes_str = Config::Get('system', 'allowed_themes'); $allowed_themes_raw = explode(',', $allowed_themes_str); $allowed_themes = array(); if(count($allowed_themes_raw)) @@ -100,7 +101,7 @@ class Themes { info(sprintf('Theme %s disabled.', $theme)); } - set_config('system', 'allowed_themes', $s); + Config::Set('system', 'allowed_themes', $s); goaway(z_root() . '/admin/themes' ); } diff --git a/Zotlabs/Module/Api.php b/Zotlabs/Module/Api.php index 5b835ac51..8574ae1cd 100644 --- a/Zotlabs/Module/Api.php +++ b/Zotlabs/Module/Api.php @@ -1,6 +1,8 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; + require_once('include/api.php'); class Api extends \Zotlabs\Web\Controller { @@ -57,7 +59,7 @@ class Api extends \Zotlabs\Web\Controller { $consumer = new \OAuth1Consumer($app['client_id'], $app['pw'], $app['redirect_uri']); $verifier = md5($app['secret'] . local_channel()); - set_config('oauth', $verifier, local_channel()); + Config::Set('oauth', $verifier, local_channel()); if($consumer->callback_url != null) { diff --git a/Zotlabs/Module/Apps.php b/Zotlabs/Module/Apps.php index a955d572a..a8817111e 100644 --- a/Zotlabs/Module/Apps.php +++ b/Zotlabs/Module/Apps.php @@ -1,7 +1,7 @@ <?php namespace Zotlabs\Module; - +use \Zotlabs\Lib\Config; use \Zotlabs\Lib as Zlib; class Apps extends \Zotlabs\Web\Controller { @@ -46,7 +46,7 @@ class Apps extends \Zotlabs\Web\Controller { } return replace_macros(get_markup_template('myapps.tpl'), array( - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$cat' => $cat, '$title' => (($available) ? t('Available Apps') : t('Installed Apps')), '$apps' => $apps, diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php index 4e6811a10..f3855b7e8 100644 --- a/Zotlabs/Module/Channel.php +++ b/Zotlabs/Module/Channel.php @@ -6,6 +6,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Lib\Activity; use Zotlabs\Lib\ActivityStreams; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Crypto; use Zotlabs\Lib\Libzot; use Zotlabs\Lib\PermissionDescription; @@ -176,7 +177,7 @@ class Channel extends Controller { function get($update = 0, $load = false) { - $noscript_content = get_config('system', 'noscript_content', '1'); + $noscript_content = Config::Get('system', 'noscript_content', '1'); $category = $datequery = $datequery2 = ''; diff --git a/Zotlabs/Module/Cover_photo.php b/Zotlabs/Module/Cover_photo.php index 1c1240e29..aa2464ac2 100644 --- a/Zotlabs/Module/Cover_photo.php +++ b/Zotlabs/Module/Cover_photo.php @@ -1,6 +1,7 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; /* @@ -112,10 +113,10 @@ class Cover_photo extends \Zotlabs\Web\Controller { if($r) { - $max_thumb = intval(get_config('system','max_thumbnail',1600)); + $max_thumb = intval(Config::Get('system','max_thumbnail',1600)); $iscaled = false; if(intval($r[0]['height']) > $max_thumb || intval($r[0]['width']) > $max_thumb) { - $imagick_path = get_config('system','imagick_convert_path'); + $imagick_path = Config::Get('system','imagick_convert_path'); if($imagick_path && @file_exists($imagick_path) && intval($r[0]['os_storage'])) { $fname = dbunescbin($r[0]['content']); @@ -428,7 +429,7 @@ class Cover_photo extends \Zotlabs\Web\Controller { function cover_photo_crop_ui_head(&$a, $ph, $hash, $smallest){ - $max_length = get_config('system','max_image_length'); + $max_length = Config::Get('system','max_image_length'); if(! $max_length) $max_length = MAX_IMAGE_LENGTH; if($max_length > 0) diff --git a/Zotlabs/Module/Dircensor.php b/Zotlabs/Module/Dircensor.php index 4ce3a81c4..7caefa37c 100644 --- a/Zotlabs/Module/Dircensor.php +++ b/Zotlabs/Module/Dircensor.php @@ -3,9 +3,9 @@ namespace Zotlabs\Module; use App; -use Zotlabs\Web\Controller; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzotdir; - +use Zotlabs\Web\Controller; class Dircensor extends Controller { @@ -14,7 +14,7 @@ class Dircensor extends Controller { return; } - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); if(!in_array($dirmode, [DIRECTORY_MODE_PRIMARY, DIRECTORY_MODE_SECONDARY, DIRECTORY_MODE_STANDALONE])) { return; diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php index 53e2edd55..05aa735c8 100644 --- a/Zotlabs/Module/Directory.php +++ b/Zotlabs/Module/Directory.php @@ -3,9 +3,9 @@ namespace Zotlabs\Module; use App; -use Zotlabs\Web\Controller; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzotdir; - +use Zotlabs\Web\Controller; require_once('include/socgraph.php'); require_once('include/bbcode.php'); @@ -73,7 +73,7 @@ class Directory extends Controller { return; } - if(get_config('system','block_public_directory',false) && (! get_observer_hash())) { + if(Config::Get('system','block_public_directory',false) && (! get_observer_hash())) { notice( t('Public access denied.') . EOL); return; } @@ -145,7 +145,7 @@ class Directory extends Controller { $tpl = get_markup_template('directory_header.tpl'); - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); $directory_admin = false; @@ -165,7 +165,7 @@ class Directory extends Controller { $url = $directory['url'] . '/dirsearch'; } - $token = get_config('system','realm_token'); + $token = Config::Get('system','realm_token'); logger('mod_directory: URL = ' . $url, LOGGER_DEBUG); @@ -184,11 +184,11 @@ class Directory extends Controller { if($url) { - $numtags = get_config('system','directorytags'); + $numtags = Config::Get('system','directorytags'); $kw = ((intval($numtags) > 0) ? intval($numtags) : 50); - if(get_config('system','disable_directory_keywords')) + if(Config::Get('system','disable_directory_keywords')) $kw = 0; if (intval($safe_mode) === 0 && $directory_admin) @@ -213,7 +213,7 @@ class Directory extends Controller { if(! is_null($pubforums)) $query .= '&pubforums=' . intval($pubforums); - $directory_sort_order = get_config('system','directory_sort_order'); + $directory_sort_order = Config::Get('system','directory_sort_order'); if(! $directory_sort_order) $directory_sort_order = 'date'; diff --git a/Zotlabs/Module/Dirsearch.php b/Zotlabs/Module/Dirsearch.php index aa42833c3..d27b195e4 100644 --- a/Zotlabs/Module/Dirsearch.php +++ b/Zotlabs/Module/Dirsearch.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; use App; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; class Dirsearch extends Controller { @@ -17,7 +18,7 @@ class Dirsearch extends Controller { // logger('request: ' . print_r($_REQUEST,true)); - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); if($dirmode == DIRECTORY_MODE_NORMAL) { $ret['message'] = t('This site is not a directory server'); @@ -26,7 +27,7 @@ class Dirsearch extends Controller { $access_token = $_REQUEST['t'] ?? ''; - $token = get_config('system','realm_token'); + $token = Config::Get('system','realm_token'); if($token && $access_token != $token) { $ret['message'] = t('This directory server requires an access token'); json_return_and_die($ret); @@ -79,7 +80,7 @@ class Dirsearch extends Controller { $forums = ((array_key_exists('pubforums',$_REQUEST)) ? intval($_REQUEST['pubforums']) : 0); - if(get_config('system','disable_directory_keywords')) + if(Config::Get('system','disable_directory_keywords')) $kw = 0; diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php index f08aedc95..451ddeb1f 100644 --- a/Zotlabs/Module/Display.php +++ b/Zotlabs/Module/Display.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; use App; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; class Display extends Controller { @@ -12,7 +13,7 @@ class Display extends Controller { function get($update = 0, $load = false) { - $noscript_content = (get_config('system', 'noscript_content', '1') && (! $update)); + $noscript_content = (Config::Get('system', 'noscript_content', '1') && (! $update)); $module_format = 'html'; diff --git a/Zotlabs/Module/Editpost.php b/Zotlabs/Module/Editpost.php index 5e405bdbc..6f524cdb8 100644 --- a/Zotlabs/Module/Editpost.php +++ b/Zotlabs/Module/Editpost.php @@ -84,7 +84,7 @@ class Editpost extends \Zotlabs\Web\Controller { 'item' => $itm[0], 'editor_autocomplete'=> true, 'bbco_autocomplete'=> 'bbcode', - 'return_path' => $_SESSION['return_url'], + 'return_path' => 'hq', 'button' => t('Submit'), 'hide_voting' => true, 'hide_future' => true, diff --git a/Zotlabs/Module/Email_validation.php b/Zotlabs/Module/Email_validation.php index c1ba9a01a..c5799560f 100644 --- a/Zotlabs/Module/Email_validation.php +++ b/Zotlabs/Module/Email_validation.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; +use Zotlabs\Lib\Config; class Email_validation extends \Zotlabs\Web\Controller { @@ -12,8 +13,8 @@ class Email_validation extends \Zotlabs\Web\Controller { // This will redirect internally on success unless the channel is auto_created if(account_approve(trim(basename($_POST['token'])))) { $success = true; - if(get_config('system','auto_channel_create')) { - $next_page = get_config('system', 'workflow_channel_next', 'profiles'); + if(Config::Get('system','auto_channel_create')) { + $next_page = Config::Get('system', 'workflow_channel_next', 'profiles'); } if($next_page) { goaway(z_root() . '/' . $next_page); @@ -40,9 +41,9 @@ class Email_validation extends \Zotlabs\Web\Controller { '$submit' => t('Submit'), '$token' => [ 'token', t('Validation token'),'','' ], ]); - + return $o; } -}
\ No newline at end of file +} diff --git a/Zotlabs/Module/Fhublocs.php b/Zotlabs/Module/Fhublocs.php index a4d335a94..6cfee94f0 100644 --- a/Zotlabs/Module/Fhublocs.php +++ b/Zotlabs/Module/Fhublocs.php @@ -1,6 +1,7 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; require_once('include/crypto.php'); @@ -18,7 +19,7 @@ class Fhublocs extends \Zotlabs\Web\Controller { $o = ''; $r = q("select * from channel where channel_removed = 0"); - $sitekey = get_config('system','pubkey'); + $sitekey = Config::Get('system','pubkey'); if($r) { foreach($r as $rr) { diff --git a/Zotlabs/Module/Go.php b/Zotlabs/Module/Go.php index d33136d9e..ec528fb1a 100644 --- a/Zotlabs/Module/Go.php +++ b/Zotlabs/Module/Go.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; +use Zorlabs\Lib\Config; class Go extends \Zotlabs\Web\Controller { @@ -44,9 +45,9 @@ class Go extends \Zotlabs\Web\Controller { 'network' => t('View your personal stream (this may be empty until you add some connections)'), ]; - - $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false); - $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true); + + $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false); + $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true); if($site_firehose || $net_firehose) { $options['pubstream'] = t('View the public stream. Warning: this content is not moderated'); @@ -64,4 +65,4 @@ class Go extends \Zotlabs\Web\Controller { } -}
\ No newline at end of file +} diff --git a/Zotlabs/Module/Group.php b/Zotlabs/Module/Group.php index 1dce08757..63fdee7f0 100644 --- a/Zotlabs/Module/Group.php +++ b/Zotlabs/Module/Group.php @@ -2,10 +2,11 @@ namespace Zotlabs\Module; use App; -use Zotlabs\Web\Controller; +use Zotlabs\Lib\AccessList; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; -use Zotlabs\Lib\AccessList; +use Zotlabs\Web\Controller; class Group extends Controller { @@ -123,7 +124,7 @@ class Group extends Controller { // Switch to text mode interface if we have more than 'n' contacts or group members $switchtotext = get_pconfig(local_channel(),'system','groupedit_image_limit'); if($switchtotext === false) - $switchtotext = get_config('system','groupedit_image_limit'); + $switchtotext = Config::Get('system','groupedit_image_limit'); if($switchtotext === false) $switchtotext = 400; diff --git a/Zotlabs/Module/Help.php b/Zotlabs/Module/Help.php index 55ac80842..fd5cacee6 100644 --- a/Zotlabs/Module/Help.php +++ b/Zotlabs/Module/Help.php @@ -1,7 +1,7 @@ <?php namespace Zotlabs\Module; -require_once('include/help.php'); +use Michelf\MarkdownExtra; /** * You can create local site resources in doc/Site.md and either link to doc/Home.md for the standard resources @@ -14,7 +14,50 @@ require_once('include/help.php'); */ class Help extends \Zotlabs\Web\Controller { - function get() { + use \Zotlabs\Lib\Traits\HelpHelperTrait; + + private string $heading_slug = ''; + + /** + * Associative array containing the detected language. + */ + public array $lang = [ + 'language' => 'en', //! Detected language, 2-letter ISO 639-1 code ("en") + 'from_url' => false, //! true if language from URL overrides browser default + ]; + + /** + * Pre-check before processing request. + * + * Determine language requested, and ensure that a topic was requested. + * If no topic was requested, redirect to the about page, and abort + * processing. + */ + public function init() { + $this->determine_help_language(); + + if (argc() === 1) { + goaway("/help/{$this->lang['language']}/about/about"); + killme(); + } + } + + /** + * Process get request for the help module. + * + * Loads the correct help file from the `doc/` directory, and passes it to + * the help template in `view/tpl/help.tpl`. + * + * If the requested help topic does not exist for the currently selected + * language, a 404 status is returned instead. + * + * This function currently also handles search and serving static assets + * that may be used by the help files. + * + * @return string The rendered help page or a 404 page if help topic was + * not found. + */ + public function get() { nav_set_selected('Help'); $o = ''; @@ -81,6 +124,120 @@ class Help extends \Zotlabs\Web\Controller { killme(); } + // + // The args to the module will be along this pattern: + // + // help/<lang>/<subdir..>/<topic> + // + // Where `<lang>` is the language which we want to fetch the topic. This + // element is optional, but will be used to override the browser language + // preference if it exists. + // + // There may be zero or more `<subdir...>` elements. If there are any + // present, the first subdir will be used as the slug to find the + // heading of the help page. + // + // The `<topic>` should be the name of a file within the given language + // and subdirectory tree under the `doc/` directory of the site file + // system. The topic is given _without_ the file extension, which will be + // determined by the module. + // + // The valid file extensions for help topic are: + // + // - `.md` for markdown formatted source files. + // - `.bb` for bbcode formatted source files. + // - `.html` for help topics in html format. + // + + // Strip away the module name from the args + $args = array_slice(\App::$argv, 1); + + // Remove language if necessary + // + // The language was determined during pre-request processing in the + // `init` function. + if ($this->lang['from_url']) { + array_shift($args); + } + + // Keep the first remaining arg as the heading slug + $this->heading_slug = $args[0]; + + // Locate the file for the topic in the doc directory + $this->find_help_file(implode('/', $args), $this->lang['language']); + + $this->set_page_title(); + + if (empty($this->file_name)) { + header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found')); + $tpl = get_markup_template("404.tpl"); + return replace_macros($tpl, array( + '$message' => t('Page not found.') + )); + + } else { + $tpl = get_markup_template('help.tpl'); + return replace_macros($tpl, [ '$module' => $this ]); + } + } + + public function render_content(): string { + return $this->render_help_file($this->file_name, $this->file_type); + } + + public function render_help_file(string $file_name, string $file_type): string { + $raw_text = file_get_contents($file_name); + + switch ($file_type) { + case 'md': + // We need to escape the `#include` statements in the original file, + // to be sure it's not rendered as a heading by markdown. + $raw_text = preg_replace('/#include/ism', '%%include', $raw_text); + $content = MarkdownExtra::defaultTransform($raw_text); + $content = preg_replace('/%%include/ism', '#include', $content); + break; + + case 'bb': + $content = zidify_links(bbcode($raw_text)); + break; + + case 'html': + $content = parseIdentityAwareHTML($raw_text); + break; + } + + // Replace includes with the contents of the included file + $content = preg_replace_callback( + "/#include (.*?)\;/ism", + function ($matches) { + $parts = explode('.', $matches[1]); + $sub_file_type = array_pop($parts); + $included_content = $this->render_help_file($matches[1], $sub_file_type); + return str_replace($matches[0], $included_content, $matches[0]); + }, + $content + ); + + return translate_projectname($content); + } + + public function get_page_title(): string { + $title = t('$Projectname Documentation'); + $heading = $this->get_heading(); + + if (! empty($heading)) { + $title .= ': ' . $heading; + } + + return $title; + } + + public function get_toc_heading(): string { + return t('Contents'); + } + + + private function get_heading(): string { $headings = [ 'about' => t('About'), 'member' => t('Members'), @@ -89,21 +246,22 @@ class Help extends \Zotlabs\Web\Controller { 'tutorials' => t('Tutorials') ]; - $heading = ''; - if(array_key_exists(argv(1), $headings)) - $heading = $headings[argv(1)]; - - $content = get_help_content(); - - $language = determine_help_language()['language']; - - return replace_macros(get_markup_template('help.tpl'), array( - '$title' => t('$Projectname Documentation'), - '$tocHeading' => t('Contents'), - '$content' => $content, - '$heading' => $heading, - '$language' => $language - )); + if(array_key_exists($this->heading_slug, $headings)) { + return $headings[$this->heading_slug]; + } else { + return ''; + } } + /** + * Set the page title to an unslugified version of the file name. + * + * @Note This modifies the global `App::$page['title']` property. + */ + private function set_page_title(): void { + $title = basename($this->file_name, ".{$this->file_type}"); + \App::$page['title'] = + t('Help:') . ' ' + . ucwords(str_replace(['-', '_'],' ',notags($title))); + } } diff --git a/Zotlabs/Module/Home.php b/Zotlabs/Module/Home.php index 8d78960cc..691ca1af9 100644 --- a/Zotlabs/Module/Home.php +++ b/Zotlabs/Module/Home.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module; use App; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; use Zotlabs\Web\Controller; use Zotlabs\Web\HTTPSig; @@ -20,7 +21,7 @@ class Home extends Controller { call_hooks('home_init', $ret); if (Libzot::is_zot_request()) { - $key = get_config('system', 'prvkey'); + $key = Config::Get('system', 'prvkey'); $ret = json_encode(Libzot::site_info()); $headers = ['Content-Type' => 'application/x-zot+json', 'Digest' => HTTPSig::generate_digest_header($ret)]; @@ -38,7 +39,7 @@ class Home extends Controller { if (local_channel() && $channel && $channel['xchan_url'] && !$splash) { $dest = $ret['startpage'] ?? ''; if (!$dest) - $dest = get_config('system', 'startpage'); + $dest = Config::Get('system', 'startpage'); if (!$dest) $dest = z_root() . '/hq'; @@ -78,7 +79,7 @@ class Home extends Controller { if ($o) return $o; - $frontpage = get_config('system', 'frontpage'); + $frontpage = Config::Get('system', 'frontpage'); if ($frontpage) { if (strpos($frontpage, 'include:') !== false) { $file = trim(str_replace('include:', '', $frontpage)); @@ -91,7 +92,7 @@ class Home extends Controller { } if (strpos($frontpage, 'http') !== 0) $frontpage = z_root() . '/' . $frontpage; - if (intval(get_config('system', 'mirror_frontpage'))) { + if (intval(Config::Get('system', 'mirror_frontpage'))) { $o = '<html><head><title>' . t('$Projectname') . '</title></head><body style="margin: 0; padding: 0; border: none;" ><iframe src="' . $frontpage . '" width="100%" height="100%" style="margin: 0; padding: 0; border: none;" ></iframe></body></html>'; echo $o; killme(); @@ -99,11 +100,11 @@ class Home extends Controller { goaway($frontpage); } - $sitename = get_config('system', 'sitename'); + $sitename = Config::Get('system', 'sitename'); if ($sitename) $o .= '<h1 class="home-welcome">' . sprintf(t('Welcome to %s'), $sitename) . '</h1>'; - $loginbox = get_config('system', 'login_on_homepage'); + $loginbox = Config::Get('system', 'login_on_homepage'); if (intval($loginbox) || $loginbox === false) $o .= login(true); diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php index ae6a016fc..c8e6efe38 100644 --- a/Zotlabs/Module/Hq.php +++ b/Zotlabs/Module/Hq.php @@ -4,14 +4,6 @@ namespace Zotlabs\Module; use App; use Zotlabs\Widget\Messages; - -require_once("include/bbcode.php"); -require_once('include/security.php'); -require_once('include/conversation.php'); -require_once('include/acl_selectors.php'); -require_once('include/items.php'); - - class Hq extends \Zotlabs\Web\Controller { function init() { @@ -98,7 +90,6 @@ class Hq extends \Zotlabs\Web\Controller { 'permissions' => $channel_acl, 'bang' => '', 'visitor' => true, - 'profile_uid' => local_channel(), 'return_path' => 'hq', 'expanded' => true, 'editor_autocomplete' => true, @@ -117,17 +108,6 @@ class Hq extends \Zotlabs\Web\Controller { nav_set_selected('HQ'); - if($target_item) { - // if the target item is not a post (eg a like) we want to address its thread parent - //$mid = ((($target_item['verb'] == ACTIVITY_LIKE) || ($target_item['verb'] == ACTIVITY_DISLIKE)) ? $target_item['thr_parent'] : $target_item['mid']); - - // if we got a decoded hash we must encode it again before handing to javascript - // $mid = gen_link_id($target_item['mid']); - } - else { - $mid = ''; - } - $o .= '<div id="live-hq"></div>' . "\r\n"; $o .= "<script> var profile_uid = " . local_channel() . "; var netargs = '?f='; var profile_page = " . App::$pager['page'] . ";</script>\r\n"; diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php index c8a9ac5ed..5ace4e72d 100644 --- a/Zotlabs/Module/Import.php +++ b/Zotlabs/Module/Import.php @@ -9,6 +9,7 @@ require_once('include/perm_upgrade.php'); use App; use URLify; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; use Zotlabs\Web\Controller; @@ -168,7 +169,7 @@ class Import extends Controller { if ($newname) { $x = false; - if (get_config('system', 'unicode_usernames')) { + if (Config::Get('system', 'unicode_usernames')) { $x = punify(mb_strtolower($newname)); } @@ -191,6 +192,12 @@ class Import extends Controller { return; } + if ($channel['channel_removed']) { + logger('Channel exists but has been marked removed on this hub. ', print_r($channel,true)); + notice( t('Channel exists but has been marked removed on this hub. Import failed.') . EOL); + return; + } + if (is_array($data['config'])) { import_config($channel, $data['config']); } @@ -227,10 +234,10 @@ class Import extends Controller { 'hubloc_url_sig' => Libzot::sign(z_root(), $channel['channel_prvkey']), 'hubloc_host' => App::get_hostname(), 'hubloc_callback' => z_root() . '/zot', - 'hubloc_sitekey' => get_config('system', 'pubkey'), + 'hubloc_sitekey' => Config::Get('system', 'pubkey'), 'hubloc_updated' => datetime_convert(), 'hubloc_id_url' => channel_url($channel), - 'hubloc_site_id' => Libzot::make_xchan_hash(z_root(), get_config('system', 'pubkey')) + 'hubloc_site_id' => Libzot::make_xchan_hash(z_root(), Config::Get('system', 'pubkey')) ] ); @@ -524,27 +531,31 @@ class Import extends Controller { // This will indirectly perform a refresh_all *and* update the directory Master::Summon(['Directory', $channel['channel_id']]); - $cf_api_compat = true; + if ($api_path) { + $parsed = parse_url($api_path); + unset($parsed['path']); - if ($api_path && $import_posts) { // we are importing from a server and not a file - if (version_compare($data['compatibility']['version'], '6.3.4', '>=')) { + // store the import host so we can manually kick off item/file sync later in case anything did not work out + set_pconfig($channel['channel_id'], 'import', 'host', $parsed['host']); - $m = parse_url($api_path); + $hz_server = unparse_url($parsed); + } - $hz_server = $m['scheme'] . '://' . $m['host']; + $cf_api_compat = false; + + if ($api_path && $hz_server && $import_posts) { // we are importing from a server and not a file + if (version_compare($data['compatibility']['version'], '6.3.4', '>=')) { + $cf_api_compat = true; $since = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), '0001-01-01 00:00'); $until = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), 'now + 1 day'); - //$poll_interval = get_config('system', 'poll_interval', 3); + //$poll_interval = Config::Get('system', 'poll_interval', 3); $page = 0; Master::Summon(['Content_importer', sprintf('%d', $page), $since, $until, $channel['channel_address'], urlencode($hz_server)]); Master::Summon(['File_importer', sprintf('%d', $page), $channel['channel_address'], urlencode($hz_server)]); } - else { - $cf_api_compat = false; - } } change_channel($channel['channel_id']); @@ -553,7 +564,7 @@ class Import extends Controller { goaway(z_root() . '/import_progress'); } - if (!$cf_api_compat) { + if ($import_posts && !$cf_api_compat) { notice(t('Automatic content and files import was not possible due to API version incompatiblity. Please import content and files manually!') . EOL); } diff --git a/Zotlabs/Module/Import_progress.php b/Zotlabs/Module/Import_progress.php index 5c68f9ff1..d9b13e8a8 100644 --- a/Zotlabs/Module/Import_progress.php +++ b/Zotlabs/Module/Import_progress.php @@ -1,6 +1,7 @@ <?php namespace Zotlabs\Module; +use App; use Zotlabs\Lib\PConfig; use Zotlabs\Daemon\Master; @@ -21,6 +22,9 @@ class Import_progress extends \Zotlabs\Web\Controller { nav_set_selected('Channel Import'); + $channel = App::get_channel(); + $import_host = PConfig::Get(local_channel(), 'import', 'host'); + // items $c = PConfig::Get(local_channel(), 'import', 'content_progress'); @@ -41,6 +45,24 @@ class Import_progress extends \Zotlabs\Web\Controller { } } else { + if(argv(1) === 'resume_itemsync' && $import_host) { + $alive = probe_api_path($import_host); + if ($alive) { + $parsed = parse_url($alive); + unset($parsed['path']); + + $hz_server = unparse_url($parsed); + $since = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), '0001-01-01 00:00'); + $until = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), 'now + 1 day'); + $page = 0; + Master::Summon(['Content_importer', sprintf('%d', $page), $since, $until, $channel['channel_address'], urlencode($hz_server)]); + goaway('/import_progress'); + } + else { + notice(t('Import host does not seem to be online or compatible') . EOL); + } + } + $cprogress = 'waiting to start...'; if (PConfig::Get(local_channel(), 'import', 'content_completed')) { @@ -73,6 +95,23 @@ class Import_progress extends \Zotlabs\Web\Controller { } } else { + if(argv(1) === 'resume_filesync' && $import_host) { + $alive = probe_api_path($import_host); + if ($alive) { + $parsed = parse_url($alive); + unset($parsed['path']); + + $hz_server = unparse_url($parsed); + $page = 0; + + Master::Summon(['File_importer', sprintf('%d', $page), $channel['channel_address'], urlencode($hz_server)]); + goaway('/import_progress'); + } + else { + notice(t('Import host does not seem to be online or compatible') . EOL); + } + } + $fprogress = 'waiting to start...'; if (PConfig::Get(local_channel(), 'import', 'files_completed')) { diff --git a/Zotlabs/Module/Invite.php b/Zotlabs/Module/Invite.php index bb552e4c7..3e1e98f89 100644 --- a/Zotlabs/Module/Invite.php +++ b/Zotlabs/Module/Invite.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; /** @@ -76,7 +77,7 @@ class Invite extends Controller { $feedbk = ''; $isajax = is_ajax(); $eol = $isajax ? "\n" : EOL; - $policy = intval(get_config('system','register_policy')); + $policy = intval(Config::Get('system','register_policy')); if ($policy == REGISTER_CLOSED) { notice( 'ZAI0212E,' . t('Register is closed') . ')' . EOL); return; @@ -85,13 +86,13 @@ class Invite extends Controller { $flags = 0; elseif ($policy == REGISTER_APPROVE) $flags = ACCOUNT_PENDING; - $flags = ($flags | intval(get_config('system','verify_email'))); + $flags = ($flags | intval(Config::Get('system','verify_email'))); // how many max recipients in one mail submit - $maxto = get_config('system','invitation_max_recipients', 'na'); + $maxto = Config::Get('system','invitation_max_recipients', 'na'); If (is_site_admin()) { // set, if admin is operator, default to 12 - if ($maxto === 'na') set_config('system','invitation_max_recipients', 12); + if ($maxto === 'na') Config::Set('system','invitation_max_recipients', 12); } $maxto = ($maxto === 'na') ? 12 : $maxto; @@ -323,7 +324,7 @@ class Invite extends Controller { return Apps::app_render($papp, 'module'); } - if (! (get_config('system','invitation_also') || get_config('system','invitation_only')) ) { + if (! (Config::Get('system','invitation_also') || Config::Get('system','invitation_only')) ) { $o = 'ZAI0103E,' . t('Invites not proposed by configuration') . '. '; $o .= t('Contact the site admin'); return $o; @@ -331,7 +332,7 @@ class Invite extends Controller { // invitation_by_user may still not configured, the default 'na' will tell this // if configured, 0 disables invitations by users, other numbers are how many invites a user may propagate - $invuser = get_config('system','invitation_by_user', 'na'); + $invuser = Config::Get('system','invitation_by_user', 'na'); // if the mortal user drives the invitation If (! is_site_admin()) { @@ -352,7 +353,7 @@ class Invite extends Controller { } else { // general deity admin invite limit infinite (theoretical) - if ($invuser === 'na') set_config('system','invitation_by_user', 4); + if ($invuser === 'na') Config::Set('system','invitation_by_user', 4); // for display only $invuser = '∞'; } @@ -385,11 +386,11 @@ class Invite extends Controller { $wehave = ($r ? $r[0]['ct'] : 0); // invites max for all users except admins - $invmaxau = intval(get_config('system','invitations_max_users')); + $invmaxau = intval(Config::Get('system','invitations_max_users')); if(! $invmaxau) { $invmaxau = 50; if (is_site_admin()) { - set_config('system','invitations_max_users',intval($invmaxau)); + Config::Set('system','invitations_max_users',intval($invmaxau)); } } @@ -519,7 +520,7 @@ class Invite extends Controller { $ts = replace_macros(get_intltext_template('invite.'.$t1.'.subject.tpl'), array( '$projectname' => t('$Projectname'), - '$invite_loc' => get_config('system','sitename') + '$invite_loc' => Config::Get('system','sitename') ) ); @@ -569,7 +570,7 @@ class Invite extends Controller { function calcdue($duri=false) { // expirations, duration interval if ($duri===false) - $duri = get_config('system','register_expire', '2d'); + $duri = Config::Get('system','register_expire', '2d'); if ( preg_match( '/^[0-9]{1,2}[ihdwmy]{1}$/', $duri ) ) { $durq = substr($duri, -1); $durn = substr($duri, 0, -1); diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index 0324bf662..3d13655d2 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -1262,6 +1262,11 @@ class Item extends Controller { if ((x($_REQUEST, 'return')) && strlen($return_path)) { logger('return: ' . $return_path); + + if ($return_path === 'hq') { + goaway(z_root() . '/hq/' . $datarray['uuid']); + } + goaway(z_root() . "/" . $return_path); } killme(); @@ -1654,7 +1659,7 @@ class Item extends Controller { $listener = Libzot::zot_record_preferred($listener); $c = q("select abook_id from abook where abook_channel = %d and abook_xchan = '%s'", - intval($profile_uid), + intval($item['uid']), dbesc($listener['hubloc_hash']) ); diff --git a/Zotlabs/Module/Linkinfo.php b/Zotlabs/Module/Linkinfo.php index 081966dba..8eb9a8c6d 100644 --- a/Zotlabs/Module/Linkinfo.php +++ b/Zotlabs/Module/Linkinfo.php @@ -1,6 +1,7 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; class Linkinfo extends \Zotlabs\Web\Controller { @@ -168,7 +169,7 @@ class Linkinfo extends \Zotlabs\Web\Controller { /* Execute below code only if image is present in siteinfo */ $total_images = 0; - $max_images = get_config('system','max_bookmark_images'); + $max_images = Config::Get('system','max_bookmark_images'); if($max_images === false) $max_images = 2; else diff --git a/Zotlabs/Module/Lockview.php b/Zotlabs/Module/Lockview.php index 0c8e23f8c..f3ae07f74 100644 --- a/Zotlabs/Module/Lockview.php +++ b/Zotlabs/Module/Lockview.php @@ -227,7 +227,7 @@ class Lockview extends Controller { $allowed_xchans = array_unique($allowed_xchans); foreach ($atokens as $atoken) { if (in_array($atoken['xchan_hash'], $allowed_xchans)) { - $guest_access_list[] = '<div class="dropdown-item d-flex justify-content-between cursor-pointer" title="' . sprintf(t('Click to copy link to this ressource for guest %s to clipboard'), $atoken['xchan_name']) . '" data-token="' . $url . '?zat=' . $atoken['atoken_token'] . '" onclick="navigator.clipboard.writeText(this.dataset.token); $.jGrowl(\'' . t('Link copied') . '\', { sticky: false, theme: \'info\', life: 1000 });"><span>' . $atoken['xchan_name'] . '</span><i class="fa fa-copy p-1"></i></div>'; + $guest_access_list[] = '<div class="dropdown-item d-flex justify-content-between cursor-pointer" title="' . sprintf(t('Click to copy link to this ressource for guest %s to clipboard'), $atoken['xchan_name']) . '" data-token="' . $url . '?zat=' . $atoken['atoken_token'] . '" onclick="navigator.clipboard.writeText(this.dataset.token); toast(\'' . t('Link copied') . '\', \'info\');"><span>' . $atoken['xchan_name'] . '</span><i class="fa fa-copy p-1"></i></div>'; } } } diff --git a/Zotlabs/Module/Lostpass.php b/Zotlabs/Module/Lostpass.php index a0f9018b2..9846c541e 100644 --- a/Zotlabs/Module/Lostpass.php +++ b/Zotlabs/Module/Lostpass.php @@ -1,7 +1,7 @@ <?php namespace Zotlabs\Module; - +use Zotlabs\Lib\Config; class Lostpass extends \Zotlabs\Web\Controller { @@ -34,19 +34,19 @@ class Lostpass extends \Zotlabs\Web\Controller { $email_tpl = get_intltext_template("lostpass_eml.tpl"); $message = replace_macros($email_tpl, array( - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$username' => sprintf( t('Site Member (%s)'), $email), '$email' => $email, '$reset_link' => z_root() . '/lostpass?verify=' . $hash )); - $subject = email_header_encode(sprintf( t('Password reset requested at %s'),get_config('system','sitename')), 'UTF-8'); + $subject = email_header_encode(sprintf( t('Password reset requested at %s'),Config::Get('system','sitename')), 'UTF-8'); $res = z_mail( [ 'toEmail' => $email, - 'messageSubject' => sprintf( t('Password reset requested at %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Password reset requested at %s'), Config::Get('system','sitename')), 'textVersion' => $message, ] ); @@ -114,7 +114,7 @@ class Lostpass extends \Zotlabs\Web\Controller { $res = z_mail( [ 'toEmail' => $email, - 'messageSubject' => sprintf( t('Your password has changed at %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Your password has changed at %s'), Config::Get('system','sitename')), 'textVersion' => $message, ] ); diff --git a/Zotlabs/Module/New_channel.php b/Zotlabs/Module/New_channel.php index 24dbe2944..48fcd9e10 100644 --- a/Zotlabs/Module/New_channel.php +++ b/Zotlabs/Module/New_channel.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; use URLify; +use Zotlabs\Lib\Config; require_once('include/channel.php'); require_once('include/permissions.php'); @@ -20,7 +21,7 @@ class New_channel extends \Zotlabs\Web\Controller { $x = false; - if(get_config('system','unicode_usernames')) { + if(Config::Get('system','unicode_usernames')) { $x = punify(mb_strtolower($n)); } @@ -55,7 +56,7 @@ class New_channel extends \Zotlabs\Web\Controller { $x = false; - if(get_config('system','unicode_usernames')) { + if(Config::Get('system','unicode_usernames')) { $x = punify(mb_strtolower($n)); } @@ -117,7 +118,7 @@ class New_channel extends \Zotlabs\Web\Controller { change_channel($result['channel']['channel_id']); - $next_page = get_config('system', 'workflow_channel_next', 'profiles'); + $next_page = Config::Get('system', 'workflow_channel_next', 'profiles'); goaway(z_root() . '/' . $next_page); } @@ -138,7 +139,7 @@ class New_channel extends \Zotlabs\Web\Controller { intval($aid) ); if($r && (! intval($r[0]['total']))) { - $default_role = get_config('system','default_permissions_role','personal'); + $default_role = Config::Get('system','default_permissions_role','personal'); } $limit = account_service_class_fetch(get_account_id(),'total_identities'); @@ -163,7 +164,7 @@ class New_channel extends \Zotlabs\Web\Controller { $nick_help = '<span id="nick_help_loading" style="display:none">' . t('Loading') . '</span><span id="nick_help_text">'; $nick_help .= t('This will be used to create a unique network address (like an email address).'); - if(! get_config('system','unicode_usernames')) { + if(! Config::Get('system','unicode_usernames')) { $nick_help .= ' ' . t('Allowed characters are a-z 0-9, - and _'); } $nick_help .= '<span>'; diff --git a/Zotlabs/Module/Profile_photo.php b/Zotlabs/Module/Profile_photo.php index dc47d213b..8c9d4d90c 100644 --- a/Zotlabs/Module/Profile_photo.php +++ b/Zotlabs/Module/Profile_photo.php @@ -4,6 +4,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; use Zotlabs\Web\Controller; @@ -599,7 +600,7 @@ class Profile_photo extends Controller { function profile_photo_crop_ui_head($ph, $hash, $smallest) { - $max_length = get_config('system', 'max_image_length'); + $max_length = Config::Get('system', 'max_image_length'); if (!$max_length) { $max_length = MAX_IMAGE_LENGTH; diff --git a/Zotlabs/Module/Profiles.php b/Zotlabs/Module/Profiles.php index 15252d6e6..a06193e12 100644 --- a/Zotlabs/Module/Profiles.php +++ b/Zotlabs/Module/Profiles.php @@ -1,6 +1,7 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; class Profiles extends \Zotlabs\Web\Controller { @@ -619,14 +620,16 @@ class Profiles extends \Zotlabs\Web\Controller { $profile_fields_advanced = get_profile_fields_advanced(); if(((argc() > 1) && (intval(argv(1)))) || !feature_enabled(local_channel(),'multi_profiles')) { - if(feature_enabled(local_channel(),'multi_profiles')) + if (feature_enabled(local_channel(), 'multi_profiles')) { $id = \App::$argv[1]; + } else { $x = q("select id from profile where uid = %d and is_default = 1", intval(local_channel()) ); - if($x) + if ($x) { $id = $x[0]['id']; + } } $r = q("SELECT * FROM profile WHERE id = %d AND uid = %d LIMIT 1", @@ -634,7 +637,7 @@ class Profiles extends \Zotlabs\Web\Controller { intval(local_channel()) ); - if(! $r) { + if (!$r) { notice( t('Profile not found.') . EOL); return; } @@ -673,7 +676,7 @@ class Profiles extends \Zotlabs\Web\Controller { $opt_tpl = get_markup_template("field_checkbox.tpl"); - if (get_config('system', 'publish_all')) { + if (Config::Get('system', 'publish_all')) { $profile_in_dir = '<input type="hidden" name="profile_in_directory" value="1" />'; } else { @@ -716,7 +719,7 @@ class Profiles extends \Zotlabs\Web\Controller { //$vctmp = (($vc) ? \Sabre\VObject\Reader::read($vc) : null); //$vcard = (($vctmp) ? get_vcard_array($vctmp,$r[0]['id']) : [] ); - $f = get_config('system','birthday_input_format'); + $f = Config::Get('system','birthday_input_format'); if(! $f) $f = 'ymd'; @@ -826,7 +829,8 @@ class Profiles extends \Zotlabs\Web\Controller { else { $r = q("SELECT * FROM profile WHERE uid = %d", - local_channel()); + intval(local_channel()) + ); if($r) { $tpl = get_markup_template('profile_entry.tpl'); diff --git a/Zotlabs/Module/Profperm.php b/Zotlabs/Module/Profperm.php index 900e2f981..842197415 100644 --- a/Zotlabs/Module/Profperm.php +++ b/Zotlabs/Module/Profperm.php @@ -1,6 +1,7 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; require_once('include/photos.php'); @@ -8,42 +9,42 @@ require_once('include/photos.php'); class Profperm extends \Zotlabs\Web\Controller { function init() { - + if(! local_channel()) return; - + $channel = \App::get_channel(); $which = $channel['channel_address']; - + $profile = \App::$argv[1]; - + profile_load($which,$profile); - + } - - + + function get() { - + if(! local_channel()) { notice( t('Permission denied') . EOL); return; } - - + + if(argc() < 2) { notice( t('Invalid profile identifier.') . EOL ); return; } - + // Switch to text mod interface if we have more than 'n' contacts or group members - + $switchtotext = get_pconfig(local_channel(),'system','groupedit_image_limit'); if($switchtotext === false) - $switchtotext = get_config('system','groupedit_image_limit'); + $switchtotext = Config::Get('system','groupedit_image_limit'); if($switchtotext === false) $switchtotext = 400; - - + + if((argc() > 2) && intval(argv(1)) && intval(argv(2))) { $r = q("SELECT abook_id FROM abook WHERE abook_id = %d and abook_channel = %d limit 1", intval(argv(2)), @@ -52,8 +53,8 @@ class Profperm extends \Zotlabs\Web\Controller { if($r) $change = intval(argv(2)); } - - + + if((argc() > 1) && (intval(argv(1)))) { $r = q("SELECT * FROM profile WHERE id = %d AND uid = %d AND is_default = 0 LIMIT 1", intval(argv(1)), @@ -63,21 +64,21 @@ class Profperm extends \Zotlabs\Web\Controller { notice( t('Invalid profile identifier.') . EOL ); return; } - + $profile = $r[0]; - + $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d AND abook_profile = '%s'", intval(local_channel()), dbesc($profile['profile_guid']) ); - + $ingroup = array(); if($r) foreach($r as $member) $ingroup[] = $member['abook_id']; - + $members = $r; - + if($change) { if(in_array($change,$ingroup)) { q("UPDATE abook SET abook_profile = '' WHERE abook_id = %d AND abook_channel = %d", @@ -91,42 +92,42 @@ class Profperm extends \Zotlabs\Web\Controller { intval($change), intval(local_channel()) ); - + } - - $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash + + $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d AND abook_profile = '%s'", intval(local_channel()), dbesc($profile['profile_guid']) ); - + $members = $r; - + $ingroup = array(); if(count($r)) foreach($r as $member) $ingroup[] = $member['abook_id']; } - + $o .= '<h2>' . t('Profile Visibility Editor') . '</h2>'; - + $o .= '<h3>' . t('Profile') . ' \'' . $profile['profile_name'] . '\'</h3>'; - + $o .= '<div id="prof-edit-desc">' . t('Click on a contact to add or remove.') . '</div>'; - + } - + $o .= '<div id="prof-update-wrapper">'; if($change) $o = ''; - + $o .= '<div id="prof-members-title">'; $o .= '<h3>' . t('Visible To') . '</h3>'; $o .= '</div>'; $o .= '<div id="prof-members">'; - + $textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false); - + foreach($members as $member) { if($member['xchan_url']) { $member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['abook_id'] . '); return false;'; @@ -135,14 +136,14 @@ class Profperm extends \Zotlabs\Web\Controller { } $o .= '</div><div id="prof-members-end"></div>'; $o .= '<hr id="prof-separator" />'; - + $o .= '<div id="prof-all-contcts-title">'; $o .= '<h3>' . t("All Connections") . '</h3>'; $o .= '</div>'; $o .= '<div id="prof-all-contacts">'; - + $r = abook_connections(local_channel()); - + if($r) { $textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false); foreach($r as $member) { @@ -152,17 +153,17 @@ class Profperm extends \Zotlabs\Web\Controller { } } } - + $o .= '</div><div id="prof-all-contacts-end"></div>'; - + if($change) { echo $o; killme(); } $o .= '</div>'; return $o; - + } - - + + } diff --git a/Zotlabs/Module/Pubsites.php b/Zotlabs/Module/Pubsites.php index 032406be4..cbaa66042 100644 --- a/Zotlabs/Module/Pubsites.php +++ b/Zotlabs/Module/Pubsites.php @@ -1,12 +1,13 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzotdir; class Pubsites extends \Zotlabs\Web\Controller { function get() { - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); $url = ''; @@ -19,7 +20,7 @@ class Pubsites extends \Zotlabs\Web\Controller { } $url .= '/sites'; - $rating_enabled = get_config('system','rating_enabled'); + $rating_enabled = Config::Get('system','rating_enabled'); $o = '<div class="generic-content-wrapper">'; diff --git a/Zotlabs/Module/Pubstream.php b/Zotlabs/Module/Pubstream.php index c40751fdc..6d8edf4d8 100644 --- a/Zotlabs/Module/Pubstream.php +++ b/Zotlabs/Module/Pubstream.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; require_once('include/conversation.php'); require_once('include/acl_selectors.php'); @@ -26,19 +27,19 @@ class Pubstream extends \Zotlabs\Web\Controller { return login(); } - if(! intval(get_config('system','open_pubstream',1))) { + if(! intval(Config::Get('system','open_pubstream',1))) { if(! get_observer_hash()) { return login(); } } - $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true); + $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true); if(!$net_firehose) { return ''; } - $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false); + $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false); $mid = $_REQUEST['mid'] ?? ''; $identifier = 'uuid'; @@ -107,7 +108,7 @@ class Pubstream extends \Zotlabs\Web\Controller { nav_set_selected(t('Public Stream')); - $maxheight = get_config('system','home_divmore_height'); + $maxheight = Config::Get('system','home_divmore_height'); if(! $maxheight) $maxheight = 400; @@ -172,7 +173,7 @@ class Pubstream extends \Zotlabs\Web\Controller { $site_firehose_sql = " and owner_xchan in (select channel_hash from channel where channel_system = 0 and channel_removed = 0) "; } - if(get_config('system','public_list_mode')) + if(Config::Get('system','public_list_mode')) $page_mode = 'list'; else $page_mode = 'client'; @@ -184,7 +185,6 @@ class Pubstream extends \Zotlabs\Web\Controller { $thread_top = ''; } - $net_query = (($net) ? " left join xchan on xchan_hash = author_xchan " : ''); $net_query2 = (($net) ? " and xchan_network = '" . protect_sprintf(dbesc($net)) . "' " : ''); if($update && $_SESSION['loadtime']) @@ -196,16 +196,17 @@ class Pubstream extends \Zotlabs\Web\Controller { if($update) { - $ordering = get_config('system', 'pubstream_ordering', 'commented'); + $ordering = Config::Get('system', 'pubstream_ordering', 'commented'); if($load) { if($mid) { $r = q("SELECT parent AS item_id FROM item left join abook on item.author_xchan = abook.abook_xchan - $net_query + left join xchan on item.author_xchan = xchan.xchan_hash WHERE item.$identifier = '%s' and item.item_private = 0 $uids $site_firehose_sql $item_normal + and xchan.xchan_censored = 0 and (abook.abook_blocked = 0 or abook.abook_flags is null) $sql_extra $net_query2", dbesc($mid) @@ -215,10 +216,11 @@ class Pubstream extends \Zotlabs\Web\Controller { // Fetch a page full of parent items for this page $r = dbq("SELECT parent AS item_id FROM item left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids ) - $net_query + left join xchan on item.author_xchan = xchan.xchan_hash WHERE item.item_private = 0 $thread_top $uids $site_firehose_sql $item_normal + and xchan.xchan_censored = 0 and (abook.abook_blocked = 0 or abook.abook_flags is null) $sql_extra $net_query2 ORDER BY $ordering DESC $pager_sql " @@ -229,9 +231,10 @@ class Pubstream extends \Zotlabs\Web\Controller { if($mid) { $r = q("SELECT parent AS item_id FROM item left join abook on item.author_xchan = abook.abook_xchan - $net_query + left join xchan on item.author_xchan = xchan.xchan_hash WHERE item.$identifier = '%s' and item.item_private = 0 $uids $site_firehose_sql $item_normal_update $simple_update + and xchan.xchan_censored = 0 and (abook.abook_blocked = 0 or abook.abook_flags is null) $sql_extra $net_query2", dbesc($mid) @@ -240,10 +243,11 @@ class Pubstream extends \Zotlabs\Web\Controller { else { $r = dbq("SELECT parent AS item_id FROM item left join abook on item.author_xchan = abook.abook_xchan - $net_query + left join xchan on item.author_xchan = xchan.xchan_hash WHERE item.item_private = 0 $thread_top $uids $site_firehose_sql $item_normal_update $simple_update + and xchan.xchan_censored = 0 and (abook.abook_blocked = 0 or abook.abook_flags is null) $sql_extra $net_query2" ); diff --git a/Zotlabs/Module/Rbmark.php b/Zotlabs/Module/Rbmark.php index 87b774495..df32a97c2 100644 --- a/Zotlabs/Module/Rbmark.php +++ b/Zotlabs/Module/Rbmark.php @@ -1,5 +1,5 @@ <?php -namespace Zotlabs\Module; /** @file */ +namespace Zotlabs\Module; require_once('include/acl_selectors.php'); require_once('include/crypto.php'); @@ -23,11 +23,9 @@ require_once('include/bookmarks.php'); * remote_return= absolute URL to return after posting is finished * */ - - class Rbmark extends \Zotlabs\Web\Controller { - function post() { + public function post(): void { if($_POST['submit'] !== t('Save')) return; @@ -36,22 +34,21 @@ class Rbmark extends \Zotlabs\Web\Controller { $channel = \App::get_channel(); $t = array('url' => escape_tags($_REQUEST['url']),'term' => escape_tags($_REQUEST['title'])); + bookmark_add($channel,$channel,$t,((x($_REQUEST,'private')) ? intval($_REQUEST['private']) : 0), array('menu_id' => ((x($_REQUEST,'menu_id')) ? intval($_REQUEST['menu_id']) : 0), - 'menu_name' => ((x($_REQUEST,'menu_name')) ? escape_tags($_REQUEST['menu_name']) : ''), - 'ischat' => ((x($_REQUEST['ischat'])) ? intval($_REQUEST['ischat']) : 0) + 'menu_name' => ((x($_REQUEST,'menu_name')) ? escape_tags($_REQUEST['menu_name']) : ''), + 'ischat' => ((x($_REQUEST['ischat'])) ? intval($_REQUEST['ischat']) : 0) )); goaway(z_root() . '/bookmarks'); - } - function get() { + public function get(): string { - $o = ''; - - if(! local_channel()) { + $channel_id = local_channel(); + if($channel_id === false) { // The login procedure is going to bugger our $_REQUEST variables // so save them in the session. @@ -62,59 +59,46 @@ class Rbmark extends \Zotlabs\Web\Controller { return login(); } - // If we have saved rbmark session variables, but nothing in the current $_REQUEST, recover the saved variables + // If we have saved rbmark session variables, but nothing in the + // current $_REQUEST, recover the saved variables if((! array_key_exists('url',$_REQUEST)) && (array_key_exists('bookmark',$_SESSION))) { $_REQUEST = $_SESSION['bookmark']; unset($_SESSION['bookmark']); } - if($_REQUEST['remote_return']) { - $_SESSION['remote_return'] = $_REQUEST['remote_return']; - } - if(argc() > 1 && argv(1) === 'return') { - if($_SESSION['remote_return']) - goaway($_SESSION['remote_return']); - goaway(z_root() . '/bookmarks'); - } - - $channel = \App::get_channel(); - - - $m = menu_list($channel['channel_id'],'',MENU_BOOKMARK); - - $menus = array(); - if($m) { - $menus = array(0 => ''); - foreach($m as $n) { - $menus[$n['menu_id']] = $n['menu_name']; - } - } - $menu_select = array('menu_id',t('Select a bookmark folder'),false,'',$menus); - - - $o .= replace_macros(get_markup_template('rbmark.tpl'), array( + $menu_select = [ + 'menu_id', + t('Select a bookmark folder'), + false, + '', + $this->get_bookmark_folders(intval($channel_id)), + null, + ]; + return replace_macros(get_markup_template('rbmark.tpl'), array( '$header' => t('Save Bookmark'), - '$url' => array('url',t('URL of bookmark'),escape_tags($_REQUEST['url'])), - '$title' => array('title',t('Description'),escape_tags($_REQUEST['title'])), + '$url' => array('url',t('URL of bookmark'),$_REQUEST['url'], null, null, null), + '$title' => array('title',t('Description'),$_REQUEST['title'], null, null, null), '$ischat' => ((x($_REQUEST,'ischat')) ? intval($_REQUEST['ischat']) : 0), '$private' => ((x($_REQUEST,'private')) ? intval($_REQUEST['private']) : 0), '$submit' => t('Save'), - '$menu_name' => array('menu_name',t('Or enter new bookmark folder name'),'',''), + '$menu_name' => array('menu_name',t('Or enter new bookmark folder name'),'','', null, null), '$menus' => $menu_select - )); + } + private function get_bookmark_folders(int $channel_id): array { + $menu_list = menu_list($channel_id, '', MENU_BOOKMARK); + $menus = [ 0 => '' ]; + if ($menu_list !== false) { + foreach($menu_list as $n) { + $menus[$n['menu_id']] = $n['menu_name']; + } + } - - - return $o; - + return $menus; } - - - } diff --git a/Zotlabs/Module/Regate.php b/Zotlabs/Module/Regate.php index ac6273951..c67f45a88 100644 --- a/Zotlabs/Module/Regate.php +++ b/Zotlabs/Module/Regate.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Connect; use Zotlabs\Daemon\Master; @@ -58,7 +59,7 @@ class Regate extends \Zotlabs\Web\Controller { // normally, that should never happen here // log suitable for fail2ban also $logmsg = 'ZAR1230S Unexpected registration verification request for ' - . get_config('system','sitename') . ' arrived from § ' . $ip . ' §'; + . Config::Get('system','sitename') . ' arrived from § ' . $ip . ' §'; zar_log($logmsg); goaway(z_root()); } @@ -118,7 +119,7 @@ class Regate extends \Zotlabs\Web\Controller { $isa = ($isa && ($isa['account_roles'] && ACCOUNT_ROLE_ADMIN)); // approve contra invite by admin - if ($isa && get_config('system','register_policy') == REGISTER_APPROVE) { + if ($isa && Config::Get('system','register_policy') == REGISTER_APPROVE) { $flags &= $flags ^ ACCOUNT_PENDING; } @@ -159,7 +160,7 @@ class Regate extends \Zotlabs\Web\Controller { $nextpage = 'new_channel'; - $auto_create = get_config('system', 'auto_channel_create', 1); + $auto_create = Config::Get('system', 'auto_channel_create', 1); if($auto_create) { @@ -179,7 +180,7 @@ class Regate extends \Zotlabs\Web\Controller { if($reonar['chan.did1']) set_aconfig($cra['account']['account_id'], 'register', 'channel_address', $reonar['chan.did1']); - $permissions_role = get_config('system','default_permissions_role'); + $permissions_role = Config::Get('system','default_permissions_role'); if($permissions_role) set_aconfig($cra['account']['account_id'], 'register', 'permissions_role', $permissions_role); @@ -206,7 +207,7 @@ class Regate extends \Zotlabs\Web\Controller { } change_channel($channel_id); - $nextpage = 'profiles/' . $channel_id; + $nextpage = Config::Get('system', 'workflow_channel_next', 'profiles'); $msg_code = 'ZAR1239I'; $msg = t('Channel successfull created') . ' ' . $did2; } diff --git a/Zotlabs/Module/Regdir.php b/Zotlabs/Module/Regdir.php index e49f89231..70e021715 100644 --- a/Zotlabs/Module/Regdir.php +++ b/Zotlabs/Module/Regdir.php @@ -1,6 +1,7 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Zotfinger; use Zotlabs\Web\Controller; @@ -13,55 +14,55 @@ use Zotlabs\Web\Controller; * We would then need a flag in the site table to indicate that they've been * validated by the PRIMARY directory for that realm. Sites claiming to be PRIMARY * but are not the realm PRIMARY will be marked invalid. - * + * * @param App &$a */ class Regdir extends Controller { function init() { - + $result = array('success' => false); - + $url = $_REQUEST['url']; $access_token = $_REQUEST['t']; $valid = 0; - + // we probably don't need the realm as we will find out in the probe. // What we may want to do is throw an error if you're trying to register in a different realm // so this configuration issue can be discovered. - + $realm = $_REQUEST['realm']; if(! $realm) $realm = DIRECTORY_REALM; - + if($realm === DIRECTORY_REALM) { $valid = 1; } else { - $token = get_config('system','realm_token'); + $token = Config::Get('system','realm_token'); if($token && $access_token != $token) { $result['message'] = 'This realm requires an access token'; return; } $valid = 1; } - - $dirmode = intval(get_config('system','directory_mode')); - + + $dirmode = intval(Config::Get('system','directory_mode')); + if ($dirmode == DIRECTORY_MODE_NORMAL) { $ret['message'] = t('This site is not a directory server'); json_return_and_die($ret); } - + $m = null; if ($url) { $m = parse_url($url); - + if ((! $m) || (! z_dns_check($m['host']))) { $result['message'] = 'unparseable url'; json_return_and_die($result); } - + $j = Zotfinger::exec($url); if($j) { $result['success'] = true; @@ -79,7 +80,7 @@ class Regdir extends Controller { } else { - + if ($dirmode == DIRECTORY_MODE_STANDALONE) { $r = array(array('site_url' => z_root())); } else { @@ -93,7 +94,7 @@ class Regdir extends Controller { $result['directories'] = array(); foreach ($r as $rr) $result['directories'][] = $rr['site_url']; - + json_return_and_die($result); } } diff --git a/Zotlabs/Module/Register.php b/Zotlabs/Module/Register.php index 5a50b4de0..f0163768c 100644 --- a/Zotlabs/Module/Register.php +++ b/Zotlabs/Module/Register.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module; use App; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; require_once('include/security.php'); @@ -63,7 +64,7 @@ class Register extends Controller { $act = q("SELECT COUNT(*) AS act FROM account")[0]['act']; $is247 = false; $ip = $_SERVER['REMOTE_ADDR']; - $sameip = intval(get_config('system','register_sameip', 3)); + $sameip = intval(Config::Get('system','register_sameip', 3)); $arr = $_POST; $invite_code = ((x($arr,'invite_code')) ? notags(trim($arr['invite_code'])) : ''); $name = ''; @@ -73,10 +74,10 @@ class Register extends Controller { $password2 = ((x($arr,'password2')) ? trim($arr['password2']) : ''); $register_msg = ((x($arr,'register_msg')) ? notags(trim($arr['register_msg'])) : ''); $reonar = []; - $auto_create = get_config('system','auto_channel_create', 1); + $auto_create = Config::Get('system','auto_channel_create', 1); $duty = zar_register_dutystate(); - if (!get_config('system', 'register_duty_jso')) { + if (!Config::Get('system', 'register_duty_jso')) { // if not yet configured default to true $duty = array( 'isduty' => true, 'atfrm' => '', 'nowfmt' => ''); } @@ -107,7 +108,7 @@ class Register extends Controller { } } - $email_verify = get_config('system', 'verify_email'); + $email_verify = Config::Get('system', 'verify_email'); if ($email_verify && !$email) { notice(t('Email address required') . EOL); return; @@ -180,9 +181,9 @@ class Register extends Controller { return; } - $policy = get_config('system','register_policy'); - $invonly = get_config('system','invitation_only'); - $invalso = get_config('system','invitation_also'); + $policy = Config::Get('system','register_policy'); + $invonly = Config::Get('system','invitation_only'); + $invalso = Config::Get('system','invitation_also'); switch($policy) { @@ -306,11 +307,11 @@ class Register extends Controller { if($policy == REGISTER_OPEN || $policy == REGISTER_APPROVE ) { - $cfgdelay = get_config('system', 'register_delay', '0i'); + $cfgdelay = Config::Get('system', 'register_delay', '0i'); $reg_delayed = calculate_adue( $cfgdelay ); $regdelay = (($reg_delayed) ? datetime_convert(date_default_timezone_get(), 'UTC', $reg_delayed['due']) : $now); - $cfgexpire = get_config('system', 'register_expire', '3d'); + $cfgexpire = Config::Get('system', 'register_expire', '3d'); $reg_expires = calculate_adue( $cfgexpire ); $regexpire = (($reg_expires) ? datetime_convert(date_default_timezone_get(), 'UTC', $reg_expires['due']) : datetime_convert('UTC', 'UTC', 'now + 99 years')); @@ -323,12 +324,12 @@ class Register extends Controller { $didx = 'e'; push_lang(($reg['lang']) ? $reg['lang'] : App::$language); - $reonar['from'] = get_config('system', 'from_email'); + $reonar['from'] = Config::Get('system', 'from_email'); $reonar['to'] = $email; - $reonar['subject'] = sprintf( t('Registration confirmation for %s'), get_config('system','sitename')); + $reonar['subject'] = sprintf( t('Registration confirmation for %s'), Config::Get('system','sitename')); $reonar['txttemplate']= replace_macros(get_intltext_template('register_verify_member.tpl'), [ - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$email' => $email, '$timeframe' => [$regdelay, $regexpire], @@ -428,10 +429,11 @@ class Register extends Controller { function get() { $registration_is = ''; + $register_msg = ''; $other_sites = ''; - if(intval(get_config('system','register_policy')) === REGISTER_CLOSED) { - if(intval(get_config('system','directory_mode')) === DIRECTORY_MODE_STANDALONE) { + if(intval(Config::Get('system','register_policy')) === REGISTER_CLOSED) { + if(intval(Config::Get('system','directory_mode')) === DIRECTORY_MODE_STANDALONE) { notice(t('Registration on this hub is disabled.') . EOL); return; } @@ -440,24 +442,25 @@ class Register extends Controller { return $mod->get(); } - if(intval(get_config('system','register_policy')) == REGISTER_APPROVE) { + if(intval(Config::Get('system','register_policy')) == REGISTER_APPROVE) { + $register_msg = ['register_msg', t('Why do you want to join this hub?'), ((x($_REQUEST,'register_msg')) ? $_REQUEST['register_msg'] : ''), t('This will help to review your registration')]; $registration_is = t('Registration on this hub is by approval only.'); $other_sites = '<a href="pubsites">' . t('Register at another affiliated hub in case when prefered') . '</a>'; } $duty = zar_register_dutystate(); - if (!get_config('system', 'register_duty_jso')) { + if (!Config::Get('system', 'register_duty_jso')) { // if not yet configured default to true $duty = array( 'isduty' => true, 'atfrm' => '', 'nowfmt' => ''); } $invitations = false; - if(intval(get_config('system','invitation_only'))) { + if(intval(Config::Get('system','invitation_only'))) { $invitations = true; $registration_is = t('Registration on this hub is by invitation only.'); $other_sites = '<a href="pubsites">' . t('Register at another affiliated hub') . '</a>'; - } elseif (intval(get_config('system','invitation_also'))) { + } elseif (intval(Config::Get('system','invitation_also'))) { $invitations = true; } @@ -466,7 +469,7 @@ class Register extends Controller { $duty['atform'] = 'disabled'; // Configurable terms of service link - $tosurl = get_config('system','tos_url'); + $tosurl = Config::Get('system','tos_url'); if(! $tosurl) $tosurl = z_root() . '/help/TermsOfService'; @@ -475,21 +478,21 @@ class Register extends Controller { // Configurable whether to restrict age or not - default is based on international legal requirements // This can be relaxed if you are on a restricted server that does not share with public servers - if(get_config('system','no_age_restriction')) { + if(Config::Get('system','no_age_restriction')) { $label_tos = sprintf( t('I accept the %s for this website'), $toslink); } else { - $age = get_config('system','minimum_age'); + $age = Config::Get('system','minimum_age'); if(!$age) { $age = 13; } $label_tos = sprintf( t('I am over %s years of age and accept the %s for this website'), $age, $toslink); } - $enable_tos = 1 - intval(get_config('system','no_termsofservice')); + $enable_tos = 1 - intval(Config::Get('system','no_termsofservice')); - $auto_create = get_config('system', 'auto_channel_create', 1); - $email_verify = get_config('system','verify_email'); + $auto_create = Config::Get('system', 'auto_channel_create', 1); + $email_verify = Config::Get('system','verify_email'); $emailval = ((x($_REQUEST,'email')) ? strip_tags(trim($_REQUEST['email'])) : ""); $email = ['email', @@ -506,13 +509,11 @@ class Register extends Controller { $invite_code = array('invite_code', t('Please enter your invitation code'), ((x($_REQUEST,'invite_code')) ? strip_tags(trim($_REQUEST['invite_code'])) : "")); $name = array('name', t('Your name'), ((x($_REQUEST,'name')) ? $_REQUEST['name'] : ''), t('Real name is preferred'), '', '', $duty['atform']); - $nickhub = '@' . str_replace(array('http://','https://','/'), '', get_config('system','baseurl')); + $nickhub = '@' . str_replace(array('http://','https://','/'), '', Config::Get('system','baseurl')); $nickname = array('nickname', t('Choose a short nickname'), ((x($_REQUEST,'nickname')) ? $_REQUEST['nickname'] : ''), t('Your nickname will be used to create an easy to remember channel address'), '', '', $duty['atform']); $tos = array('tos', $label_tos, ((x($_REQUEST,'tos')) ? $_REQUEST['tos'] : ''), '', [t('No'),t('Yes')], $duty['atform']); - $register_msg = ['register_msg', t('Why do you want to join this hub?'), ((x($_REQUEST,'register_msg')) ? $_REQUEST['register_msg'] : ''), t('This will help to review your registration')]; - require_once('include/bbcode.php'); $o = replace_macros(get_markup_template('register.tpl'), array( @@ -520,7 +521,7 @@ class Register extends Controller { '$title' => t('Registration'), '$reg_is' => $registration_is, '$register_msg' => $register_msg, - '$registertext' => bbcode(get_config('system','register_text')), + '$registertext' => bbcode(Config::Get('system','register_text')), '$other_sites' => $other_sites, '$msg' => $opal['msg'], '$invitations' => $invitations, @@ -551,7 +552,7 @@ class Register extends Controller { // check against register, account $rear = array( 'is' => false, 'rn' => 0, 'an' => 0, 'msg' => '' ); - $max_dailies = intval(get_config('system', 'max_daily_registrations', 50)); + $max_dailies = intval(Config::Get('system', 'max_daily_registrations', 50)); if ($max_dailies) { diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 23324ee3a..45f19d7e7 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -28,119 +28,31 @@ require_once('include/conversation.php'); * type= choices are 'html' or 'bbcode', default is 'bbcode' * */ - - - - class Rpost extends \Zotlabs\Web\Controller { - function get() { - - $o = ''; - - if(! local_channel()) { - if(remote_channel()) { - // redirect to your own site. - // We can only do this with a GET request so you'll need to keep the text short or risk getting truncated - // by the wretched beast called 'suhosin'. All the browsers now allow long GET requests, but suhosin - // blocks them. - - $url = Libzot::get_rpost_path(App::get_observer()); - // make sure we're not looping to our own hub - if(($url) && (! stristr($url, App::get_hostname()))) { - foreach($_GET as $key => $arg) { - if($key === 'q') - continue; - $url .= '&' . $key . '=' . $arg; - } - goaway($url); - } - } + /** + * Handle requests. + * + * Despite it's name, this method handles both POST and GET requests + * to the module. + */ + public function get(): string { - // The login procedure is going to bugger our $_REQUEST variables - // so save them in the session. + $channel_id = local_channel(); - if(array_key_exists('body',$_REQUEST)) { - $_SESSION['rpost'] = $_REQUEST; - } - return login(); + if(! $channel_id) { + return $this->redirect_or_login(); } nav_set_selected('Post'); - if (local_channel() && array_key_exists('userfile',$_FILES)) { - - $channel = App::get_channel(); - $observer = App::get_observer(); - - $def_album = get_pconfig($channel['channel_id'],'system','photo_path'); - $def_attach = get_pconfig($channel['channel_id'],'system','attach_path'); - - $r = attach_store($channel, (($observer) ? $observer['xchan_hash'] : ''), '', [ - 'source' => 'editor', - 'visible' => 0, - 'album' => $def_album, - 'directory' => $def_attach, - 'flags' => 1, // indicates temporary permissions are created - 'allow_cid' => '<' . $channel['channel_hash'] . '>', - 'allow_gid' => '', - 'deny_cid' => '', - 'deny_gid' => '' - ]); - - if (! $r['success']) { - notice( $r['message'] . EOL); - } - - $s = EMPTY_STR; - - if (intval($r['data']['is_photo'])) { - $s .= "\n\n" . $r['body'] . "\n\n"; - } - - $url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path']; - - if (strpos($r['data']['filetype'],'video') === 0) { - $s .= "\n\n" . '[zvideo]' . $url . '[/zvideo]' . "\n\n"; - } - - if (strpos($r['data']['filetype'],'audio') === 0) { - $s .= "\n\n" . '[zaudio]' . $url . '[/zaudio]' . "\n\n"; - } - - if ($r['data']['filetype'] === 'image/svg+xml') { - $x = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); - if ($x) { - $bb = svg2bb($x); - if ($bb) { - $s .= "\n\n" . $bb; - } - else { - logger('empty return from svgbb'); - } - } - else { - logger('unable to read svg data file: ' . 'store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); - } - } - - if ($r['data']['filetype'] === 'text/calendar') { - $content = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); - if ($content) { - $ev = ical_to_ev($content); - if ($ev) { - $s .= "\n\n" . format_event_bbcode($ev[0]) . "\n\n"; - } - } - } - - $s .= "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n"; - $_REQUEST['body'] = ((array_key_exists('body',$_REQUEST)) ? $_REQUEST['body'] . $s : $s); + if (! empty($_FILES['userfile'])) { + $this->handle_attachments(); } // If we have saved rpost session variables, but nothing in the current $_REQUEST, recover the saved variables - if((! array_key_exists('body',$_REQUEST)) && (array_key_exists('rpost',$_SESSION))) { + if((! array_key_exists('body',$_REQUEST)) && isset($_SESSION['rpost'])) { $_REQUEST = $_SESSION['rpost']; unset($_SESSION['rpost']); } @@ -152,21 +64,10 @@ class Rpost extends \Zotlabs\Web\Controller { ); if($r) { require_once('include/security.php'); - $change = change_channel($r[0]['channel_id']); + change_channel($r[0]['channel_id']); } } - if(isset($_REQUEST['remote_return']) && $_REQUEST['remote_return']) { - $_SESSION['remote_return'] = $_REQUEST['remote_return']; - } - if(argc() > 1 && argv(1) === 'return') { - if($_SESSION['remote_return']) - goaway($_SESSION['remote_return']); - goaway(z_root() . '/network'); - } - - $plaintext = true; - if(isset($_REQUEST['type']) && $_REQUEST['type'] === 'html') { require_once('include/html2bbcode.php'); $_REQUEST['body'] = html2bbcode($_REQUEST['body']); @@ -197,12 +98,12 @@ class Rpost extends \Zotlabs\Web\Controller { 'permissions' => $channel_acl, 'bang' => '', 'visitor' => true, - 'profile_uid' => local_channel(), + 'profile_uid' => $channel_id, 'title' => $_REQUEST['title'] ?? '', 'body' => $_REQUEST['body'] ?? '', 'attachment' => $_REQUEST['attachment'] ?? '', 'source' => ((x($_REQUEST,'source')) ? strip_tags($_REQUEST['source']) : ''), - 'return_path' => 'rpost/return', + 'return_path' => 'hq', 'bbco_autocomplete' => 'bbcode', 'editor_autocomplete' => true, 'bbcode' => true, @@ -210,19 +111,128 @@ class Rpost extends \Zotlabs\Web\Controller { 'reset' => t('Reset form') ); - $a = ''; $editor = status_editor($x, false, 'Rpost'); - $o .= replace_macros(get_markup_template('edpost_head.tpl'), array( + return replace_macros(get_markup_template('edpost_head.tpl'), array( '$title' => t('Edit post'), '$cancel' => '', - '$editor' => $editor + '$editor' => $editor, + '$delete' => null, )); + } + + /** + * Redirect to the observer's instance if not local, or return login form. + * + * The request is saved in the session if there's a `body` request + * param present. (Otherwise not.) + * + * @return string A login form if not redirected. If the session was + * determned to belong to a remote channel, the function does not + * return. + */ + private function redirect_or_login(): string { + if(remote_channel()) { + // redirect to your own site. + // We can only do this with a GET request so you'll need to keep the text short or risk getting truncated + // by the wretched beast called 'suhosin'. All the browsers now allow long GET requests, but suhosin + // blocks them. + + $url = Libzot::get_rpost_path(App::get_observer()); + // make sure we're not looping to our own hub + if(($url) && (! stristr($url, App::get_hostname()))) { + foreach($_GET as $key => $arg) { + if($key === 'q') + continue; + $url .= '&' . $key . '=' . $arg; + } + goaway($url); + } + } - return $o; + // The login procedure is going to bugger our $_REQUEST variables + // so save them in the session. + if(array_key_exists('body',$_REQUEST)) { + $_SESSION['rpost'] = $_REQUEST; + } + return login(); } + /** + * Handle uplads of attachments in the rpost call. + * + * This is only relevant for POST requests. + * + * The function will modify the `$_REQUEST['body']` superglobal + * (or add it if it does not exist). + */ + private function handle_attachments(): void { + $channel = App::get_channel(); + $observer = App::get_observer(); + + $def_album = get_pconfig($channel['channel_id'],'system','photo_path'); + $def_attach = get_pconfig($channel['channel_id'],'system','attach_path'); + + $r = attach_store($channel, (($observer) ? $observer['xchan_hash'] : ''), '', [ + 'source' => 'editor', + 'visible' => 0, + 'album' => $def_album, + 'directory' => $def_attach, + 'flags' => 1, // indicates temporary permissions are created + 'allow_cid' => '<' . $channel['channel_hash'] . '>', + 'allow_gid' => '', + 'deny_cid' => '', + 'deny_gid' => '' + ]); + + if (! $r['success']) { + notice( $r['message'] . EOL); + } + + $s = EMPTY_STR; + + if (intval($r['data']['is_photo'])) { + $s .= "\n\n" . $r['body'] . "\n\n"; + } + + $url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path']; + if (strpos($r['data']['filetype'],'video') === 0) { + $s .= "\n\n" . '[zvideo]' . $url . '[/zvideo]' . "\n\n"; + } + + if (strpos($r['data']['filetype'],'audio') === 0) { + $s .= "\n\n" . '[zaudio]' . $url . '[/zaudio]' . "\n\n"; + } + if ($r['data']['filetype'] === 'image/svg+xml') { + $x = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); + if ($x) { + $bb = svg2bb($x); + if ($bb) { + $s .= "\n\n" . $bb; + } + else { + logger('empty return from svgbb'); + } + } + else { + logger('unable to read svg data file: ' . 'store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); + } + } + + if ($r['data']['filetype'] === 'text/calendar') { + $content = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); + if ($content) { + $ev = ical_to_ev($content); + if ($ev) { + $s .= "\n\n" . format_event_bbcode($ev[0]) . "\n\n"; + } + } + } + + $s .= "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n"; + $_REQUEST['body'] = ((array_key_exists('body',$_REQUEST)) ? $_REQUEST['body'] . $s : $s); + } } diff --git a/Zotlabs/Module/Search.php b/Zotlabs/Module/Search.php index 9511c0389..3753e2a5f 100644 --- a/Zotlabs/Module/Search.php +++ b/Zotlabs/Module/Search.php @@ -3,11 +3,12 @@ namespace Zotlabs\Module; use App; -use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Activity; use Zotlabs\Lib\ActivityStreams; -use Zotlabs\Web\Controller; +use Zotlabs\Lib\Config; +use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Zotfinger; +use Zotlabs\Web\Controller; class Search extends Controller { @@ -18,7 +19,7 @@ class Search extends Controller { function get($update = 0, $load = false) { - if ((get_config('system', 'block_public')) || (get_config('system', 'block_public_search'))) { + if ((Config::Get('system', 'block_public')) || (Config::Get('system', 'block_public_search'))) { if ((!local_channel()) && (!remote_channel())) { notice(t('Public access denied.') . EOL); return; diff --git a/Zotlabs/Module/Service_limits.php b/Zotlabs/Module/Service_limits.php index 2a1f78054..aa27f7a9c 100644 --- a/Zotlabs/Module/Service_limits.php +++ b/Zotlabs/Module/Service_limits.php @@ -1,20 +1,20 @@ <?php namespace Zotlabs\Module; /** @file */ - +use Zotlabs\Lib\Config; class Service_limits extends \Zotlabs\Web\Controller { function get() { - + if(! local_channel()) { notice( t('Permission denied.') . EOL); return; } - + $account = \App::get_account(); if($account['account_service_class']) { - $x = get_config('service_class',$account['account_service_class']); + $x = Config::Get('service_class',$account['account_service_class']); if($x) { $o = print_r($x,true); return $o; @@ -22,7 +22,7 @@ class Service_limits extends \Zotlabs\Web\Controller { } return t('No service class restrictions found.'); } - - - + + + } diff --git a/Zotlabs/Module/Settings/Account.php b/Zotlabs/Module/Settings/Account.php index 85e7c793f..0266cee12 100644 --- a/Zotlabs/Module/Settings/Account.php +++ b/Zotlabs/Module/Settings/Account.php @@ -2,6 +2,8 @@ namespace Zotlabs\Module\Settings; +use Zotlabs\Lib\Config; + class Account { function post() { @@ -19,7 +21,7 @@ class Account { if (strpos($email, '@') > 0) { if(! validate_email($email)) $errs[] = t('Not valid email.'); - $adm = trim(get_config('system','admin_email')); + $adm = trim(Config::Get('system','admin_email')); if(($adm) && (strcasecmp($email,$adm) == 0)) { $errs[] = t('Protected email address. Cannot change to that email.'); $email = \App::$account['account_email']; diff --git a/Zotlabs/Module/Settings/Channel.php b/Zotlabs/Module/Settings/Channel.php index 1e0c2a2db..b46208879 100644 --- a/Zotlabs/Module/Settings/Channel.php +++ b/Zotlabs/Module/Settings/Channel.php @@ -7,6 +7,7 @@ use Zotlabs\Access\PermissionLimits; use Zotlabs\Access\PermissionRoles; use Zotlabs\Daemon\Master; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; require_once('include/selectors.php'); @@ -183,11 +184,11 @@ class Channel { $subdir = ((strlen(App::get_path())) ? '<br />' . t('or') . ' ' . z_root() . '/channel/' . $nickname : ''); $webbie = $nickname . '@' . App::get_hostname(); $intl_nickname = unpunify($nickname) . '@' . unpunify(App::get_hostname()); - $disable_discover_tab = intval(get_config('system', 'disable_discover_tab', 1)) == 1; - $site_firehose = intval(get_config('system', 'site_firehose', 0)) == 1; + $disable_discover_tab = intval(Config::Get('system', 'disable_discover_tab', 1)) == 1; + $site_firehose = intval(Config::Get('system', 'site_firehose', 0)) == 1; $expire = $channel['channel_expire_days']; - $sys_expire = get_config('system', 'default_expire_days'); + $sys_expire = Config::Get('system', 'default_expire_days'); $tpl_addr = get_markup_template("settings_nick_set.tpl"); $prof_addr = replace_macros($tpl_addr, [ diff --git a/Zotlabs/Module/Settings/Display.php b/Zotlabs/Module/Settings/Display.php index ee9692014..a7fccea47 100644 --- a/Zotlabs/Module/Settings/Display.php +++ b/Zotlabs/Module/Settings/Display.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module\Settings; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; class Display { @@ -85,7 +86,7 @@ class Display { $yes_no = array(t('No'),t('Yes')); - $default_theme = get_config('system','theme'); + $default_theme = Config::Get('system','theme'); if(! $default_theme) $default_theme = 'redbasic'; @@ -95,7 +96,7 @@ class Display { $theme = (($existing_theme) ? $existing_theme : $default_theme); - $allowed_themes_str = get_config('system','allowed_themes'); + $allowed_themes_str = Config::Get('system','allowed_themes'); $allowed_themes_raw = explode(',',$allowed_themes_str); $allowed_themes = array(); if(count($allowed_themes_raw)) @@ -121,7 +122,7 @@ class Display { $unsupported = file_exists('view/theme/' . $th . '/unsupported'); $is_library = file_exists('view/theme/'. $th . '/library'); - if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){ + if (!$is_experimental or ($is_experimental && (Config::Get('experimentals','exp_themes')==1 or Config::Get('experimentals','exp_themes')===false))){ $theme_name = (($is_experimental) ? sprintf(t('%s - (Experimental)'), $f) : $f); if (! $is_library) { $themes[$f] = $theme_name; diff --git a/Zotlabs/Module/Settings/Privacy.php b/Zotlabs/Module/Settings/Privacy.php index 316b1306e..ed14fa94c 100644 --- a/Zotlabs/Module/Settings/Privacy.php +++ b/Zotlabs/Module/Settings/Privacy.php @@ -6,6 +6,7 @@ use App; use Zotlabs\Access\PermissionLimits; use Zotlabs\Access\Permissions; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Group; use Zotlabs\Lib\Libsync; @@ -81,7 +82,7 @@ class Privacy { $help_txt = t('Advise: set to "Anybody on the internet" and use privacy groups to restrict access'); $limits = PermissionLimits::Get(local_channel()); - $anon_comments = get_config('system', 'anonymous_comments', true); + $anon_comments = Config::Get('system', 'anonymous_comments', true); foreach ($global_perms as $k => $perm) { $options = []; diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php index 83faf85dc..35079e5e5 100644 --- a/Zotlabs/Module/Setup.php +++ b/Zotlabs/Module/Setup.php @@ -1,5 +1,4 @@ <?php -namespace Zotlabs\Module; /** * @file Zotlabs/Module/Setup.php * @@ -8,10 +7,12 @@ namespace Zotlabs\Module; * @todo This setup module could need some love and improvements. */ +namespace Zotlabs\Module; + +use Zotlabs\Lib\Config; /** - * @brief Initialisation for the setup module. - * + * Controller for the initial setup/installation. */ class Setup extends \Zotlabs\Web\Controller { @@ -45,9 +46,9 @@ class Setup extends \Zotlabs\Web\Controller { } if(x($_POST, 'pass')) { - $this->install_wizard_pass = intval($_POST['pass']); + self::$install_wizard_pass = intval($_POST['pass']); } else { - $this->install_wizard_pass = 1; + self::$install_wizard_pass = 1; } } @@ -57,7 +58,7 @@ class Setup extends \Zotlabs\Web\Controller { */ function post() { - switch($this->install_wizard_pass) { + switch(self::$install_wizard_pass) { case 1: case 2: return; @@ -179,18 +180,18 @@ class Setup extends \Zotlabs\Web\Controller { $install_title = t('$Projectname Server - Setup'); if(x(\App::$data, 'db_conn_failed')) { - $this->install_wizard_pass = 2; + self::$install_wizard_pass = 2; $wizard_status = t('Could not connect to database.'); } if(x(\App::$data, 'url_fail')) { - $this->install_wizard_pass = 3; + self::$install_wizard_pass = 3; $wizard_status = t('Could not connect to specified site URL. Possible SSL certificate or DNS issue.'); if(\App::$data['url_error']) $wizard_status .= ' ' . \App::$data['url_error']; } if(x(\App::$data, 'db_create_failed')) { - $this->install_wizard_pass = 2; + self::$install_wizard_pass = 2; $wizard_status = t('Could not create table.'); } $db_return_text = ''; @@ -214,9 +215,11 @@ class Setup extends \Zotlabs\Web\Controller { $tpl = get_markup_template('install.tpl'); return replace_macros($tpl, array( '$title' => $install_title, + '$icon' => null, '$pass' => '', '$status' => t('Permission denied.'), '$text' => '', + '$what_next' => null, )); } } @@ -236,7 +239,7 @@ class Setup extends \Zotlabs\Web\Controller { )); } - switch ($this->install_wizard_pass){ + switch (self::$install_wizard_pass){ case 1: { // System check $checks = array(); @@ -392,7 +395,7 @@ class Setup extends \Zotlabs\Web\Controller { $this->check_add($checks, t('PHP version'), false, true, $help); } - if(strlen($phpath)) { + if(!empty($phpath)) { $passed = file_exists($phpath); } elseif(function_exists('shell_exec')) { @@ -760,11 +763,11 @@ class Setup extends \Zotlabs\Web\Controller { */ function what_next() { // install the standard theme - set_config('system', 'allowed_themes', 'redbasic'); + Config::Set('system', 'allowed_themes', 'redbasic'); // if imagick converter is installed, use it if(@is_executable('/usr/bin/convert')) { - set_config('system','imagick_convert_path','/usr/bin/convert'); + Config::Set('system','imagick_convert_path','/usr/bin/convert'); } @@ -783,7 +786,7 @@ class Setup extends \Zotlabs\Web\Controller { $x = curl_version(); if(stristr($x['ssl_version'],'openssl')) - set_config('system','curl_ssl_ciphers','ALL:!eNULL'); + Config::Set('system','curl_ssl_ciphers','ALL:!eNULL'); // Create a system channel require_once ('include/channel.php'); diff --git a/Zotlabs/Module/Siteinfo.php b/Zotlabs/Module/Siteinfo.php index 18eb703a2..3cad64a13 100644 --- a/Zotlabs/Module/Siteinfo.php +++ b/Zotlabs/Module/Siteinfo.php @@ -1,6 +1,7 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; class Siteinfo extends \Zotlabs\Web\Controller { @@ -22,18 +23,18 @@ class Siteinfo extends \Zotlabs\Web\Controller { '$sitenametxt' => t('Site Name'), '$sitename' => \Zotlabs\Lib\System::get_site_name(), '$headline' => t('Site Information'), - '$site_about' => bbcode(get_config('system','siteinfo')), + '$site_about' => bbcode(Config::Get('system','siteinfo')), '$admin_headline' => t('Administrator'), - '$admin_about' => bbcode(get_config('system','admininfo')), + '$admin_about' => bbcode(Config::Get('system','admininfo')), '$terms' => t('Terms of Service'), '$prj_header' => t('Software and Project information'), '$prj_name' => t('This site is powered by $Projectname'), - '$prj_transport' => t('Federated and decentralised networking and identity services provided by Zot'), - '$transport_link' => '<a href="https://zotlabs.org">https://zotlabs.org</a>', + '$prj_transport' => t('Federated and decentralised networking and identity services provided by'), + '$transport_link' => '<a href="https://hubzilla.org">https://hubzilla.org</a>', '$additional_text' => t('Additional federated transport protocols:'), '$additional_fed' => implode(', ', $federated), - '$prj_version' => ((get_config('system','hidden_version_siteinfo')) ? '' : sprintf( t('Version %s'), \Zotlabs\Lib\System::get_project_version())), + '$prj_version' => ((Config::Get('system','hidden_version_siteinfo')) ? '' : sprintf( t('Version %s'), \Zotlabs\Lib\System::get_project_version())), '$prj_linktxt' => t('Project homepage'), '$prj_srctxt' => t('Developer homepage'), '$prj_link' => \Zotlabs\Lib\System::get_project_link(), diff --git a/Zotlabs/Module/Sources.php b/Zotlabs/Module/Sources.php index ef665e727..177ae1f1a 100644 --- a/Zotlabs/Module/Sources.php +++ b/Zotlabs/Module/Sources.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module; /** @file */ use App; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Text; use Zotlabs\Web\Controller; class Sources extends Controller { @@ -15,13 +16,12 @@ class Sources extends Controller { return; $source = intval($_REQUEST['source']); - $xchan = escape_tags($_REQUEST['xchan']); + $xchan = ((isset($_REQUEST['xchan'])) ? Text::escape_tags($_REQUEST['xchan']) : ''); $abook = intval($_REQUEST['abook']); - $words = escape_tags($_REQUEST['words']); + $words = ((isset($_REQUEST['words'])) ? Text::escape_tags($_REQUEST['words']) : ''); $resend = intval($_REQUEST['resend']); - $frequency = $_REQUEST['frequency']; - $name = escape_tags($_REQUEST['name']); - $tags = escape_tags($_REQUEST['tags']); + $name = ((isset($_REQUEST['name'])) ? Text::escape_tags($_REQUEST['name']) : ''); + $tags = ((isset($_REQUEST['tags'])) ? Text::escape_tags($_REQUEST['tags']) : ''); $channel = \App::get_channel(); diff --git a/Zotlabs/Module/Sse.php b/Zotlabs/Module/Sse.php index 8b46dcafd..5baa90128 100644 --- a/Zotlabs/Module/Sse.php +++ b/Zotlabs/Module/Sse.php @@ -4,6 +4,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; use Zotlabs\Lib\Enotify; use Zotlabs\Lib\XConfig; @@ -22,7 +23,7 @@ class Sse extends Controller { killme(); } - if(! intval(get_config('system','open_pubstream',1))) { + if(! intval(Config::Get('system','open_pubstream',1))) { if(! get_observer_hash()) { killme(); } @@ -52,7 +53,7 @@ class Sse extends Controller { $sleep = 1000000; // microseconds - self::$sse_enabled = get_config('system', 'sse_enabled', 0); + self::$sse_enabled = Config::Get('system', 'sse_enabled', 0); if(self::$sse_enabled) { diff --git a/Zotlabs/Module/Sse_bs.php b/Zotlabs/Module/Sse_bs.php index 9fb295c4b..09c4ed614 100644 --- a/Zotlabs/Module/Sse_bs.php +++ b/Zotlabs/Module/Sse_bs.php @@ -4,6 +4,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; use Zotlabs\Lib\Enotify; use Zotlabs\Lib\XConfig; @@ -424,7 +425,7 @@ class Sse_bs extends Controller { return $result; } - if(! intval(get_config('system','open_pubstream',1))) { + if(! intval(Config::Get('system','open_pubstream',1))) { if(! get_observer_hash()) { $result['pubs']['offset'] = -1; return $result; @@ -459,7 +460,7 @@ class Sse_bs extends Controller { $uids = " AND uid IN ( " . $sys['channel_id'] . " ) "; - $site_firehose = get_config('system', 'site_firehose', 0); + $site_firehose = Config::Get('system', 'site_firehose', 0); if($site_firehose) { $uids = " AND uid IN ( " . stream_perms_api_uids(PERMS_PUBLIC) . " ) AND item_private = 0 AND item_wall = 1 "; } @@ -589,6 +590,7 @@ class Sse_bs extends Controller { if($forums) { $item_normal = item_normal(); + $p_sql = ''; $sql_extra = ''; if(! (self::$vnotify & VNOTIFY_LIKE)) @@ -598,6 +600,7 @@ class Sse_bs extends Controller { $i = 0; for($x = 0; $x < $fcount; $x ++) { + /* $p = q("SELECT oid AS parent FROM term WHERE uid = %d AND ttype = %d AND term = '%s'", intval(self::$uid), intval(TERM_FORUM), @@ -606,14 +609,16 @@ class Sse_bs extends Controller { $p_str = ids_to_querystr($p, 'parent'); $p_sql = (($p_str) ? "OR parent IN ( $p_str )" : ''); + */ $r = q("select count(*) as total from item - where uid = %d and ( owner_xchan = '%s' OR author_xchan = '%s' $p_sql ) and item_unseen = 1 $sql_extra $item_normal", + where uid = %d and ( owner_xchan = '%s' OR author_xchan = '%s' $p_sql ) and verb != 'Announce' and item_unseen = 1 $sql_extra $item_normal", intval(self::$uid), dbesc($forums[$x]['xchan_hash']), dbesc($forums[$x]['xchan_hash']) ); + if($r[0]['total']) { $forums[$x]['notify_link'] = z_root() . '/network/?f=&pf=1&unseen=1&cid=' . $forums[$x]['abook_id']; @@ -732,7 +737,7 @@ class Sse_bs extends Controller { if(! self::$uid && ! is_site_admin()) return $result; - $policy = intval(get_config('system','register_policy')); + $policy = intval(Config::Get('system','register_policy')); if(($policy & REGISTER_APPROVE) != REGISTER_APPROVE) return $result; diff --git a/Zotlabs/Module/Toggle_mobile.php b/Zotlabs/Module/Toggle_mobile.php deleted file mode 100644 index 9d90c0821..000000000 --- a/Zotlabs/Module/Toggle_mobile.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -namespace Zotlabs\Module; - - -class Toggle_mobile extends \Zotlabs\Web\Controller { - - function init() { - - if(isset($_GET['off'])) - $_SESSION['show_mobile'] = false; - else - $_SESSION['show_mobile'] = true; - - if(isset($_GET['address'])) - $address = $_GET['address']; - else - $address = z_root(); - - goaway($address); - } - - -} diff --git a/Zotlabs/Module/Toggle_safesearch.php b/Zotlabs/Module/Toggle_safesearch.php deleted file mode 100644 index 2e9bc2575..000000000 --- a/Zotlabs/Module/Toggle_safesearch.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -namespace Zotlabs\Module; - - -class Toggle_safesearch extends \Zotlabs\Web\Controller { - - function init() { - - $observer = get_observer_hash(); - if (! $observer) - return; - - if($observer) - $safe_mode = get_xconfig($observer,'directory','safe_mode'); - if ($safe_mode == '') - set_xconfig($observer,'directory','safe_mode', '0'); - elseif($safe_mode == '0') - set_xconfig($observer,'directory','safe_mode', '1'); - elseif($safe_mode == '1') - set_xconfig($observer,'directory','safe_mode', '0'); - - if(isset($_GET['address'])) - $address = $_GET['address']; - else - $address = z_root() . '/directory'; - - goaway($address); - } - - -} diff --git a/Zotlabs/Module/Wall_attach.php b/Zotlabs/Module/Wall_attach.php index 0d5c9e983..3c57d4b94 100644 --- a/Zotlabs/Module/Wall_attach.php +++ b/Zotlabs/Module/Wall_attach.php @@ -104,32 +104,32 @@ class Wall_attach extends \Zotlabs\Web\Controller { } if(intval($r['data']['is_photo'])) { - $s = "\n\n" . $r['body'] . "\n\n"; + $s = $r['body']; } else { - if(strpos($r['data']['filetype'],'video') === 0) { + if(strpos($r['data']['filetype'], 'video') === 0) { // give a wee bit of time for the background thumbnail processor to do its thing // or else we'll never see a video poster sleep(3); $url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path']; $thumb = Linkinfo::get_video_poster($url); if($thumb) { - $s = "\n\n" . '[zvideo poster=\'' . $thumb . '\']' . $url . '[/zvideo]' . "\n\n"; + $s = '[zvideo poster=\'' . $thumb . '\']' . $url . '[/zvideo]'; } else { - $s = "\n\n" . '[zvideo]' . $url . '[/zvideo]' . "\n\n"; + $s = '[zvideo]' . $url . '[/zvideo]'; } } if(strpos($r['data']['filetype'],'audio') === 0) { $url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path']; - $s = "\n\n" . '[zaudio]' . $url . '[/zaudio]' . "\n\n"; + $s = '[zaudio]' . $url . '[/zaudio]'; } if ($r['data']['filetype'] === 'image/svg+xml') { $x = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); if ($x) { $bb = svg2bb($x); if ($bb) { - $s .= "\n\n" . $bb; + $s .= $bb; } else { logger('empty return from svgbb'); @@ -140,7 +140,7 @@ class Wall_attach extends \Zotlabs\Web\Controller { } } - $s .= "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n"; + $s .= '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]'; } $sync = attach_export_data($channel,$r['data']['hash']); diff --git a/Zotlabs/Module/Well_known.php b/Zotlabs/Module/Well_known.php index 9cc31a7d3..a90397d2f 100644 --- a/Zotlabs/Module/Well_known.php +++ b/Zotlabs/Module/Well_known.php @@ -1,6 +1,7 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; class Well_known extends \Zotlabs\Web\Controller { @@ -21,7 +22,7 @@ class Well_known extends \Zotlabs\Web\Controller { // Note: Your web server must be configured to create this variable. For example in Apache // you'll need HostnameLookups On inside httpd.conf for it to exist. See also gethostbyaddr(). - if(get_config('system','siteallowed_remote_host') && (! check_siteallowed($_SERVER['REMOTE_HOST']))) { + if(Config::Get('system','siteallowed_remote_host') && (! check_siteallowed($_SERVER['REMOTE_HOST']))) { logger('well_known: site not allowed. ' . $_SERVER['REMOTE_HOST']); killme(); } diff --git a/Zotlabs/Module/Wfinger.php b/Zotlabs/Module/Wfinger.php index 43b039530..42dcf240f 100644 --- a/Zotlabs/Module/Wfinger.php +++ b/Zotlabs/Module/Wfinger.php @@ -1,6 +1,7 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Keyutils; use Zotlabs\Lib\Libzot; @@ -88,7 +89,7 @@ class Wfinger extends \Zotlabs\Web\Controller { if($root_resource) { $result['subject'] = $resource; $result['properties'] = [ - 'https://w3id.org/security/v1#publicKeyPem' => get_config('system','pubkey') + 'https://w3id.org/security/v1#publicKeyPem' => Config::Get('system','pubkey') ]; $result['links'] = [ [ diff --git a/Zotlabs/Photo/PhotoDriver.php b/Zotlabs/Photo/PhotoDriver.php index fc34f87a9..e8b42ec1b 100644 --- a/Zotlabs/Photo/PhotoDriver.php +++ b/Zotlabs/Photo/PhotoDriver.php @@ -2,6 +2,7 @@ namespace Zotlabs\Photo; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Hashpath; /** @@ -443,7 +444,7 @@ abstract class PhotoDriver { $p['display_path'] = $arr['display_path'] ?? ''; $p['width'] = $arr['width'] ?? $this->getWidth(); $p['height'] = $arr['height'] ?? $this->getHeight(); - $p['expires'] = $arr['expires'] ?? gmdate('Y-m-d H:i:s', time() + get_config('system', 'photo_cache_time', 86400)); + $p['expires'] = $arr['expires'] ?? gmdate('Y-m-d H:i:s', time() + Config::Get('system', 'photo_cache_time', 86400)); $p['profile'] = $arr['profile'] ?? 0; if(! intval($p['imgscale'])) @@ -508,7 +509,7 @@ abstract class PhotoDriver { $arr['imgscale'] = $scale; - if(boolval(get_config('system','photo_storage_type', 1))) { + if(boolval(Config::Get('system','photo_storage_type', 1))) { $arr['os_storage'] = 1; diff --git a/Zotlabs/Photo/PhotoGd.php b/Zotlabs/Photo/PhotoGd.php index 6854be0ab..4a47f97ee 100644 --- a/Zotlabs/Photo/PhotoGd.php +++ b/Zotlabs/Photo/PhotoGd.php @@ -2,6 +2,8 @@ namespace Zotlabs\Photo; +use Zotlabs\Lib\Config; + /** * @brief GD photo driver. * @@ -157,14 +159,14 @@ class PhotoGd extends PhotoDriver { switch($this->getType()){ case 'image/png': - $quality = get_config('system', 'png_quality'); + $quality = Config::Get('system', 'png_quality'); if((! $quality) || ($quality > 9)) $quality = PNG_QUALITY; \imagepng($this->image, NULL, $quality); break; case 'image/webp': - $quality = get_config('system', 'webp_quality'); + $quality = Config::Get('system', 'webp_quality'); if((! $quality) || ($quality > 100)) $quality = WEBP_QUALITY; \imagewebp($this->image, NULL, $quality); @@ -174,7 +176,7 @@ class PhotoGd extends PhotoDriver { // gd can lack imagejpeg(), but we verify during installation it is available default: - $quality = get_config('system', 'jpeg_quality'); + $quality = Config::Get('system', 'jpeg_quality'); if((! $quality) || ($quality > 100)) $quality = JPEG_QUALITY; \imagejpeg($this->image, NULL, $quality); diff --git a/Zotlabs/Photo/PhotoImagick.php b/Zotlabs/Photo/PhotoImagick.php index 0a08d19e6..59f276480 100644 --- a/Zotlabs/Photo/PhotoImagick.php +++ b/Zotlabs/Photo/PhotoImagick.php @@ -2,6 +2,8 @@ namespace Zotlabs\Photo; +use Zotlabs\Lib\Config; + /** * @brief ImageMagick photo driver. */ @@ -57,7 +59,7 @@ class PhotoImagick extends PhotoDriver { switch($this->getType()) { case 'image/png': - $quality = get_config('system', 'png_quality'); + $quality = Config::Get('system', 'png_quality'); if((! $quality) || ($quality > 9)) $quality = PNG_QUALITY; /* @@ -73,14 +75,14 @@ class PhotoImagick extends PhotoDriver { break; case 'image/jpeg': - $quality = get_config('system', 'jpeg_quality'); + $quality = Config::Get('system', 'jpeg_quality'); if((! $quality) || ($quality > 100)) $quality = JPEG_QUALITY; $this->image->setCompressionQuality($quality); break; case 'image/webp': - $quality = get_config('system', 'webp_quality'); + $quality = Config::Get('system', 'webp_quality'); if((! $quality) || ($quality > 100)) $quality = WEBP_QUALITY; $this->image->setCompressionQuality($quality); diff --git a/Zotlabs/Render/Comanche.php b/Zotlabs/Render/Comanche.php index 7288c7fd7..ba0d77c39 100644 --- a/Zotlabs/Render/Comanche.php +++ b/Zotlabs/Render/Comanche.php @@ -2,6 +2,8 @@ namespace Zotlabs\Render; +use Zotlabs\Lib\Config; + require_once('include/security.php'); require_once('include/menu.php'); @@ -157,7 +159,7 @@ class Comanche { * @brief Replace conditional variables with real values. * * Currently supported condition variables: - * * $config.xxx.yyy - get_config with cat = xxx and k = yyy + * * $config.xxx.yyy - Config::Get with cat = xxx and k = yyy * * $request - request uri for this page * * $observer.language - viewer's preferred language (closest match) * * $observer.address - xchan_addr or false @@ -172,7 +174,7 @@ class Comanche { if($v) { $x = explode('.', $v); if($x[0] == 'config') - return get_config($x[1],$x[2]); + return Config::Get($x[1],$x[2]); elseif($x[0] === 'request') return $_SERVER['REQUEST_URI']; elseif($x[0] === 'local_channel') { @@ -208,18 +210,18 @@ class Comanche { * * This is extensible. The first version of variable testing supports tests of the forms: * - * - [if $config.system.foo ~= baz] which will check if get_config('system','foo') contains the string 'baz'; - * - [if $config.system.foo == baz] which will check if get_config('system','foo') is the string 'baz'; - * - [if $config.system.foo != baz] which will check if get_config('system','foo') is not the string 'baz'; - * - [if $config.system.foo >= 3] which will check if get_config('system','foo') is greater than or equal to 3; - * - [if $config.system.foo > 3] which will check if get_config('system','foo') is greater than 3; - * - [if $config.system.foo <= 3] which will check if get_config('system','foo') is less than or equal to 3; - * - [if $config.system.foo < 3] which will check if get_config('system','foo') is less than 3; + * - [if $config.system.foo ~= baz] which will check if Config::Get('system','foo') contains the string 'baz'; + * - [if $config.system.foo == baz] which will check if Config::Get('system','foo') is the string 'baz'; + * - [if $config.system.foo != baz] which will check if Config::Get('system','foo') is not the string 'baz'; + * - [if $config.system.foo >= 3] which will check if Config::Get('system','foo') is greater than or equal to 3; + * - [if $config.system.foo > 3] which will check if Config::Get('system','foo') is greater than 3; + * - [if $config.system.foo <= 3] which will check if Config::Get('system','foo') is less than or equal to 3; + * - [if $config.system.foo < 3] which will check if Config::Get('system','foo') is less than 3; * - * - [if $config.system.foo {} baz] which will check if 'baz' is an array element in get_config('system','foo') - * - [if $config.system.foo {*} baz] which will check if 'baz' is an array key in get_config('system','foo') - * - [if $config.system.foo] which will check for a return of a true condition for get_config('system','foo'); - * - [if !$config.system.foo] which will check for a return of a false condition for get_config('system','foo'); + * - [if $config.system.foo {} baz] which will check if 'baz' is an array element in Config::Get('system','foo') + * - [if $config.system.foo {*} baz] which will check if 'baz' is an array key in Config::Get('system','foo') + * - [if $config.system.foo] which will check for a return of a true condition for Config::Get('system','foo'); + * - [if !$config.system.foo] which will check for a return of a false condition for Config::Get('system','foo'); * * The values 0, '', an empty array, and an unset value will all evaluate to false. * diff --git a/Zotlabs/Render/SmartyInterface.php b/Zotlabs/Render/SmartyInterface.php index d80ea3f3a..64c6aa377 100644 --- a/Zotlabs/Render/SmartyInterface.php +++ b/Zotlabs/Render/SmartyInterface.php @@ -20,7 +20,7 @@ class SmartyInterface extends Smarty { $template_dirs = array('theme' => "view/theme/$thname/tpl/"); if ( x(App::$theme_info,"extends") ) { - $template_dirs = $template_dirs + array('extends' => "view/theme/" . \App::$theme_info["extends"] . "/tpl/"); + $template_dirs = $template_dirs + array('extends' => "view/theme/" . App::$theme_info["extends"] . "/tpl/"); } $template_dirs = $template_dirs + array('base' => 'view/tpl/'); $this->setTemplateDir($template_dirs); diff --git a/Zotlabs/Render/SmartyTemplate.php b/Zotlabs/Render/SmartyTemplate.php index 2cb96521b..79f03637b 100644 --- a/Zotlabs/Render/SmartyTemplate.php +++ b/Zotlabs/Render/SmartyTemplate.php @@ -11,7 +11,7 @@ class SmartyTemplate implements TemplateEngine { public function __construct() { - // Cannot use get_config() here because it is called during installation when there is no DB. + // Cannot use Config::Get() here because it is called during installation when there is no DB. // FIXME: this may leak private information such as system pathnames. $basecompiledir = ((array_key_exists('smarty3_folder', App::$config['system'])) diff --git a/Zotlabs/Render/Theme.php b/Zotlabs/Render/Theme.php index 543bf7a3f..a42b65e03 100644 --- a/Zotlabs/Render/Theme.php +++ b/Zotlabs/Render/Theme.php @@ -24,7 +24,7 @@ class Theme { * * @return array */ - static public function current(){ + static public function current() { self::$system_theme = ((isset(App::$config['system']['theme'])) ? App::$config['system']['theme'] : ''); @@ -37,7 +37,7 @@ class Theme { if(App::$profile_uid) { $r = q("select channel_theme from channel where channel_id = %d limit 1", - intval(\App::$profile_uid) + intval(App::$profile_uid) ); if($r) { $page_theme = $r[0]['channel_theme']; @@ -46,7 +46,7 @@ class Theme { // Themes from Comanche layouts over-ride the channel theme - if(array_key_exists('theme', \App::$layout) && \App::$layout['theme']) { + if(array_key_exists('theme', App::$layout) && App::$layout['theme']) { $page_theme = App::$layout['theme']; } diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php index 912b4442d..e7f71c8c8 100644 --- a/Zotlabs/Storage/Browser.php +++ b/Zotlabs/Storage/Browser.php @@ -4,6 +4,7 @@ namespace Zotlabs\Storage; use Sabre\DAV; use App; +use Zotlabs\Lib\Config; /** * @brief Provides a DAV frontend for the webbrowser. @@ -101,7 +102,7 @@ class Browser extends DAV\Browser\Plugin { $folder_list = attach_folder_select_list($channel_id); - $siteroot_disabled = get_config('system', 'cloud_disable_siteroot'); + $siteroot_disabled = Config::Get('system', 'cloud_disable_siteroot'); $is_root_folder = (($path === 'cloud/' . $nick) ? true : false); $parent_path = ''; @@ -210,7 +211,7 @@ class Browser extends DAV\Browser\Plugin { // types $photo_icon = ''; - $preview_style = intval(get_config('system','thumbnail_security',0)); + $preview_style = intval(Config::Get('system','thumbnail_security',0)); $is_creator = (($data['creator'] === get_observer_hash()) ? true : false); @@ -474,7 +475,7 @@ class Browser extends DAV\Browser\Plugin { $limit = engr_units_to_bytes(service_class_fetch($this->auth->owner_id, 'attach_upload_limit')); } - if((! $limit) && get_config('system','cloud_report_disksize')) { + if((! $limit) && Config::Get('system','cloud_report_disksize')) { $limit = engr_units_to_bytes(disk_free_space('store')); } diff --git a/Zotlabs/Storage/Directory.php b/Zotlabs/Storage/Directory.php index 333251f69..a68fdcf26 100644 --- a/Zotlabs/Storage/Directory.php +++ b/Zotlabs/Storage/Directory.php @@ -3,6 +3,7 @@ namespace Zotlabs\Storage; use Sabre\DAV; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; /** @@ -89,7 +90,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo logger('children for ' . $this->ext_path, LOGGER_DATA); $this->log(); - if (get_config('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) { + if (Config::Get('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) { throw new DAV\Exception\Forbidden('Permission denied.'); } @@ -111,7 +112,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo public function getChild($name) { logger($name, LOGGER_DATA); - if (get_config('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) { + if (Config::Get('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) { throw new DAV\Exception\Forbidden('Permission denied.'); } @@ -360,7 +361,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo intval($c[0]['channel_id']) ); - $maxfilesize = get_config('system', 'maxfilesize'); + $maxfilesize = Config::Get('system', 'maxfilesize'); if (($maxfilesize) && ($size > $maxfilesize)) { attach_delete($c[0]['channel_id'], $hash); return; @@ -776,7 +777,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo function ChannelList(&$auth) { $ret = []; - if (intval(get_config('system','cloud_disable_siteroot'))) { + if (intval(Config::Get('system','cloud_disable_siteroot'))) { return $ret; } diff --git a/Zotlabs/Storage/File.php b/Zotlabs/Storage/File.php index ff379e2e9..642dd4515 100644 --- a/Zotlabs/Storage/File.php +++ b/Zotlabs/Storage/File.php @@ -3,6 +3,7 @@ namespace Zotlabs\Storage; use Sabre\DAV; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; /** @@ -240,7 +241,7 @@ class File extends DAV\Node implements DAV\IFile { // There is an Exception "InsufficientStorage" or "PaymentRequired" for // our service class from SabreDAV we could use. - $maxfilesize = get_config('system', 'maxfilesize'); + $maxfilesize = Config::Get('system', 'maxfilesize'); if (($maxfilesize) && ($size > $maxfilesize)) { attach_delete($c[0]['channel_id'], $this->data['hash']); return; diff --git a/Zotlabs/Thumbs/Pdf.php b/Zotlabs/Thumbs/Pdf.php index 6f9111ed3..52afc09a3 100644 --- a/Zotlabs/Thumbs/Pdf.php +++ b/Zotlabs/Thumbs/Pdf.php @@ -2,6 +2,7 @@ namespace Zotlabs\Thumbs; +use Zotlabs\Lib\Config; class Pdf { @@ -29,7 +30,7 @@ class Pdf { fclose($ostream); } - $imagick_path = get_config('system','imagick_convert_path'); + $imagick_path = Config::Get('system','imagick_convert_path'); if($imagick_path && @file_exists($imagick_path)) { $cmd = $imagick_path . ' ' . escapeshellarg(PROJECT_BASE . '/' . $tmpfile . '[0]') . ' -resize ' . $width . 'x' . $height . ' ' . escapeshellarg(PROJECT_BASE . '/' . $outfile); // logger('imagick thumbnail command: ' . $cmd); diff --git a/Zotlabs/Thumbs/Video.php b/Zotlabs/Thumbs/Video.php index 9df27d703..1da500370 100644 --- a/Zotlabs/Thumbs/Video.php +++ b/Zotlabs/Thumbs/Video.php @@ -2,6 +2,7 @@ namespace Zotlabs\Thumbs; +use Zotlabs\Lib\Config; class Video { @@ -47,7 +48,7 @@ class Video { logger('ffmpeg not found in path. Video thumbnails may fail.'); } - $imagick_path = get_config('system','imagick_convert_path'); + $imagick_path = Config::Get('system','imagick_convert_path'); if($imagick_path && @file_exists($imagick_path)) { $cmd = $imagick_path . ' ' . escapeshellarg(PROJECT_BASE . '/' . $tmpfile . '[0]') . ' -resize ' . $width . 'x' . $height . ' ' . escapeshellarg(PROJECT_BASE . '/' . $outfile); // logger('imagick thumbnail command: ' . $cmd); diff --git a/Zotlabs/Update/_1103.php b/Zotlabs/Update/_1103.php index 3f9a9286c..a32c81fe9 100644 --- a/Zotlabs/Update/_1103.php +++ b/Zotlabs/Update/_1103.php @@ -2,13 +2,15 @@ namespace Zotlabs\Update; +use Zotlabs\Lib\Config; + class _1103 { function run() { $x = curl_version(); if(stristr($x['ssl_version'],'openssl')) - set_config('system','curl_ssl_ciphers','ALL:!eNULL'); + Config::Set('system','curl_ssl_ciphers','ALL:!eNULL'); return UPDATE_SUCCESS; } -}
\ No newline at end of file +} diff --git a/Zotlabs/Update/_1226.php b/Zotlabs/Update/_1226.php index 6e5a0e319..526fc867b 100644 --- a/Zotlabs/Update/_1226.php +++ b/Zotlabs/Update/_1226.php @@ -2,6 +2,7 @@ namespace Zotlabs\Update; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; class _1226 { @@ -17,7 +18,7 @@ class _1226 { $r = ($r1 && $r2); } else { - $r = q("ALTER TABLE `channel` ADD `channel_portable_id` char(191) NOT NULL DEFAULT '' , + $r = q("ALTER TABLE `channel` ADD `channel_portable_id` char(191) NOT NULL DEFAULT '' , ADD INDEX `channel_portable_id` (`channel_portable_id`)"); } @@ -52,7 +53,7 @@ class _1226 { $rec['xchan_hash'] = $zhash; $rec['xchan_guid_sig'] = 'sha256.' . $rec['xchan_guid_sig']; $rec['xchan_network'] = 'zot6'; - + xchan_store_lowlevel($rec); } $x = q("select * from hubloc where hubloc_hash = '%s' and hubloc_url = '%s' limit 1", @@ -67,7 +68,7 @@ class _1226 { $rec['hubloc_url_sig'] = 'sha256.' . $rec['hubloc_url_sig']; $rec['hubloc_callback'] = z_root() . '/zot'; $rec['hubloc_id_url'] = channel_url($rv); - $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),get_config('system','pubkey')); + $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),Config::Get('system','pubkey')); hubloc_store_lowlevel($rec); } } diff --git a/Zotlabs/Update/_1236.php b/Zotlabs/Update/_1236.php index e57338e16..b5bfdaad8 100644 --- a/Zotlabs/Update/_1236.php +++ b/Zotlabs/Update/_1236.php @@ -2,15 +2,16 @@ namespace Zotlabs\Update; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; class _1236 { function run() { - - $r = q("SELECT channel.channel_address, channel.channel_hash, xchan.xchan_guid, channel.channel_pubkey, channel.channel_portable_id FROM channel - LEFT JOIN xchan ON channel_hash = xchan_hash - WHERE xchan.xchan_network = 'zot' + + $r = q("SELECT channel.channel_address, channel.channel_hash, xchan.xchan_guid, channel.channel_pubkey, channel.channel_portable_id FROM channel + LEFT JOIN xchan ON channel_hash = xchan_hash + WHERE xchan.xchan_network = 'zot' AND channel.channel_removed = 0" ); @@ -102,7 +103,7 @@ class _1236 { $rec['hubloc_url_sig'] = 'sha256.' . $rec['hubloc_url_sig']; $rec['hubloc_callback'] = z_root() . '/zot'; $rec['hubloc_id_url'] = channel_url($rr); - $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),get_config('system','pubkey')); + $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),Config::Get('system','pubkey')); $hubloc = hubloc_store_lowlevel($rec); } diff --git a/Zotlabs/Update/_1242.php b/Zotlabs/Update/_1242.php index c2c9a66d0..0a4265984 100644 --- a/Zotlabs/Update/_1242.php +++ b/Zotlabs/Update/_1242.php @@ -2,6 +2,8 @@ namespace Zotlabs\Update; +use Zotlabs\Lib\Config; + class _1242 { function run() { @@ -10,7 +12,7 @@ class _1242 { if ($pp['v'][0] === '{') { $a = json_decode($pp['v'], true); if (isset($a['encrypted'])) { - $v = crypto_unencapsulate($a, get_config('system', 'prvkey')); + $v = crypto_unencapsulate($a, Config::Get('system', 'prvkey')); set_pconfig($pp['uid'], $pp['cat'], $pp['k'], obscurify($v)); } } @@ -18,4 +20,4 @@ class _1242 { return UPDATE_SUCCESS; } -}
\ No newline at end of file +} diff --git a/Zotlabs/Update/_1243.php b/Zotlabs/Update/_1243.php index 850cb1d6c..05845ad47 100644 --- a/Zotlabs/Update/_1243.php +++ b/Zotlabs/Update/_1243.php @@ -2,15 +2,17 @@ namespace Zotlabs\Update; +use Zotlabs\Lib\Config; + class _1243 { function run() { - - $x = get_config('system','filesystem_storage_thumbnails'); - del_config('system','filesystem_storage_thumbnails'); + + $x = Config::Get('system','filesystem_storage_thumbnails'); + Config::Delete('system','filesystem_storage_thumbnails'); if ($x !== false) - set_config('system','photo_storage_type', intval($x)); - + Config::Set('system','photo_storage_type', intval($x)); + return UPDATE_SUCCESS; } diff --git a/Zotlabs/Web/Controller.php b/Zotlabs/Web/Controller.php index 2d0f58891..6384f24df 100644 --- a/Zotlabs/Web/Controller.php +++ b/Zotlabs/Web/Controller.php @@ -2,12 +2,58 @@ namespace Zotlabs\Web; +/** + * Base controller class for Modules. + * + * Modules should extend this class, and override the methods needed. Emtpy + * default implementations allow Modules to only override the methods they + * need. + * + * The methods defined by this class is invoked in order: + * + * - init() + * - post() -- only for POST requests + * - get() + * + * Modules which emit other serialisations besides HTML (XML,JSON, etc.) should + * do so within the module `init` and/or `post` functions and then invoke + * `killme()` to terminate further processing. + */ +abstract class Controller { -class Controller { + /** + * Initialize request processing. + * + * This method is called before any other request processing, and + * regardless of the request method. The theme is not yet loaded when + * this method is invoked. + */ + public function init() { + } - function init() {} - function post() {} - function get() {} + /** + * Process POST requests. + * + * This method is called if the incoming request is a POST request. It is + * invoked after the theme has been loaded. This method should not normally + * render HTML output, as processing will fall through to the GET processing + * if this method completes without error or stopping processing in other + * ways. + */ + public function post() { + } + /** + * Process GET requests or the body part of POST requests. + * + * This method is called directly for GET requests, and immediately after the + * `post()` method for POST requests. + * + * It will return the module content as a HTML string. + * + * @return string HTML content for the module. + */ + public function get() { + return ''; + } } - diff --git a/Zotlabs/Web/HTTPSig.php b/Zotlabs/Web/HTTPSig.php index 793b8cb45..7c289ff5f 100644 --- a/Zotlabs/Web/HTTPSig.php +++ b/Zotlabs/Web/HTTPSig.php @@ -5,6 +5,7 @@ namespace Zotlabs\Web; use DateTime; use DateTimeZone; use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Crypto; use Zotlabs\Lib\Keyutils; use Zotlabs\Lib\Webfinger; @@ -528,7 +529,7 @@ class HTTPSig { // TODO: should we default to hs2019? cavage-http-signatures-12 is not very wide spread yet - if (get_config('system', 'use_hs2019', false) && $algorithm === 'rsa-sha256') { + if (Config::Get('system', 'use_hs2019', false) && $algorithm === 'rsa-sha256') { $algorithm = 'hs2019'; } @@ -673,7 +674,7 @@ class HTTPSig { $iv = $key = $alg = $data = null; if (!$prvkey) { - $prvkey = get_config('system', 'prvkey'); + $prvkey = Config::Get('system', 'prvkey'); } $matches = []; diff --git a/Zotlabs/Web/Router.php b/Zotlabs/Web/Router.php index 2876fcc3c..122e7ff73 100644 --- a/Zotlabs/Web/Router.php +++ b/Zotlabs/Web/Router.php @@ -4,6 +4,7 @@ namespace Zotlabs\Web; use App; use Zotlabs\Extend\Route; +use Zotlabs\Lib\Config; use Exception; /** @@ -36,6 +37,7 @@ class Router { private $modname = ''; private $controller = null; + private bool $module_loaded = false; /** * @brief Router constructor. @@ -61,7 +63,7 @@ class Router { include_once($route[0]); if(class_exists($modname)) { $this->controller = new $modname; - App::$module_loaded = true; + $this->module_loaded = true; } } } @@ -69,15 +71,15 @@ class Router { // legacy plugins - this can be removed when they have all been converted - if(! (App::$module_loaded)) { + if(! ($this->module_loaded)) { if(is_array(App::$plugins) && in_array($module, App::$plugins) && file_exists("addon/{$module}/{$module}.php")) { include_once("addon/{$module}/{$module}.php"); if(class_exists($modname)) { $this->controller = new $modname; - App::$module_loaded = true; + $this->module_loaded = true; } elseif(function_exists($module . '_module')) { - App::$module_loaded = true; + $this->module_loaded = true; } } } @@ -87,40 +89,40 @@ class Router { * Otherwise, look for the standard program module */ - if(! (App::$module_loaded)) { + if(! ($this->module_loaded)) { try { $filename = 'Zotlabs/SiteModule/'. ucfirst($module). '.php'; if(file_exists($filename)) { // This won't be picked up by the autoloader, so load it explicitly require_once($filename); $this->controller = new $modname; - App::$module_loaded = true; + $this->module_loaded = true; } else { $filename = 'Zotlabs/Module/'. ucfirst($module). '.php'; if(file_exists($filename)) { $this->controller = new $modname; - App::$module_loaded = true; + $this->module_loaded = true; } } - if(! App::$module_loaded) + if(! $this->module_loaded) throw new Exception('Module not found'); } catch(Exception $e) { if(file_exists("mod/site/{$module}.php")) { include_once("mod/site/{$module}.php"); - App::$module_loaded = true; + $this->module_loaded = true; } elseif(file_exists("mod/{$module}.php")) { include_once("mod/{$module}.php"); - App::$module_loaded = true; + $this->module_loaded = true; } } } $x = [ 'module' => $module, - 'installed' => App::$module_loaded, + 'installed' => $this->module_loaded, 'controller' => $this->controller ]; /** @@ -137,7 +139,7 @@ class Router { */ call_hooks('module_loaded', $x); if($x['installed']) { - App::$module_loaded = true; + $this->module_loaded = true; $this->controller = $x['controller']; } @@ -145,7 +147,7 @@ class Router { * The URL provided does not resolve to a valid module. */ - if(! (App::$module_loaded)) { + if(! ($this->module_loaded)) { // undo the setting of a letsencrypt acme-challenge rewrite rule // which blocks access to our .well-known routes. @@ -154,14 +156,14 @@ class Router { // make the file read-only so letsencrypt doesn't modify it if(strpos($_SERVER['REQUEST_URI'],'/.well-known/') === 0) { - if(file_exists('.well-known/.htaccess') && get_config('system','fix_apache_acme',true)) { + if(file_exists('.well-known/.htaccess') && Config::Get('system','fix_apache_acme',true)) { rename('.well-known/.htaccess','.well-known/.htaccess.old'); } } $x = [ 'module' => $module, - 'installed' => App::$module_loaded, + 'installed' => $this->module_loaded, 'controller' => $this->controller ]; call_hooks('page_not_found',$x); @@ -173,7 +175,7 @@ class Router { killme(); } - if(get_config('system','log_404',true)) { + if(Config::Get('system','log_404',true)) { logger("Module {$module} not found.", LOGGER_DEBUG, LOG_WARNING); logger('index.php: page not found: ' . $_SERVER['REQUEST_URI'] . ' ADDRESS: ' . $_SERVER['REMOTE_ADDR'] . ' QUERY: ' @@ -188,7 +190,7 @@ class Router { // pretend this is a module so it will initialise the theme App::$module = '404'; - App::$module_loaded = true; + $this->module_loaded = true; App::$error = true; } } @@ -204,7 +206,7 @@ class Router { * Call module functions */ - if(App::$module_loaded) { + if($this->module_loaded) { App::$page['page_title'] = App::$module; $placeholder = ''; diff --git a/Zotlabs/Web/Session.php b/Zotlabs/Web/Session.php index 14c054d20..ec26e6b0d 100644 --- a/Zotlabs/Web/Session.php +++ b/Zotlabs/Web/Session.php @@ -10,6 +10,7 @@ namespace Zotlabs\Web; * session info. */ +use Zotlabs\Lib\Config; class Session { @@ -24,7 +25,7 @@ class Session { ini_set('session.use_only_cookies', 1); ini_set('session.cookie_httponly', 1); - $this->custom_handler = boolval(get_config('system', 'session_custom', false)); + $this->custom_handler = boolval(Config::Get('system', 'session_custom', false)); /* * Set our session storage functions. @@ -33,8 +34,8 @@ class Session { if($this->custom_handler) { /* Custom handler (files, memached, redis..) */ - $session_save_handler = strval(get_config('system', 'session_save_handler', Null)); - $session_save_path = strval(get_config('system', 'session_save_path', Null)); + $session_save_handler = strval(Config::Get('system', 'session_save_handler', Null)); + $session_save_path = strval(Config::Get('system', 'session_save_path', Null)); if(is_null($session_save_handler) || is_null($session_save_path)) { logger('Session save handler or path not set', LOGGER_NORMAL, LOG_ERR); @@ -48,8 +49,8 @@ class Session { else { ini_set('session.save_handler', $session_save_handler); ini_set('session.save_path', $session_save_path); - ini_set('session.gc_probability', intval(get_config('system', 'session_gc_probability', 1))); - ini_set('session.gc_divisor', intval(get_config('system', 'session_gc_divisor', 100))); + ini_set('session.gc_probability', intval(Config::Get('system', 'session_gc_probability', 1))); + ini_set('session.gc_divisor', intval(Config::Get('system', 'session_gc_divisor', 100))); } } } @@ -212,7 +213,7 @@ class Session { $paranoia = intval(get_pconfig($_SESSION['uid'], 'system', 'paranoia')); if(! $paranoia) - $paranoia = intval(get_config('system', 'paranoia')); + $paranoia = intval(Config::Get('system', 'paranoia')); switch($paranoia) { case 0: diff --git a/Zotlabs/Web/WebServer.php b/Zotlabs/Web/WebServer.php index f43ae10a4..6f8a4b956 100644 --- a/Zotlabs/Web/WebServer.php +++ b/Zotlabs/Web/WebServer.php @@ -13,11 +13,11 @@ class WebServer { require_once('boot.php'); - sys_boot(); + $installed = sys_boot(); \App::$language = get_best_language(); - load_translation_table(\App::$language,\App::$install); + load_translation_table(\App::$language, !$installed); /** @@ -56,7 +56,7 @@ class WebServer { load_translation_table(\App::$language); } - if((x($_GET,'zid')) && (! \App::$install)) { + if (x($_GET,'zid') && $installed) { \App::$query_string = strip_zids(\App::$query_string); if(! local_channel()) { if (!isset($_SESSION['my_address']) || $_SESSION['my_address'] != $_GET['zid']) { @@ -69,14 +69,14 @@ class WebServer { } } - if((x($_GET,'zat')) && (! \App::$install)) { + if (x($_GET,'zat') && $installed) { \App::$query_string = strip_zats(\App::$query_string); if(! local_channel()) { zat_init(); } } - if((x($_REQUEST,'owt')) && (! \App::$install)) { + if (x($_REQUEST,'owt') && $installed) { $token = $_REQUEST['owt']; \App::$query_string = strip_query_param(\App::$query_string,'owt'); owt_init($token); @@ -85,7 +85,7 @@ class WebServer { if((x($_SESSION, 'authenticated')) || (x($_POST, 'auth-params')) || (\App::$module === 'login')) require('include/auth.php'); - if(\App::$install) { + if (!$installed) { /* Allow an exception for the view module so that pcss will be interpreted during installation */ if(\App::$module != 'view') \App::$module = 'setup'; diff --git a/Zotlabs/Widget/Helpindex.php b/Zotlabs/Widget/Helpindex.php index 63e686d3a..5264e1947 100644 --- a/Zotlabs/Widget/Helpindex.php +++ b/Zotlabs/Widget/Helpindex.php @@ -1,6 +1,9 @@ <?php - /** + * Widget to show the help index. + * + * By default used by the left sidebar by the help module. + * * * Name: Help index * * Description: Help pages index */ @@ -9,54 +12,28 @@ namespace Zotlabs\Widget; class Helpindex { - function widget($arr) { - - require_once('include/help.php'); - - $o = '<div class="widget">'; - - $level_0 = get_help_content('sitetoc'); - if(! $level_0) { - $path = 'toc'; - $x = determine_help_language(); - $lang = $x['language']; - if($lang !== 'en') { - $path = $lang . '/toc'; - } - $level_0 = get_help_content($path); - } + use \Zotlabs\Lib\Traits\HelpHelperTrait; - $level_0 = preg_replace('/\<ul(.*?)\>/','<ul class="nav nav-pills flex-column">',$level_0); + private string $contents = ''; - $levels = array(); + function widget() { + $this->determine_help_language(); + $this->find_help_file('toc', $this->lang['language']); - // TODO: Implement support for translations in hierarchical table of content files - /* - if(argc() > 2) { - $path = ''; - for($x = 1; $x < argc(); $x ++) { - $path .= argv($x) . '/'; - $y = get_help_content($path . 'sitetoc'); - if(! $y) - $y = get_help_content($path . 'toc'); - if($y) - $levels[] = preg_replace('/\<ul(.*?)\>/','<ul class="nav nav-pills flex-column">',$y); - } - } - */ - - if($level_0) - $o .= $level_0; - if($levels) { - foreach($levels as $l) { - $o .= '<br /><br />'; - $o .= $l; - } + if (! empty($this->file_name)) { + $this->contents = file_get_contents($this->file_name); } - $o .= '</div>'; + $tpl = get_markup_template('widget.tpl'); + return replace_macros($tpl, [ '$widget' => $this ]); + } + + public function title(): string { + return ''; + } - return $o; + public function contents(): string { + return $this->contents; } } diff --git a/Zotlabs/Widget/Newmember.php b/Zotlabs/Widget/Newmember.php index 70a858fb0..79bdf9f9f 100644 --- a/Zotlabs/Widget/Newmember.php +++ b/Zotlabs/Widget/Newmember.php @@ -7,6 +7,8 @@ namespace Zotlabs\Widget; +use Zotlabs\Lib\Config; + class Newmember { function widget($arr) { @@ -66,8 +68,8 @@ class Newmember { ] ]; - $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false); - $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true); + $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false); + $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true); // hack to put this in the correct spot of the array diff --git a/Zotlabs/Widget/Pinned.php b/Zotlabs/Widget/Pinned.php index 1380c156b..2ba170fe8 100644 --- a/Zotlabs/Widget/Pinned.php +++ b/Zotlabs/Widget/Pinned.php @@ -1,6 +1,8 @@ <?php namespace Zotlabs\Widget; +use Zotlabs\Lib\Config; + /** * * Name: Pinned items * * Description: Display pinned items @@ -31,7 +33,7 @@ class Pinned { if(! $this->uid) return $ret; - $this->allowed_types = get_config('system', 'pin_types', [ ITEM_TYPE_POST ]); + $this->allowed_types = Config::Get('system', 'pin_types', [ ITEM_TYPE_POST ]); $items = $this->list($types); diff --git a/Zotlabs/Widget/Pubtagcloud.php b/Zotlabs/Widget/Pubtagcloud.php index 90bf5eb97..8119d0c73 100644 --- a/Zotlabs/Widget/Pubtagcloud.php +++ b/Zotlabs/Widget/Pubtagcloud.php @@ -7,6 +7,8 @@ namespace Zotlabs\Widget; +use Zotlabs\Lib\Config; + class Pubtagcloud { function widget($arr) { @@ -16,19 +18,19 @@ class Pubtagcloud { return EMPTY_STR; } - if(! intval(get_config('system','open_pubstream',1))) { + if(! intval(Config::Get('system','open_pubstream',1))) { if(! get_observer_hash()) { return EMPTY_STR; } } - $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true); + $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true); if(!$net_firehose) { return ''; } - $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false); + $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false); $safemode = get_xconfig(get_observer_hash(),'directory','safemode',1); diff --git a/Zotlabs/Widget/Rating.php b/Zotlabs/Widget/Rating.php index 20c27ff1c..f8986ac93 100644 --- a/Zotlabs/Widget/Rating.php +++ b/Zotlabs/Widget/Rating.php @@ -8,12 +8,14 @@ namespace Zotlabs\Widget; +use Zotlabs\Lib\Config; + class Rating { function widget($arr) { - $rating_enabled = get_config('system','rating_enabled'); + $rating_enabled = Config::Get('system','rating_enabled'); if(! $rating_enabled) { return; } @@ -62,9 +62,11 @@ require_once('include/conversation.php'); require_once('include/acl_selectors.php'); require_once('include/selectors.php'); require_once('include/activities.php'); +require_once('include/security.php'); + define('PLATFORM_NAME', 'hubzilla'); -define('STD_VERSION', '9.0.2'); +define('STD_VERSION', '9.2'); define('ZOT_REVISION', '6.0'); define('DB_UPDATE_VERSION', 1263); @@ -602,8 +604,19 @@ define('DBTYPE_MYSQL', 0); define('DBTYPE_POSTGRES', 1); -function sys_boot() { - +/** + * Boot the app. + * + * Detects if the system is installed, and if it is, reads the basic configuration + * in `.htconfig`, conects to the database, and loads the system configuration stored + * in the db. + * + * As a side effect it also sets the App::$install flag to true if the system is _not_ + * installed yet. + * + * @return True if the system is installed, false otherwise. + */ +function sys_boot(): bool { // our central App object @@ -686,6 +699,8 @@ function sys_boot() { */ call_hooks('init_1'); } + + return !App::$install; } @@ -766,7 +781,6 @@ class App { public static $langsave; public static $rtl = false; public static $plugins_admin; - public static $module_loaded = false; public static $query_string; public static $page; public static $profile; @@ -1249,7 +1263,7 @@ class App { '$metas' => self::$meta->get(), '$plugins' => $x['header'], '$update_interval' => $interval, - '$sse_enabled' => get_config('system', 'sse_enabled', 0), + '$sse_enabled' => Config::Get('system', 'sse_enabled', 0), '$head_css' => head_get_css(), '$head_js' => head_get_js(), '$linkrel' => head_get_links(), @@ -1495,9 +1509,9 @@ function is_ajax() { */ function check_config() { - $saved = get_config('system', 'urlverify'); + $saved = Config::Get('system', 'urlverify'); if (!$saved) - set_config('system', 'urlverify', bin2hex(z_root())); + Config::Set('system', 'urlverify', bin2hex(z_root())); if (($saved) && ($saved != bin2hex(z_root()))) { // our URL changed. Do something. @@ -1513,7 +1527,7 @@ function check_config() { // only change the url to an ip address if it was already an ip and not a dns name if ((!$is_ip_addr) || ($is_ip_addr && $was_ip_addr)) { fix_system_urls($oldurl, z_root()); - set_config('system', 'urlverify', bin2hex(z_root())); + Config::Set('system', 'urlverify', bin2hex(z_root())); } else logger('Attempt to change baseurl from a DNS name to an IP address was refused.'); @@ -1634,7 +1648,7 @@ function fix_system_urls($oldurl, $newurl) { } } - Zotlabs\Daemon\Master::Summon(['Notifier', 'refresh_all', $c[0]['channel_id']]); + Master::Summon(['Notifier', 'refresh_all', $c[0]['channel_id']]); } } @@ -1713,9 +1727,9 @@ function login($register = false, $form_id = 'main_login', $hiddens = false, $lo // your site. - $register_policy = get_config('system', 'register_policy'); + $register_policy = Config::Get('system', 'register_policy'); - $reglink = get_config('system', 'register_link', z_root() . '/' . ((intval($register_policy) === REGISTER_CLOSED) ? 'pubsites' : 'register')); + $reglink = Config::Get('system', 'register_link', z_root() . '/' . ((intval($register_policy) === REGISTER_CLOSED) ? 'pubsites' : 'register')); if ($reglink !== 'none') { $reg = [ @@ -1736,7 +1750,7 @@ function login($register = false, $form_id = 'main_login', $hiddens = false, $lo $_SESSION['login_return_url'] = App::$query_string; } - $email_required = get_config('system', 'verify_email'); + $email_required = Config::Get('system', 'verify_email'); $lname_label = (($email_required) ? t('Email or nickname') : t('Nickname')); $o .= replace_macros($tpl, [ @@ -1746,9 +1760,9 @@ function login($register = false, $form_id = 'main_login', $hiddens = false, $lo '$login' => t('Login'), '$remote_login' => t('Remote Authentication'), '$form_id' => $form_id, - '$lname' => [$form_id . '_username', $lname_label], - '$lpassword' => [$form_id . '_password', t('Password')], - '$remember_me' => [$form_id . '_remember', t('Remember me'), '', '', [t('No'), t('Yes')]], + '$lname' => [$form_id . '_username', $lname_label, null, null, null, null], + '$lpassword' => [$form_id . '_password', t('Password'), null, null, null, null], + '$remember_me' => [$form_id . '_remember', t('Remember me'), '', '', [t('No'), t('Yes')], null, null], '$hiddens' => $hiddens, '$register' => $reg, '$lostpass' => t('Forgot your password?'), @@ -1854,13 +1868,13 @@ function can_view_public_stream() { return false; } - if (!(intval(get_config('system', 'open_pubstream', 1)))) { + if (!(intval(Config::Get('system', 'open_pubstream', 1)))) { if (!get_observer_hash()) { return false; } } - $net_firehose = ((get_config('system', 'disable_discover_tab', 1)) ? false : true); + $net_firehose = ((Config::Get('system', 'disable_discover_tab', 1)) ? false : true); if (!$net_firehose) { return false; @@ -2001,7 +2015,7 @@ function info($s) { * @return int */ function get_max_import_size() { - return (intval(get_config('system', 'max_import_size'))); + return (intval(Config::Get('system', 'max_import_size'))); } @@ -2055,7 +2069,7 @@ function proc_run() { proc_close(proc_open($cmd, [], $foo)); } else { - if (get_config('system', 'use_proc_open')) + if (Config::Get('system', 'use_proc_open')) proc_close(proc_open($cmdline . " &", [], $foo)); else exec($cmdline . ' > /dev/null &'); @@ -2333,7 +2347,7 @@ function construct_page() { $uid = ((App::$profile_uid) ? App::$profile_uid : local_channel()); - $navbar = get_config('system', 'navbar', 'default'); + $navbar = Config::Get('system', 'navbar', 'default'); if ($uid) { $navbar = get_pconfig($uid, 'system', 'navbar', $navbar); } @@ -2533,7 +2547,7 @@ function head_get_icon() { * @return string */ function get_directory_realm() { - if ($x = get_config('system', 'directory_realm')) + if ($x = Config::Get('system', 'directory_realm')) return $x; return DIRECTORY_REALM; @@ -2546,13 +2560,13 @@ function get_directory_realm() { */ function get_directory_primary() { - $dirmode = intval(get_config('system', 'directory_mode')); + $dirmode = intval(Config::Get('system', 'directory_mode')); if ($dirmode == DIRECTORY_MODE_STANDALONE || $dirmode == DIRECTORY_MODE_PRIMARY) { return z_root(); } - if ($x = get_config('system', 'directory_primary')) + if ($x = Config::Get('system', 'directory_primary')) return $x; return DIRECTORY_FALLBACK_MASTER; @@ -2565,13 +2579,13 @@ function get_directory_primary() { * @return string relative date of last completed poller execution */ function get_poller_runtime() { - $t = get_config('system', 'lastpoll'); + $t = Config::Get('system', 'lastpoll'); return relative_date($t); } function z_get_upload_dir() { - $upload_dir = get_config('system', 'uploaddir'); + $upload_dir = Config::Get('system', 'uploaddir'); if (!$upload_dir) $upload_dir = ini_get('upload_tmp_dir'); if (!$upload_dir) @@ -2581,7 +2595,7 @@ function z_get_upload_dir() { } function z_get_temp_dir() { - $temp_dir = get_config('system', 'tempdir'); + $temp_dir = Config::Get('system', 'tempdir'); if (!$temp_dir) $temp_dir = sys_get_temp_dir(); @@ -2637,12 +2651,12 @@ function check_for_new_perms() { if (Permissions::version() != PermissionRoles::version()) return; - $pregistered = get_config('system', 'perms'); + $pregistered = Config::Get('system', 'perms'); $pcurrent = array_keys(Permissions::Perms()); if (!$pregistered) { - set_config('system', 'perms', $pcurrent); + Config::Set('system', 'perms', $pcurrent); return; } @@ -2699,7 +2713,7 @@ function check_for_new_perms() { // We should probably call perms_refresh here, but this should get pushed in 24 hours and there is no urgency if ($found_new_perm) - set_config('system', 'perms', $pcurrent); + Config::Set('system', 'perms', $pcurrent); } @@ -2708,17 +2722,17 @@ function check_for_new_perms() { */ function check_cron_broken() { - $d = get_config('system', 'lastcron'); + $d = Config::Get('system', 'lastcron'); if ((!$d) || ($d < datetime_convert('UTC', 'UTC', 'now - 4 hours'))) { - Zotlabs\Daemon\Master::Summon(['Cron']); - set_config('system', 'lastcron', datetime_convert()); + Master::Summon(['Cron']); + Config::Set('system', 'lastcron', datetime_convert()); } - $t = get_config('system', 'lastcroncheck'); + $t = Config::Get('system', 'lastcroncheck'); if (!$t) { // never checked before. Start the timer. - set_config('system', 'lastcroncheck', datetime_convert()); + Config::Set('system', 'lastcroncheck', datetime_convert()); return; } @@ -2727,7 +2741,7 @@ function check_cron_broken() { return; } - set_config('system', 'lastcroncheck', datetime_convert()); + Config::Set('system', 'lastcroncheck', datetime_convert()); if (($d) && ($d > datetime_convert('UTC', 'UTC', 'now - 3 days'))) { // Scheduled tasks have run successfully in the last 3 days. @@ -2759,7 +2773,7 @@ function check_cron_broken() { */ function observer_prohibited($allow_account = false) { if ($allow_account) { - return (((get_config('system', 'block_public')) && (!get_account_id()) && (!remote_channel())) ? true : false); + return (((Config::Get('system', 'block_public')) && (!get_account_id()) && (!remote_channel())) ? true : false); } - return (((get_config('system', 'block_public')) && (!local_channel()) && (!remote_channel())) ? true : false); + return (((Config::Get('system', 'block_public')) && (!local_channel()) && (!remote_channel())) ? true : false); } diff --git a/composer.json b/composer.json index d8a13fdf3..6cef6acd9 100644 --- a/composer.json +++ b/composer.json @@ -59,12 +59,12 @@ }, "require-dev": { "ext-yaml": "*", - "phpunit/phpunit": "^9.4", - "php-mock/php-mock-phpunit": "^2.6", + "phpunit/phpunit": "^10.5", + "php-mock/php-mock-phpunit": "^2.10", "phpmd/phpmd": "^2.6", "squizlabs/php_codesniffer": "*", "php-mock/php-mock": "^2.2", - "dms/phpunit-arraysubset-asserts": "^0.2.1" + "dms/phpunit-arraysubset-asserts": "^0.5.0" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 63d5a963c..a2437c5f5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3a17d1b44bc28f3609d086af7b358f72", + "content-hash": "2c6f7ad91fff98ebeb5fd339a8856d29", "packages": [ { "name": "blueimp/jquery-file-upload", @@ -2480,31 +2480,30 @@ }, { "name": "dms/phpunit-arraysubset-asserts", - "version": "v0.2.1", + "version": "v0.5.0", "source": { "type": "git", "url": "https://github.com/rdohms/phpunit-arraysubset-asserts.git", - "reference": "8e3673a70019a60df484e36fc3271d63cbdc40ea" + "reference": "aa6b9e858414e91cca361cac3b2035ee57d212e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rdohms/phpunit-arraysubset-asserts/zipball/8e3673a70019a60df484e36fc3271d63cbdc40ea", - "reference": "8e3673a70019a60df484e36fc3271d63cbdc40ea", + "url": "https://api.github.com/repos/rdohms/phpunit-arraysubset-asserts/zipball/aa6b9e858414e91cca361cac3b2035ee57d212e0", + "reference": "aa6b9e858414e91cca361cac3b2035ee57d212e0", "shasum": "" }, "require": { - "php": "^7.3|^8.0", - "phpunit/phpunit": "^9.0" + "php": "^5.4 || ^7.0 || ^8.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0" }, "require-dev": { - "dms/coding-standard": "^1.0", - "squizlabs/php_codesniffer": "^3.4" + "dms/coding-standard": "^9" }, "type": "library", "autoload": { - "psr-4": { - "DMS\\PHPUnitExtensions\\ArraySubset\\": "src" - } + "files": [ + "assertarraysubset-autoload.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2519,92 +2518,22 @@ "description": "This package provides ArraySubset and related asserts once deprecated in PHPUnit 8", "support": { "issues": "https://github.com/rdohms/phpunit-arraysubset-asserts/issues", - "source": "https://github.com/rdohms/phpunit-arraysubset-asserts/tree/v0.2.1" + "source": "https://github.com/rdohms/phpunit-arraysubset-asserts/tree/v0.5.0" }, - "time": "2020-10-03T21:43:40+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2023-06-02T17:33:53+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -2642,7 +2571,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -2650,29 +2579,31 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nikic/php-parser", - "version": "v4.13.2", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2680,7 +2611,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2704,9 +2635,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" }, - "time": "2021-11-30T19:35:32+00:00" + "time": "2024-03-05T20:51:40+00:00" }, { "name": "pdepend/pdepend", @@ -2767,20 +2698,21 @@ }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -2821,9 +2753,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -2878,28 +2816,28 @@ }, { "name": "php-mock/php-mock", - "version": "2.3.1", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/php-mock/php-mock.git", - "reference": "9a55bd8ba40e6da2e97a866121d2c69dedd4952b" + "reference": "fff1a621ebe54100fa3bd852e7be57773a0c0127" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-mock/php-mock/zipball/9a55bd8ba40e6da2e97a866121d2c69dedd4952b", - "reference": "9a55bd8ba40e6da2e97a866121d2c69dedd4952b", + "url": "https://api.github.com/repos/php-mock/php-mock/zipball/fff1a621ebe54100fa3bd852e7be57773a0c0127", + "reference": "fff1a621ebe54100fa3bd852e7be57773a0c0127", "shasum": "" }, "require": { "php": "^5.6 || ^7.0 || ^8.0", - "phpunit/php-text-template": "^1 || ^2" + "phpunit/php-text-template": "^1 || ^2 || ^3 || ^4" }, "replace": { "malkusch/php-mock": "*" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.0 || ^9.0", - "squizlabs/php_codesniffer": "^3.5" + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.0 || ^9.0 || ^10.0 || ^11.0", + "squizlabs/php_codesniffer": "^3.8" }, "suggest": { "php-mock/php-mock-phpunit": "Allows integration into PHPUnit testcase with the trait PHPMock." @@ -2937,11 +2875,12 @@ "mock", "stub", "test", - "test double" + "test double", + "testing" ], "support": { "issues": "https://github.com/php-mock/php-mock/issues", - "source": "https://github.com/php-mock/php-mock/tree/2.3.1" + "source": "https://github.com/php-mock/php-mock/tree/2.5.0" }, "funding": [ { @@ -2949,29 +2888,29 @@ "type": "github" } ], - "time": "2022-02-07T18:57:52+00:00" + "time": "2024-02-10T21:07:01+00:00" }, { "name": "php-mock/php-mock-integration", - "version": "2.1.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/php-mock/php-mock-integration.git", - "reference": "003d585841e435958a02e9b986953907b8b7609b" + "reference": "ec6a00a8129d50ed0f07907c91e3274ca4ade877" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-mock/php-mock-integration/zipball/003d585841e435958a02e9b986953907b8b7609b", - "reference": "003d585841e435958a02e9b986953907b8b7609b", + "url": "https://api.github.com/repos/php-mock/php-mock-integration/zipball/ec6a00a8129d50ed0f07907c91e3274ca4ade877", + "reference": "ec6a00a8129d50ed0f07907c91e3274ca4ade877", "shasum": "" }, "require": { "php": ">=5.6", - "php-mock/php-mock": "^2.2", - "phpunit/php-text-template": "^1 || ^2" + "php-mock/php-mock": "^2.5", + "phpunit/php-text-template": "^1 || ^2 || ^3 || ^4" }, "require-dev": { - "phpunit/phpunit": "^5.7.27 || ^6 || ^7 || ^8 || ^9" + "phpunit/phpunit": "^5.7.27 || ^6 || ^7 || ^8 || ^9 || ^10 || ^11" }, "type": "library", "autoload": { @@ -3004,28 +2943,37 @@ ], "support": { "issues": "https://github.com/php-mock/php-mock-integration/issues", - "source": "https://github.com/php-mock/php-mock-integration/tree/2.1.0" + "source": "https://github.com/php-mock/php-mock-integration/tree/2.3.0" }, - "time": "2020-02-08T14:40:25+00:00" + "funding": [ + { + "url": "https://github.com/michalbundyra", + "type": "github" + } + ], + "time": "2024-02-10T21:37:25+00:00" }, { "name": "php-mock/php-mock-phpunit", - "version": "2.6.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/php-mock/php-mock-phpunit.git", - "reference": "2877a0e58f12e91b64bf36ccd080a209dcbf6c30" + "reference": "e1f7e795990b00937376e345883ea68ca3bda7e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-mock/php-mock-phpunit/zipball/2877a0e58f12e91b64bf36ccd080a209dcbf6c30", - "reference": "2877a0e58f12e91b64bf36ccd080a209dcbf6c30", + "url": "https://api.github.com/repos/php-mock/php-mock-phpunit/zipball/e1f7e795990b00937376e345883ea68ca3bda7e0", + "reference": "e1f7e795990b00937376e345883ea68ca3bda7e0", "shasum": "" }, "require": { "php": ">=7", - "php-mock/php-mock-integration": "^2.1", - "phpunit/phpunit": "^6 || ^7 || ^8 || ^9" + "php-mock/php-mock-integration": "^2.3", + "phpunit/phpunit": "^6 || ^7 || ^8 || ^9 || ^10.0.17 || ^11" + }, + "require-dev": { + "mockery/mockery": "^1.3.6" }, "type": "library", "autoload": { @@ -3058,13 +3006,20 @@ "phpunit", "stub", "test", - "test double" + "test double", + "testing" ], "support": { "issues": "https://github.com/php-mock/php-mock-phpunit/issues", - "source": "https://github.com/php-mock/php-mock-phpunit/tree/2.6.0" + "source": "https://github.com/php-mock/php-mock-phpunit/tree/2.10.0" }, - "time": "2020-02-08T15:44:47+00:00" + "funding": [ + { + "url": "https://github.com/michalbundyra", + "type": "github" + } + ], + "time": "2024-02-11T07:24:16+00:00" }, { "name": "phpmd/phpmd", @@ -3151,44 +3106,44 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "version": "10.1.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.1" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -3216,7 +3171,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" }, "funding": [ { @@ -3224,32 +3180,32 @@ "type": "github" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2024-03-12T15:33:41+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -3276,7 +3232,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -3284,28 +3241,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -3313,7 +3270,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -3339,7 +3296,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -3347,32 +3304,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -3398,7 +3355,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -3406,32 +3364,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -3457,7 +3415,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -3465,24 +3423,23 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.5.23", + "version": "10.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "888556852e7e9bbeeedb9656afe46118765ade34" + "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/888556852e7e9bbeeedb9656afe46118765ade34", - "reference": "888556852e7e9bbeeedb9656afe46118765ade34", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/547d314dc24ec1e177720d45c6263fb226cc2ae3", + "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -3492,27 +3449,26 @@ "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", - "sebastian/version": "^3.0.2" + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -3520,7 +3476,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -3551,7 +3507,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.23" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.20" }, "funding": [ { @@ -3561,9 +3518,13 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-08-22T14:01:36+00:00" + "time": "2024-04-24T06:32:35+00:00" }, { "name": "psr/container", @@ -3615,28 +3576,28 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -3659,7 +3620,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -3667,32 +3629,32 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -3715,7 +3677,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -3723,32 +3685,32 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -3770,7 +3732,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -3778,34 +3740,36 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -3844,7 +3808,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -3852,33 +3817,33 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -3901,7 +3866,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -3909,33 +3875,33 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -3967,7 +3933,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -3975,27 +3942,27 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -4003,7 +3970,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -4022,7 +3989,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -4030,7 +3997,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -4038,34 +4006,34 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -4107,7 +4075,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -4115,38 +4084,35 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -4165,13 +4131,14 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -4179,33 +4146,33 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -4228,7 +4195,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -4236,34 +4204,34 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -4285,7 +4253,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -4293,32 +4261,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -4340,7 +4308,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -4348,32 +4316,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -4400,65 +4368,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -4466,32 +4379,32 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "sebastian/type", - "version": "3.0.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -4514,7 +4427,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -4522,29 +4435,29 @@ "type": "github" } ], - "time": "2022-03-15T09:54:48+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -4567,7 +4480,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -4575,7 +4488,7 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -5261,16 +5174,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -5299,7 +5212,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -5307,7 +5220,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], diff --git a/doc/context/de/apps/edit/help.html b/doc/context/de/apps/edit/help.html deleted file mode 100644 index 5381aeea6..000000000 --- a/doc/context/de/apps/edit/help.html +++ /dev/null @@ -1,4 +0,0 @@ -<dl class="dl-horizontal"> - <dt>Allgemein</dt> - <dd>Ändere oder lösche deine Apps mit Hilfe der Steuerknöpfe neben jedem App-Icon in der Liste.</dd> -</dl>
\ No newline at end of file diff --git a/doc/context/de/apps/help.html b/doc/context/de/apps/help.html deleted file mode 100644 index b63352324..000000000 --- a/doc/context/de/apps/help.html +++ /dev/null @@ -1,6 +0,0 @@ -<dl class="dl-horizontal"> - <dt>Allgemein</dt> - <dd>Diese Seite listet alle verfügbaren Apps für Deinen Kanal. Sie enthält die Core Apps wie auch die von Addons. Wenn eine App im <a href='#' onclick='contextualHelpFocus("#app-menu", 1); return false;' title="Klicke zum Öffnen...">App Menü</a> erscheinen soll, dann markiere die App in der Liste mit dem Stern.</dd> - <dt>Apps verwalten</dt> - <dd>Der Knopf "Apps verwalten" öffnet eine Seite, mit der Du den Namen, die Kategorie und andere Eigenschaften deiner Apps ändern kannst.</dd> -</dl>
\ No newline at end of file diff --git a/doc/context/en/apps/edit/help.html b/doc/context/en/apps/edit/help.html deleted file mode 100644 index 1d378f962..000000000 --- a/doc/context/en/apps/edit/help.html +++ /dev/null @@ -1,4 +0,0 @@ -<dl class="dl-horizontal"> - <dt>General</dt> - <dd>Edit or delete your apps using the control buttons beside each app icon in the list.</dd> -</dl>
\ No newline at end of file diff --git a/doc/context/en/apps/help.html b/doc/context/en/apps/help.html deleted file mode 100644 index ad6daade5..000000000 --- a/doc/context/en/apps/help.html +++ /dev/null @@ -1,6 +0,0 @@ -<dl class="dl-horizontal"> - <dt>General</dt> - <dd>This page shows you what apps are available to your channel, including both core apps and those supplied by addons. To add an app to the <a href='#' onclick='contextualHelpFocus("#app-menu", 1); return false;' title="Click to open...">app menu</a> "star" the app in the list below.</dd> - <dt>Manage Apps</dt> - <dd>Press the "Manage Apps" button to open a page where you can edit the name, categories, and other properties of your apps.</dd> -</dl>
\ No newline at end of file diff --git a/doc/context/es-es/apps/edit/help.html b/doc/context/es-es/apps/edit/help.html deleted file mode 100644 index 28e92328e..000000000 --- a/doc/context/es-es/apps/edit/help.html +++ /dev/null @@ -1,4 +0,0 @@ -<dl class="dl-horizontal"> - <dt>General</dt> - <dd>Modificar o eliminar sus "apps" usando el botón de control que está junto al icono de cada aplicación de la lista.</dd> -</dl>
\ No newline at end of file diff --git a/doc/context/es-es/apps/help.html b/doc/context/es-es/apps/help.html deleted file mode 100644 index a6bfd0093..000000000 --- a/doc/context/es-es/apps/help.html +++ /dev/null @@ -1,6 +0,0 @@ -<dl class="dl-horizontal"> - <dt>General</dt> - <dd>Esta página le muestra qué aplicaciones están disponibles para su canal, incluyendo tanto las aplicaciones principales como las proporcionadas por addons. Para añadir una aplicación al <a href=' #' onclick=' contextualHelpFocus ("#app-menu", 1); devuelve false;' title="Pulsar para abrir...">menú de aplicaciones</a> "estrelle" la aplicación de la siguiente lista.</dd> - <dt>Gestionar las aplicaciones (apps)</dt> - <dd>Pulse el botón "Gestionar aplicaciones" para abrir una página en la podrá editar el nombre, las categorías y otras propiedades de sus aplicaciones.</dd> -</dl> diff --git a/doc/context/fr/apps/edit/index.html b/doc/context/fr/apps/edit/index.html deleted file mode 100644 index 93fd8dec6..000000000 --- a/doc/context/fr/apps/edit/index.html +++ /dev/null @@ -1,4 +0,0 @@ -<dl class="dl-horizontal"> - <dt>Informations de base</dt> - <dd>Modifiez ou supprimez vos applications à l'aide des boutons de contrôle situés à côté de chaque icône d'application dans la liste.</dd> -</dl> diff --git a/doc/context/fr/apps/help.html b/doc/context/fr/apps/help.html deleted file mode 100644 index 65eb63d84..000000000 --- a/doc/context/fr/apps/help.html +++ /dev/null @@ -1,7 +0,0 @@ -<dl class="dl-horizontal"> - <dt>Informations de base</dt> - <dd>Cette page vous montre quelles applications sont disponibles pour votre canal, y compris les applications centrales et celles fournies par les greffons. Pour ajouter une application au <a href='#' onclick='contextualHelpFocus("#app-menu", 1); return false;' title="Cliquez pour ouvrir...">menu de l'application</a>, cliquez sur le bouton étoile l'application dans la liste ci-dessous.</dd> - <dt>Gérer les applications</dt> - <dd>Appuyez sur le bouton «Gérer les applications» pour ouvrir une page où vous pouvez éditer le nom, les catégories et autres propriétés de vos applications. - </dd> -</dl> diff --git a/doc/context/pl/apps/edit/help.html b/doc/context/pl/apps/edit/help.html deleted file mode 100644 index 42db07d17..000000000 --- a/doc/context/pl/apps/edit/help.html +++ /dev/null @@ -1,7 +0,0 @@ -<dl class="dl-horizontal"> - <dt>Ogólne</dt> - <dd> - Edytowanie lub usuwanie aplikacje za pomocą przycisków sterowania widocznych - na liście obok każdej ikony aplikacji. - </dd> -</dl>
\ No newline at end of file diff --git a/doc/context/pl/apps/help.html b/doc/context/pl/apps/help.html deleted file mode 100644 index 7ad3bef5c..000000000 --- a/doc/context/pl/apps/help.html +++ /dev/null @@ -1,15 +0,0 @@ -<dl class="dl-horizontal"> - <dt>Ogólne</dt> - <dd> - Ta strona pokazuje, jakie aplikacje są dostępne na Twoim kanale, w tym zarówno - aplikacje podstawowe, jak i te dostarczane przez dodatki. Aby dodać aplikację - do <a href = '#' onclick = 'contextualHelpFocus("# app-menu",1); return false;' - title = "Kliknij, aby otworzyć ...">menu aplikacji</a> oznacz gwiazdką - aplikację na poniższej liście. - </dd> - <dt>Zarządzanie aplikacjami</dt> - <dd> - Naciśnij przycisk "Zarządzaj aplikacjami", aby otworzyć stronę, na której - możesz edytować nazwę, kategorie i inne właściwości swoich aplikacji. - </dd> -</dl>
\ No newline at end of file diff --git a/doc/AdvancedSearch.md b/doc/en/AdvancedSearch.md index a67c1fc1f..a67c1fc1f 100644 --- a/doc/AdvancedSearch.md +++ b/doc/en/AdvancedSearch.md diff --git a/doc/Comparison-of-activity-stream-networks.md b/doc/en/Comparison-of-activity-stream-networks.md index d76ae1006..d76ae1006 100644 --- a/doc/Comparison-of-activity-stream-networks.md +++ b/doc/en/Comparison-of-activity-stream-networks.md diff --git a/doc/Creating-Templates.md b/doc/en/Creating-Templates.md index fc3f18dd3..fc3f18dd3 100644 --- a/doc/Creating-Templates.md +++ b/doc/en/Creating-Templates.md diff --git a/doc/DerivedTheme1.md b/doc/en/DerivedTheme1.md index b120c628c..b120c628c 100644 --- a/doc/DerivedTheme1.md +++ b/doc/en/DerivedTheme1.md diff --git a/doc/Developers.md b/doc/en/Developers.md index 624c058d2..624c058d2 100644 --- a/doc/Developers.md +++ b/doc/en/Developers.md diff --git a/doc/Features.md b/doc/en/Features.md index a43fd73fa..a43fd73fa 100644 --- a/doc/Features.md +++ b/doc/en/Features.md diff --git a/doc/Hubzilla_on_OpenShift.bb b/doc/en/Hubzilla_on_OpenShift.bb index 7bdd70955..7bdd70955 100644 --- a/doc/Hubzilla_on_OpenShift.bb +++ b/doc/en/Hubzilla_on_OpenShift.bb diff --git a/doc/Plugins.md b/doc/en/Plugins.md index 88b42185b..88b42185b 100644 --- a/doc/Plugins.md +++ b/doc/en/Plugins.md diff --git a/doc/Primary-Directory.md b/doc/en/Primary-Directory.md index 92460c346..92460c346 100644 --- a/doc/Primary-Directory.md +++ b/doc/en/Primary-Directory.md diff --git a/doc/Remove-Account.md b/doc/en/Remove-Account.md index a8ef733a6..a8ef733a6 100644 --- a/doc/Remove-Account.md +++ b/doc/en/Remove-Account.md diff --git a/doc/Schema-development.md b/doc/en/Schema-development.md index e811bb8c3..e811bb8c3 100644 --- a/doc/Schema-development.md +++ b/doc/en/Schema-development.md diff --git a/doc/TermsOfService.md b/doc/en/TermsOfService.md index 1e085559e..1e085559e 100644 --- a/doc/TermsOfService.md +++ b/doc/en/TermsOfService.md diff --git a/doc/Translations.md b/doc/en/Translations.md index 6106e43b1..6106e43b1 100644 --- a/doc/Translations.md +++ b/doc/en/Translations.md diff --git a/doc/Widgets.md b/doc/en/Widgets.md index 6779d7ffd..6779d7ffd 100644 --- a/doc/Widgets.md +++ b/doc/en/Widgets.md diff --git a/doc/Zot---A-High-Level-Overview.md b/doc/en/Zot---A-High-Level-Overview.md index 990ea037b..990ea037b 100644 --- a/doc/Zot---A-High-Level-Overview.md +++ b/doc/en/Zot---A-High-Level-Overview.md diff --git a/doc/about/about.bb b/doc/en/about/about.bb index e909f54cd..e909f54cd 100644 --- a/doc/about/about.bb +++ b/doc/en/about/about.bb diff --git a/doc/about/about_hub.bb b/doc/en/about/about_hub.bb index 0c1082f51..0c1082f51 100644 --- a/doc/about/about_hub.bb +++ b/doc/en/about/about_hub.bb diff --git a/doc/about/project.bb b/doc/en/about/project.bb index fe90b4d36..fe90b4d36 100644 --- a/doc/about/project.bb +++ b/doc/en/about/project.bb diff --git a/doc/accounts_profiles_channels_basics.bb b/doc/en/accounts_profiles_channels_basics.bb index 63b13f036..63b13f036 100644 --- a/doc/accounts_profiles_channels_basics.bb +++ b/doc/en/accounts_profiles_channels_basics.bb diff --git a/doc/acl_dialog_post.html b/doc/en/acl_dialog_post.html index 80b2c68b6..80b2c68b6 100644 --- a/doc/acl_dialog_post.html +++ b/doc/en/acl_dialog_post.html diff --git a/doc/addons.bb b/doc/en/addons.bb index 4bfa7a9fd..4bfa7a9fd 100644 --- a/doc/addons.bb +++ b/doc/en/addons.bb diff --git a/doc/addons_gnusocial.bb b/doc/en/addons_gnusocial.bb index fbb387476..fbb387476 100644 --- a/doc/addons_gnusocial.bb +++ b/doc/en/addons_gnusocial.bb diff --git a/doc/admin/administrator_guide.md b/doc/en/admin/administrator_guide.md index bf4dc7355..bf4dc7355 100644 --- a/doc/admin/administrator_guide.md +++ b/doc/en/admin/administrator_guide.md diff --git a/doc/admin/hub_snapshots.md b/doc/en/admin/hub_snapshots.md index ab0948aa8..ab0948aa8 100644 --- a/doc/admin/hub_snapshots.md +++ b/doc/en/admin/hub_snapshots.md diff --git a/doc/admin/zarlog_msgs.md b/doc/en/admin/zarlog_msgs.md index 0fe16a1e2..0fe16a1e2 100644 --- a/doc/admin/zarlog_msgs.md +++ b/doc/en/admin/zarlog_msgs.md diff --git a/doc/admins.bb b/doc/en/admins.bb index 6c78ce999..6c78ce999 100644 --- a/doc/admins.bb +++ b/doc/en/admins.bb diff --git a/doc/api/api_albums.md b/doc/en/api/api_albums.md index 230daae3c..230daae3c 100644 --- a/doc/api/api_albums.md +++ b/doc/en/api/api_albums.md diff --git a/doc/api/api_filedata.md b/doc/en/api/api_filedata.md index 1d46a495c..1d46a495c 100644 --- a/doc/api/api_filedata.md +++ b/doc/en/api/api_filedata.md diff --git a/doc/api/api_files.md b/doc/en/api/api_files.md index c2a10fce5..c2a10fce5 100644 --- a/doc/api/api_files.md +++ b/doc/en/api/api_files.md diff --git a/doc/api/api_functions.bb b/doc/en/api/api_functions.bb index fe7cb11ba..fe7cb11ba 100644 --- a/doc/api/api_functions.bb +++ b/doc/en/api/api_functions.bb diff --git a/doc/api/api_group_members.md b/doc/en/api/api_group_members.md index 497e0aac6..497e0aac6 100644 --- a/doc/api/api_group_members.md +++ b/doc/en/api/api_group_members.md diff --git a/doc/api/api_item_update.md b/doc/en/api/api_item_update.md index cf1a28044..cf1a28044 100644 --- a/doc/api/api_item_update.md +++ b/doc/en/api/api_item_update.md diff --git a/doc/api/api_posting.bb b/doc/en/api/api_posting.bb index c708ad143..c708ad143 100644 --- a/doc/api/api_posting.bb +++ b/doc/en/api/api_posting.bb diff --git a/doc/api/api_xchan.md b/doc/en/api/api_xchan.md index d2b15e04c..d2b15e04c 100644 --- a/doc/api/api_xchan.md +++ b/doc/en/api/api_xchan.md diff --git a/doc/api/group.md b/doc/en/api/group.md index 8829ff416..8829ff416 100644 --- a/doc/api/group.md +++ b/doc/en/api/group.md diff --git a/doc/api/statuses_update.bb b/doc/en/api/statuses_update.bb index acad440de..acad440de 100644 --- a/doc/api/statuses_update.bb +++ b/doc/en/api/statuses_update.bb diff --git a/doc/bugs.bb b/doc/en/bugs.bb index 3bf2a0e29..3bf2a0e29 100644 --- a/doc/bugs.bb +++ b/doc/en/bugs.bb diff --git a/doc/campaign.bb b/doc/en/campaign.bb index dddc614f9..dddc614f9 100644 --- a/doc/campaign.bb +++ b/doc/en/campaign.bb diff --git a/doc/checking_account_quota_usage.bb b/doc/en/checking_account_quota_usage.bb index 7612d03d8..7612d03d8 100644 --- a/doc/checking_account_quota_usage.bb +++ b/doc/en/checking_account_quota_usage.bb diff --git a/doc/comanche.bb b/doc/en/comanche.bb index faf7e695e..faf7e695e 100644 --- a/doc/comanche.bb +++ b/doc/en/comanche.bb diff --git a/doc/context/de/admin/logs/help.html b/doc/en/context/de/admin/logs/help.html index 1441d9075..1441d9075 100644 --- a/doc/context/de/admin/logs/help.html +++ b/doc/en/context/de/admin/logs/help.html diff --git a/doc/context/de/admin/queue/help.html b/doc/en/context/de/admin/queue/help.html index e59fdcaee..e59fdcaee 100644 --- a/doc/context/de/admin/queue/help.html +++ b/doc/en/context/de/admin/queue/help.html diff --git a/doc/context/de/admin/security/help.html b/doc/en/context/de/admin/security/help.html index 6465e8f0e..6465e8f0e 100644 --- a/doc/context/de/admin/security/help.html +++ b/doc/en/context/de/admin/security/help.html diff --git a/doc/context/de/appman/help.html b/doc/en/context/de/appman/help.html index 888ee6206..888ee6206 100644 --- a/doc/context/de/appman/help.html +++ b/doc/en/context/de/appman/help.html diff --git a/doc/context/de/channel/help.html b/doc/en/context/de/channel/help.html index fbfcac3c1..fbfcac3c1 100644 --- a/doc/context/de/channel/help.html +++ b/doc/en/context/de/channel/help.html diff --git a/doc/context/de/chat/help.html b/doc/en/context/de/chat/help.html index ba355365f..ba355365f 100644 --- a/doc/context/de/chat/help.html +++ b/doc/en/context/de/chat/help.html diff --git a/doc/context/de/cloud/help.html b/doc/en/context/de/cloud/help.html index e72ad1743..e72ad1743 100644 --- a/doc/context/de/cloud/help.html +++ b/doc/en/context/de/cloud/help.html diff --git a/doc/context/de/connections/help.html b/doc/en/context/de/connections/help.html index 61789ea38..61789ea38 100644 --- a/doc/context/de/connections/help.html +++ b/doc/en/context/de/connections/help.html diff --git a/doc/context/de/connections/ifpending/help.html b/doc/en/context/de/connections/ifpending/help.html index 3e55b34c3..3e55b34c3 100644 --- a/doc/context/de/connections/ifpending/help.html +++ b/doc/en/context/de/connections/ifpending/help.html diff --git a/doc/context/de/events/help.html b/doc/en/context/de/events/help.html index b0dc95b3e..b0dc95b3e 100644 --- a/doc/context/de/events/help.html +++ b/doc/en/context/de/events/help.html diff --git a/doc/context/de/mail/help.html b/doc/en/context/de/mail/help.html index b89135d8c..b89135d8c 100644 --- a/doc/context/de/mail/help.html +++ b/doc/en/context/de/mail/help.html diff --git a/doc/context/de/network/help.html b/doc/en/context/de/network/help.html index 6590f597d..6590f597d 100644 --- a/doc/context/de/network/help.html +++ b/doc/en/context/de/network/help.html diff --git a/doc/context/de/photos/help.html b/doc/en/context/de/photos/help.html index 437d2c369..437d2c369 100644 --- a/doc/context/de/photos/help.html +++ b/doc/en/context/de/photos/help.html diff --git a/doc/context/de/profile/help.html b/doc/en/context/de/profile/help.html index ece33457d..ece33457d 100644 --- a/doc/context/de/profile/help.html +++ b/doc/en/context/de/profile/help.html diff --git a/doc/context/de/register/help.html b/doc/en/context/de/register/help.html index 9ee062ee8..9ee062ee8 100644 --- a/doc/context/de/register/help.html +++ b/doc/en/context/de/register/help.html diff --git a/doc/context/de/settings/account/help.html b/doc/en/context/de/settings/account/help.html index 03fc0cc14..03fc0cc14 100644 --- a/doc/context/de/settings/account/help.html +++ b/doc/en/context/de/settings/account/help.html diff --git a/doc/context/de/settings/channel/help.html b/doc/en/context/de/settings/channel/help.html index 98a388f77..98a388f77 100644 --- a/doc/context/de/settings/channel/help.html +++ b/doc/en/context/de/settings/channel/help.html diff --git a/doc/context/de/settings/features/help.html b/doc/en/context/de/settings/features/help.html index a019d2d60..a019d2d60 100644 --- a/doc/context/de/settings/features/help.html +++ b/doc/en/context/de/settings/features/help.html diff --git a/doc/context/de/settings/tokens/help.html b/doc/en/context/de/settings/tokens/help.html index 4a7776109..4a7776109 100644 --- a/doc/context/de/settings/tokens/help.html +++ b/doc/en/context/de/settings/tokens/help.html diff --git a/doc/context/de/wiki/help.html b/doc/en/context/de/wiki/help.html index e203ee221..e203ee221 100644 --- a/doc/context/de/wiki/help.html +++ b/doc/en/context/de/wiki/help.html diff --git a/doc/context/en/admin/addons/assets/addon_repo_gui_1.png b/doc/en/context/en/admin/addons/assets/addon_repo_gui_1.png Binary files differindex 37139b345..37139b345 100644 --- a/doc/context/en/admin/addons/assets/addon_repo_gui_1.png +++ b/doc/en/context/en/admin/addons/assets/addon_repo_gui_1.png diff --git a/doc/context/en/admin/addons/help.html b/doc/en/context/en/admin/addons/help.html index bfb5e416a..bfb5e416a 100644 --- a/doc/context/en/admin/addons/help.html +++ b/doc/en/context/en/admin/addons/help.html diff --git a/doc/context/en/admin/logs/help.html b/doc/en/context/en/admin/logs/help.html index 708ec9bde..708ec9bde 100644 --- a/doc/context/en/admin/logs/help.html +++ b/doc/en/context/en/admin/logs/help.html diff --git a/doc/context/en/admin/queue/help.html b/doc/en/context/en/admin/queue/help.html index 28885a154..28885a154 100644 --- a/doc/context/en/admin/queue/help.html +++ b/doc/en/context/en/admin/queue/help.html diff --git a/doc/context/en/admin/security/help.html b/doc/en/context/en/admin/security/help.html index bfe81b132..bfe81b132 100644 --- a/doc/context/en/admin/security/help.html +++ b/doc/en/context/en/admin/security/help.html diff --git a/doc/context/en/appman/help.html b/doc/en/context/en/appman/help.html index 27cb03624..27cb03624 100644 --- a/doc/context/en/appman/help.html +++ b/doc/en/context/en/appman/help.html diff --git a/doc/context/en/cards/help.html b/doc/en/context/en/cards/help.html index 9dbed3f97..9dbed3f97 100644 --- a/doc/context/en/cards/help.html +++ b/doc/en/context/en/cards/help.html diff --git a/doc/context/en/channel/help.html b/doc/en/context/en/channel/help.html index 0c5b99754..0c5b99754 100644 --- a/doc/context/en/channel/help.html +++ b/doc/en/context/en/channel/help.html diff --git a/doc/context/en/chat/help.html b/doc/en/context/en/chat/help.html index cc71686d8..cc71686d8 100644 --- a/doc/context/en/chat/help.html +++ b/doc/en/context/en/chat/help.html diff --git a/doc/context/en/cloud/help.html b/doc/en/context/en/cloud/help.html index a8f193223..a8f193223 100644 --- a/doc/context/en/cloud/help.html +++ b/doc/en/context/en/cloud/help.html diff --git a/doc/context/en/connections/help.html b/doc/en/context/en/connections/help.html index 0f95fde63..0f95fde63 100644 --- a/doc/context/en/connections/help.html +++ b/doc/en/context/en/connections/help.html diff --git a/doc/context/en/connections/ifpending/help.html b/doc/en/context/en/connections/ifpending/help.html index 0f95fde63..0f95fde63 100644 --- a/doc/context/en/connections/ifpending/help.html +++ b/doc/en/context/en/connections/ifpending/help.html diff --git a/doc/context/en/connedit/help.html b/doc/en/context/en/connedit/help.html index 9eb62ecc7..9eb62ecc7 100644 --- a/doc/context/en/connedit/help.html +++ b/doc/en/context/en/connedit/help.html diff --git a/doc/context/en/events/help.html b/doc/en/context/en/events/help.html index 8c0b1d4ab..8c0b1d4ab 100644 --- a/doc/context/en/events/help.html +++ b/doc/en/context/en/events/help.html diff --git a/doc/context/en/mail/help.html b/doc/en/context/en/mail/help.html index a2361a135..a2361a135 100644 --- a/doc/context/en/mail/help.html +++ b/doc/en/context/en/mail/help.html diff --git a/doc/context/en/network/help.html b/doc/en/context/en/network/help.html index 53e993b69..53e993b69 100644 --- a/doc/context/en/network/help.html +++ b/doc/en/context/en/network/help.html diff --git a/doc/context/en/photos/help.html b/doc/en/context/en/photos/help.html index 78b442bb4..78b442bb4 100644 --- a/doc/context/en/photos/help.html +++ b/doc/en/context/en/photos/help.html diff --git a/doc/context/en/profile/help.html b/doc/en/context/en/profile/help.html index 563e0df99..563e0df99 100644 --- a/doc/context/en/profile/help.html +++ b/doc/en/context/en/profile/help.html diff --git a/doc/context/en/profiles/help.html b/doc/en/context/en/profiles/help.html index 41f00fe64..41f00fe64 100644 --- a/doc/context/en/profiles/help.html +++ b/doc/en/context/en/profiles/help.html diff --git a/doc/context/en/register/help.html b/doc/en/context/en/register/help.html index 9e94ab762..9e94ab762 100644 --- a/doc/context/en/register/help.html +++ b/doc/en/context/en/register/help.html diff --git a/doc/context/en/settings/account/help.html b/doc/en/context/en/settings/account/help.html index 41f00fe64..41f00fe64 100644 --- a/doc/context/en/settings/account/help.html +++ b/doc/en/context/en/settings/account/help.html diff --git a/doc/context/en/settings/channel/help.html b/doc/en/context/en/settings/channel/help.html index 41f00fe64..41f00fe64 100644 --- a/doc/context/en/settings/channel/help.html +++ b/doc/en/context/en/settings/channel/help.html diff --git a/doc/context/en/settings/features/help.html b/doc/en/context/en/settings/features/help.html index 86e4f5dae..86e4f5dae 100644 --- a/doc/context/en/settings/features/help.html +++ b/doc/en/context/en/settings/features/help.html diff --git a/doc/context/en/settings/tokens/help.html b/doc/en/context/en/settings/tokens/help.html index 6d7e6b98d..6d7e6b98d 100644 --- a/doc/context/en/settings/tokens/help.html +++ b/doc/en/context/en/settings/tokens/help.html diff --git a/doc/context/en/webpages/help.html b/doc/en/context/en/webpages/help.html index a4817e4bf..a4817e4bf 100644 --- a/doc/context/en/webpages/help.html +++ b/doc/en/context/en/webpages/help.html diff --git a/doc/context/en/wiki/help.html b/doc/en/context/en/wiki/help.html index 5dee85375..5dee85375 100644 --- a/doc/context/en/wiki/help.html +++ b/doc/en/context/en/wiki/help.html diff --git a/doc/context/es b/doc/en/context/es index c8ba7666b..c8ba7666b 120000 --- a/doc/context/es +++ b/doc/en/context/es diff --git a/doc/context/es-es/admin/addons/assets/addon_repo_gui_1.png b/doc/en/context/es-es/admin/addons/assets/addon_repo_gui_1.png Binary files differindex 37139b345..37139b345 100644 --- a/doc/context/es-es/admin/addons/assets/addon_repo_gui_1.png +++ b/doc/en/context/es-es/admin/addons/assets/addon_repo_gui_1.png diff --git a/doc/context/es-es/admin/addons/help.html b/doc/en/context/es-es/admin/addons/help.html index 49a047f5e..49a047f5e 100644 --- a/doc/context/es-es/admin/addons/help.html +++ b/doc/en/context/es-es/admin/addons/help.html diff --git a/doc/context/es-es/admin/logs/help.html b/doc/en/context/es-es/admin/logs/help.html index 3a2ec413d..3a2ec413d 100644 --- a/doc/context/es-es/admin/logs/help.html +++ b/doc/en/context/es-es/admin/logs/help.html diff --git a/doc/context/es-es/admin/queue/help.html b/doc/en/context/es-es/admin/queue/help.html index de9e6cdbb..de9e6cdbb 100644 --- a/doc/context/es-es/admin/queue/help.html +++ b/doc/en/context/es-es/admin/queue/help.html diff --git a/doc/context/es-es/admin/security/help.html b/doc/en/context/es-es/admin/security/help.html index 229a91561..229a91561 100644 --- a/doc/context/es-es/admin/security/help.html +++ b/doc/en/context/es-es/admin/security/help.html diff --git a/doc/context/es-es/appman/help.html b/doc/en/context/es-es/appman/help.html index 1b799a52b..1b799a52b 100644 --- a/doc/context/es-es/appman/help.html +++ b/doc/en/context/es-es/appman/help.html diff --git a/doc/context/es-es/articles/help.html b/doc/en/context/es-es/articles/help.html index 0bf176fdd..0bf176fdd 100644 --- a/doc/context/es-es/articles/help.html +++ b/doc/en/context/es-es/articles/help.html diff --git a/doc/context/es-es/cards/help.html b/doc/en/context/es-es/cards/help.html index 34889cd25..34889cd25 100644 --- a/doc/context/es-es/cards/help.html +++ b/doc/en/context/es-es/cards/help.html diff --git a/doc/context/es-es/channel/help.html b/doc/en/context/es-es/channel/help.html index 682125e27..682125e27 100644 --- a/doc/context/es-es/channel/help.html +++ b/doc/en/context/es-es/channel/help.html diff --git a/doc/context/es-es/chat/help.html b/doc/en/context/es-es/chat/help.html index 94df6a1d2..94df6a1d2 100644 --- a/doc/context/es-es/chat/help.html +++ b/doc/en/context/es-es/chat/help.html diff --git a/doc/context/es-es/cloud/help.html b/doc/en/context/es-es/cloud/help.html index af891da17..af891da17 100644 --- a/doc/context/es-es/cloud/help.html +++ b/doc/en/context/es-es/cloud/help.html diff --git a/doc/context/es-es/connections/help.html b/doc/en/context/es-es/connections/help.html index a0aa9cf32..a0aa9cf32 100644 --- a/doc/context/es-es/connections/help.html +++ b/doc/en/context/es-es/connections/help.html diff --git a/doc/context/es-es/connections/ifpending/help.html b/doc/en/context/es-es/connections/ifpending/help.html index 84e547851..84e547851 100644 --- a/doc/context/es-es/connections/ifpending/help.html +++ b/doc/en/context/es-es/connections/ifpending/help.html diff --git a/doc/context/es-es/connedit/help.html b/doc/en/context/es-es/connedit/help.html index e8c92ca28..e8c92ca28 100644 --- a/doc/context/es-es/connedit/help.html +++ b/doc/en/context/es-es/connedit/help.html diff --git a/doc/context/es-es/events/help.html b/doc/en/context/es-es/events/help.html index b0ac1f9ea..b0ac1f9ea 100644 --- a/doc/context/es-es/events/help.html +++ b/doc/en/context/es-es/events/help.html diff --git a/doc/context/es-es/mail/help.html b/doc/en/context/es-es/mail/help.html index 794af38a9..794af38a9 100644 --- a/doc/context/es-es/mail/help.html +++ b/doc/en/context/es-es/mail/help.html diff --git a/doc/context/es-es/network/help.html b/doc/en/context/es-es/network/help.html index 082f52a49..082f52a49 100644 --- a/doc/context/es-es/network/help.html +++ b/doc/en/context/es-es/network/help.html diff --git a/doc/context/es-es/photos/help.html b/doc/en/context/es-es/photos/help.html index 6623456eb..6623456eb 100644 --- a/doc/context/es-es/photos/help.html +++ b/doc/en/context/es-es/photos/help.html diff --git a/doc/context/es-es/profile/help.html b/doc/en/context/es-es/profile/help.html index 28ff22499..28ff22499 100644 --- a/doc/context/es-es/profile/help.html +++ b/doc/en/context/es-es/profile/help.html diff --git a/doc/context/es-es/profiles/help.html b/doc/en/context/es-es/profiles/help.html index 9303e049c..9303e049c 100644 --- a/doc/context/es-es/profiles/help.html +++ b/doc/en/context/es-es/profiles/help.html diff --git a/doc/context/es-es/settings/account/help.html b/doc/en/context/es-es/settings/account/help.html index 9303e049c..9303e049c 100644 --- a/doc/context/es-es/settings/account/help.html +++ b/doc/en/context/es-es/settings/account/help.html diff --git a/doc/context/es-es/settings/channel/help.html b/doc/en/context/es-es/settings/channel/help.html index 9303e049c..9303e049c 100644 --- a/doc/context/es-es/settings/channel/help.html +++ b/doc/en/context/es-es/settings/channel/help.html diff --git a/doc/context/es-es/settings/features/help.html b/doc/en/context/es-es/settings/features/help.html index a9c3c2d6c..a9c3c2d6c 100644 --- a/doc/context/es-es/settings/features/help.html +++ b/doc/en/context/es-es/settings/features/help.html diff --git a/doc/context/es-es/settings/tokens/help.html b/doc/en/context/es-es/settings/tokens/help.html index 6d6a8d81f..6d6a8d81f 100644 --- a/doc/context/es-es/settings/tokens/help.html +++ b/doc/en/context/es-es/settings/tokens/help.html diff --git a/doc/context/es-es/webpages/help.html b/doc/en/context/es-es/webpages/help.html index 7cd7f7c11..7cd7f7c11 100644 --- a/doc/context/es-es/webpages/help.html +++ b/doc/en/context/es-es/webpages/help.html diff --git a/doc/context/es-es/wiki/help.html b/doc/en/context/es-es/wiki/help.html index fdae1f095..fdae1f095 100644 --- a/doc/context/es-es/wiki/help.html +++ b/doc/en/context/es-es/wiki/help.html diff --git a/doc/context/fr/admin/logs/help.html b/doc/en/context/fr/admin/logs/help.html index 53f8e65c3..53f8e65c3 100644 --- a/doc/context/fr/admin/logs/help.html +++ b/doc/en/context/fr/admin/logs/help.html diff --git a/doc/context/fr/admin/queue/help.html b/doc/en/context/fr/admin/queue/help.html index 836d81b92..836d81b92 100644 --- a/doc/context/fr/admin/queue/help.html +++ b/doc/en/context/fr/admin/queue/help.html diff --git a/doc/context/fr/appman/help.html b/doc/en/context/fr/appman/help.html index d65f78378..d65f78378 100644 --- a/doc/context/fr/appman/help.html +++ b/doc/en/context/fr/appman/help.html diff --git a/doc/context/fr/cards/help.html b/doc/en/context/fr/cards/help.html index a58a9a73e..a58a9a73e 100644 --- a/doc/context/fr/cards/help.html +++ b/doc/en/context/fr/cards/help.html diff --git a/doc/context/fr/channel/help.html b/doc/en/context/fr/channel/help.html index b2cf958b9..b2cf958b9 100644 --- a/doc/context/fr/channel/help.html +++ b/doc/en/context/fr/channel/help.html diff --git a/doc/context/fr/chat/help.html b/doc/en/context/fr/chat/help.html index 5f354c3c6..5f354c3c6 100644 --- a/doc/context/fr/chat/help.html +++ b/doc/en/context/fr/chat/help.html diff --git a/doc/context/fr/cloud/help.html b/doc/en/context/fr/cloud/help.html index c72e2ca1b..c72e2ca1b 100644 --- a/doc/context/fr/cloud/help.html +++ b/doc/en/context/fr/cloud/help.html diff --git a/doc/context/fr/connections/help.html b/doc/en/context/fr/connections/help.html index 38e581866..38e581866 100644 --- a/doc/context/fr/connections/help.html +++ b/doc/en/context/fr/connections/help.html diff --git a/doc/context/fr/connections/ifpending/help.html b/doc/en/context/fr/connections/ifpending/help.html index 38e581866..38e581866 100644 --- a/doc/context/fr/connections/ifpending/help.html +++ b/doc/en/context/fr/connections/ifpending/help.html diff --git a/doc/context/fr/connedit/help.html b/doc/en/context/fr/connedit/help.html index c9b784d3e..c9b784d3e 100644 --- a/doc/context/fr/connedit/help.html +++ b/doc/en/context/fr/connedit/help.html diff --git a/doc/context/fr/events/help.html b/doc/en/context/fr/events/help.html index aafd49703..aafd49703 100644 --- a/doc/context/fr/events/help.html +++ b/doc/en/context/fr/events/help.html diff --git a/doc/context/fr/mail/help.html b/doc/en/context/fr/mail/help.html index fcf4eff21..fcf4eff21 100644 --- a/doc/context/fr/mail/help.html +++ b/doc/en/context/fr/mail/help.html diff --git a/doc/context/fr/photos/help.html b/doc/en/context/fr/photos/help.html index 8609e9849..8609e9849 100644 --- a/doc/context/fr/photos/help.html +++ b/doc/en/context/fr/photos/help.html diff --git a/doc/context/fr/profile/help.html b/doc/en/context/fr/profile/help.html index 26559db6f..26559db6f 100644 --- a/doc/context/fr/profile/help.html +++ b/doc/en/context/fr/profile/help.html diff --git a/doc/context/fr/settings/account/help.html b/doc/en/context/fr/settings/account/help.html index ed8e7f374..ed8e7f374 100644 --- a/doc/context/fr/settings/account/help.html +++ b/doc/en/context/fr/settings/account/help.html diff --git a/doc/context/fr/settings/channel/help.html b/doc/en/context/fr/settings/channel/help.html index ed8e7f374..ed8e7f374 100644 --- a/doc/context/fr/settings/channel/help.html +++ b/doc/en/context/fr/settings/channel/help.html diff --git a/doc/context/fr/settings/features/help.html b/doc/en/context/fr/settings/features/help.html index 2811c932e..2811c932e 100644 --- a/doc/context/fr/settings/features/help.html +++ b/doc/en/context/fr/settings/features/help.html diff --git a/doc/context/fr/settings/tokens b/doc/en/context/fr/settings/tokens index 6be17a615..6be17a615 100644 --- a/doc/context/fr/settings/tokens +++ b/doc/en/context/fr/settings/tokens diff --git a/doc/context/fr/webpages/help.html b/doc/en/context/fr/webpages/help.html index c9d34c08f..c9d34c08f 100644 --- a/doc/context/fr/webpages/help.html +++ b/doc/en/context/fr/webpages/help.html diff --git a/doc/context/fr/wiki/help.html b/doc/en/context/fr/wiki/help.html index af46899e4..af46899e4 100644 --- a/doc/context/fr/wiki/help.html +++ b/doc/en/context/fr/wiki/help.html diff --git a/doc/context/it/wiki/help.html b/doc/en/context/it/wiki/help.html index e93e18eb4..e93e18eb4 100644 --- a/doc/context/it/wiki/help.html +++ b/doc/en/context/it/wiki/help.html diff --git a/doc/context/pl/admin/addons/assets/addon_repo_gui_1.png b/doc/en/context/pl/admin/addons/assets/addon_repo_gui_1.png Binary files differindex 37139b345..37139b345 100644 --- a/doc/context/pl/admin/addons/assets/addon_repo_gui_1.png +++ b/doc/en/context/pl/admin/addons/assets/addon_repo_gui_1.png diff --git a/doc/context/pl/admin/addons/help.html b/doc/en/context/pl/admin/addons/help.html index fe63718df..fe63718df 100644 --- a/doc/context/pl/admin/addons/help.html +++ b/doc/en/context/pl/admin/addons/help.html diff --git a/doc/context/pl/admin/logs/help.html b/doc/en/context/pl/admin/logs/help.html index 1d79d6a8c..1d79d6a8c 100644 --- a/doc/context/pl/admin/logs/help.html +++ b/doc/en/context/pl/admin/logs/help.html diff --git a/doc/context/pl/admin/queue/help.html b/doc/en/context/pl/admin/queue/help.html index af5c06787..af5c06787 100644 --- a/doc/context/pl/admin/queue/help.html +++ b/doc/en/context/pl/admin/queue/help.html diff --git a/doc/context/pl/admin/security/help.html b/doc/en/context/pl/admin/security/help.html index 0e582e6b4..0e582e6b4 100644 --- a/doc/context/pl/admin/security/help.html +++ b/doc/en/context/pl/admin/security/help.html diff --git a/doc/context/pl/appman/help.html b/doc/en/context/pl/appman/help.html index 867b5b482..867b5b482 100644 --- a/doc/context/pl/appman/help.html +++ b/doc/en/context/pl/appman/help.html diff --git a/doc/context/pl/cards/help.html b/doc/en/context/pl/cards/help.html index 2e9886283..2e9886283 100644 --- a/doc/context/pl/cards/help.html +++ b/doc/en/context/pl/cards/help.html diff --git a/doc/context/pl/channel/help.html b/doc/en/context/pl/channel/help.html index bd454c361..bd454c361 100644 --- a/doc/context/pl/channel/help.html +++ b/doc/en/context/pl/channel/help.html diff --git a/doc/context/pl/chat/help.html b/doc/en/context/pl/chat/help.html index 0cf063aa8..0cf063aa8 100644 --- a/doc/context/pl/chat/help.html +++ b/doc/en/context/pl/chat/help.html diff --git a/doc/context/pl/cloud/help.html b/doc/en/context/pl/cloud/help.html index d629e6d41..d629e6d41 100644 --- a/doc/context/pl/cloud/help.html +++ b/doc/en/context/pl/cloud/help.html diff --git a/doc/context/pl/connections/help.html b/doc/en/context/pl/connections/help.html index 837184334..837184334 100644 --- a/doc/context/pl/connections/help.html +++ b/doc/en/context/pl/connections/help.html diff --git a/doc/context/pl/connections/ifpending/help.html b/doc/en/context/pl/connections/ifpending/help.html index b2d05947a..b2d05947a 100644 --- a/doc/context/pl/connections/ifpending/help.html +++ b/doc/en/context/pl/connections/ifpending/help.html diff --git a/doc/context/pl/connedit/help.html b/doc/en/context/pl/connedit/help.html index 746908cf2..746908cf2 100644 --- a/doc/context/pl/connedit/help.html +++ b/doc/en/context/pl/connedit/help.html diff --git a/doc/context/pl/events/help.html b/doc/en/context/pl/events/help.html index 542661fa5..542661fa5 100644 --- a/doc/context/pl/events/help.html +++ b/doc/en/context/pl/events/help.html diff --git a/doc/context/pl/mail/help.html b/doc/en/context/pl/mail/help.html index b077aa2c4..b077aa2c4 100644 --- a/doc/context/pl/mail/help.html +++ b/doc/en/context/pl/mail/help.html diff --git a/doc/context/pl/network/help.html b/doc/en/context/pl/network/help.html index f6ba75241..f6ba75241 100644 --- a/doc/context/pl/network/help.html +++ b/doc/en/context/pl/network/help.html diff --git a/doc/context/pl/photos/help.html b/doc/en/context/pl/photos/help.html index e9ff7ee9d..e9ff7ee9d 100644 --- a/doc/context/pl/photos/help.html +++ b/doc/en/context/pl/photos/help.html diff --git a/doc/context/pl/profile/help.html b/doc/en/context/pl/profile/help.html index 9ec5b0e73..9ec5b0e73 100644 --- a/doc/context/pl/profile/help.html +++ b/doc/en/context/pl/profile/help.html diff --git a/doc/context/pl/profiles/help.html b/doc/en/context/pl/profiles/help.html index 874303908..874303908 100644 --- a/doc/context/pl/profiles/help.html +++ b/doc/en/context/pl/profiles/help.html diff --git a/doc/context/pl/register/help.html b/doc/en/context/pl/register/help.html index c5c879e36..c5c879e36 100644 --- a/doc/context/pl/register/help.html +++ b/doc/en/context/pl/register/help.html diff --git a/doc/context/pl/settings/account/help.html b/doc/en/context/pl/settings/account/help.html index dfe82f025..dfe82f025 100644 --- a/doc/context/pl/settings/account/help.html +++ b/doc/en/context/pl/settings/account/help.html diff --git a/doc/context/pl/settings/channel/help.html b/doc/en/context/pl/settings/channel/help.html index dfe82f025..dfe82f025 100644 --- a/doc/context/pl/settings/channel/help.html +++ b/doc/en/context/pl/settings/channel/help.html diff --git a/doc/context/pl/settings/features/help.html b/doc/en/context/pl/settings/features/help.html index fc5a62363..fc5a62363 100644 --- a/doc/context/pl/settings/features/help.html +++ b/doc/en/context/pl/settings/features/help.html diff --git a/doc/context/pl/settings/tokens/help.html b/doc/en/context/pl/settings/tokens/help.html index 4c79841d6..4c79841d6 100644 --- a/doc/context/pl/settings/tokens/help.html +++ b/doc/en/context/pl/settings/tokens/help.html diff --git a/doc/context/pl/webpages/help.html b/doc/en/context/pl/webpages/help.html index 64858fcf6..64858fcf6 100644 --- a/doc/context/pl/webpages/help.html +++ b/doc/en/context/pl/webpages/help.html diff --git a/doc/context/pl/wiki/help.html b/doc/en/context/pl/wiki/help.html index 6aa6a7192..6aa6a7192 100644 --- a/doc/context/pl/wiki/help.html +++ b/doc/en/context/pl/wiki/help.html diff --git a/doc/context/ru/cards/help.html b/doc/en/context/ru/cards/help.html index ccdf9d6d9..ccdf9d6d9 100644 --- a/doc/context/ru/cards/help.html +++ b/doc/en/context/ru/cards/help.html diff --git a/doc/context/ru/connections/help.html b/doc/en/context/ru/connections/help.html index 6c9b9a0e9..6c9b9a0e9 100644 --- a/doc/context/ru/connections/help.html +++ b/doc/en/context/ru/connections/help.html diff --git a/doc/context/ru/network/help.html b/doc/en/context/ru/network/help.html index 19b5452e2..19b5452e2 100644 --- a/doc/context/ru/network/help.html +++ b/doc/en/context/ru/network/help.html diff --git a/doc/database.bb b/doc/en/database.bb index a0c1e8841..a0c1e8841 100644 --- a/doc/database.bb +++ b/doc/en/database.bb diff --git a/doc/database/db_abook.bb b/doc/en/database/db_abook.bb index a346480d7..a346480d7 100644 --- a/doc/database/db_abook.bb +++ b/doc/en/database/db_abook.bb diff --git a/doc/database/db_account.bb b/doc/en/database/db_account.bb index 35d7a9eb3..35d7a9eb3 100644 --- a/doc/database/db_account.bb +++ b/doc/en/database/db_account.bb diff --git a/doc/database/db_addon.bb b/doc/en/database/db_addon.bb index bccd295f5..bccd295f5 100644 --- a/doc/database/db_addon.bb +++ b/doc/en/database/db_addon.bb diff --git a/doc/database/db_app.bb b/doc/en/database/db_app.bb index 09df473ee..09df473ee 100644 --- a/doc/database/db_app.bb +++ b/doc/en/database/db_app.bb diff --git a/doc/database/db_attach.bb b/doc/en/database/db_attach.bb index 5098401de..5098401de 100644 --- a/doc/database/db_attach.bb +++ b/doc/en/database/db_attach.bb diff --git a/doc/database/db_auth_codes.bb b/doc/en/database/db_auth_codes.bb index c60f064a4..c60f064a4 100644 --- a/doc/database/db_auth_codes.bb +++ b/doc/en/database/db_auth_codes.bb diff --git a/doc/database/db_cache.bb b/doc/en/database/db_cache.bb index 02c292f20..02c292f20 100644 --- a/doc/database/db_cache.bb +++ b/doc/en/database/db_cache.bb diff --git a/doc/database/db_channel.bb b/doc/en/database/db_channel.bb index 518ff0978..518ff0978 100644 --- a/doc/database/db_channel.bb +++ b/doc/en/database/db_channel.bb diff --git a/doc/database/db_chat.bb b/doc/en/database/db_chat.bb index 1aac2bd15..1aac2bd15 100644 --- a/doc/database/db_chat.bb +++ b/doc/en/database/db_chat.bb diff --git a/doc/database/db_chatpresence.bb b/doc/en/database/db_chatpresence.bb index 0a7f666c9..0a7f666c9 100644 --- a/doc/database/db_chatpresence.bb +++ b/doc/en/database/db_chatpresence.bb diff --git a/doc/database/db_chatroom.bb b/doc/en/database/db_chatroom.bb index 1d316288d..1d316288d 100644 --- a/doc/database/db_chatroom.bb +++ b/doc/en/database/db_chatroom.bb diff --git a/doc/database/db_clients.bb b/doc/en/database/db_clients.bb index 0c66a4fc2..0c66a4fc2 100644 --- a/doc/database/db_clients.bb +++ b/doc/en/database/db_clients.bb diff --git a/doc/database/db_config.bb b/doc/en/database/db_config.bb index f32d3c259..f32d3c259 100644 --- a/doc/database/db_config.bb +++ b/doc/en/database/db_config.bb diff --git a/doc/database/db_conv.bb b/doc/en/database/db_conv.bb index 5adfa8c80..5adfa8c80 100644 --- a/doc/database/db_conv.bb +++ b/doc/en/database/db_conv.bb diff --git a/doc/database/db_event.bb b/doc/en/database/db_event.bb index ad3c15789..ad3c15789 100644 --- a/doc/database/db_event.bb +++ b/doc/en/database/db_event.bb diff --git a/doc/database/db_fcontact.bb b/doc/en/database/db_fcontact.bb index 9bd8c20fe..9bd8c20fe 100644 --- a/doc/database/db_fcontact.bb +++ b/doc/en/database/db_fcontact.bb diff --git a/doc/database/db_ffinder.bb b/doc/en/database/db_ffinder.bb index c20158d56..c20158d56 100644 --- a/doc/database/db_ffinder.bb +++ b/doc/en/database/db_ffinder.bb diff --git a/doc/database/db_fserver.bb b/doc/en/database/db_fserver.bb index 4c4b0b530..4c4b0b530 100644 --- a/doc/database/db_fserver.bb +++ b/doc/en/database/db_fserver.bb diff --git a/doc/database/db_fsuggest.bb b/doc/en/database/db_fsuggest.bb index 9da1f2f6d..9da1f2f6d 100644 --- a/doc/database/db_fsuggest.bb +++ b/doc/en/database/db_fsuggest.bb diff --git a/doc/database/db_hook.bb b/doc/en/database/db_hook.bb index 233062f98..233062f98 100644 --- a/doc/database/db_hook.bb +++ b/doc/en/database/db_hook.bb diff --git a/doc/database/db_hubloc.bb b/doc/en/database/db_hubloc.bb index e4ab7159d..e4ab7159d 100644 --- a/doc/database/db_hubloc.bb +++ b/doc/en/database/db_hubloc.bb diff --git a/doc/database/db_issue.bb b/doc/en/database/db_issue.bb index 0a6f2912b..0a6f2912b 100644 --- a/doc/database/db_issue.bb +++ b/doc/en/database/db_issue.bb diff --git a/doc/database/db_item.bb b/doc/en/database/db_item.bb index 6383e13f8..6383e13f8 100644 --- a/doc/database/db_item.bb +++ b/doc/en/database/db_item.bb diff --git a/doc/database/db_item_id.bb b/doc/en/database/db_item_id.bb index ba4cca247..ba4cca247 100644 --- a/doc/database/db_item_id.bb +++ b/doc/en/database/db_item_id.bb diff --git a/doc/database/db_likes.bb b/doc/en/database/db_likes.bb index 118c9a87e..118c9a87e 100644 --- a/doc/database/db_likes.bb +++ b/doc/en/database/db_likes.bb diff --git a/doc/database/db_mail.bb b/doc/en/database/db_mail.bb index 0628584ae..0628584ae 100644 --- a/doc/database/db_mail.bb +++ b/doc/en/database/db_mail.bb diff --git a/doc/database/db_menu.bb b/doc/en/database/db_menu.bb index 5b478115d..5b478115d 100644 --- a/doc/database/db_menu.bb +++ b/doc/en/database/db_menu.bb diff --git a/doc/database/db_menu_item.bb b/doc/en/database/db_menu_item.bb index b14aac5e4..b14aac5e4 100644 --- a/doc/database/db_menu_item.bb +++ b/doc/en/database/db_menu_item.bb diff --git a/doc/database/db_notify.bb b/doc/en/database/db_notify.bb index 4787266cd..4787266cd 100644 --- a/doc/database/db_notify.bb +++ b/doc/en/database/db_notify.bb diff --git a/doc/database/db_obj.bb b/doc/en/database/db_obj.bb index cc5e75598..cc5e75598 100644 --- a/doc/database/db_obj.bb +++ b/doc/en/database/db_obj.bb diff --git a/doc/database/db_outq.bb b/doc/en/database/db_outq.bb index 970f99de5..970f99de5 100644 --- a/doc/database/db_outq.bb +++ b/doc/en/database/db_outq.bb diff --git a/doc/database/db_pconfig.bb b/doc/en/database/db_pconfig.bb index 2ac36e61a..2ac36e61a 100644 --- a/doc/database/db_pconfig.bb +++ b/doc/en/database/db_pconfig.bb diff --git a/doc/database/db_pgrp.bb b/doc/en/database/db_pgrp.bb index 73265b90e..73265b90e 100644 --- a/doc/database/db_pgrp.bb +++ b/doc/en/database/db_pgrp.bb diff --git a/doc/database/db_pgrp_member.bb b/doc/en/database/db_pgrp_member.bb index b9ab8171d..b9ab8171d 100644 --- a/doc/database/db_pgrp_member.bb +++ b/doc/en/database/db_pgrp_member.bb diff --git a/doc/database/db_photo.bb b/doc/en/database/db_photo.bb index 91840ec1e..91840ec1e 100644 --- a/doc/database/db_photo.bb +++ b/doc/en/database/db_photo.bb diff --git a/doc/database/db_poll.bb b/doc/en/database/db_poll.bb index 57d808b71..57d808b71 100644 --- a/doc/database/db_poll.bb +++ b/doc/en/database/db_poll.bb diff --git a/doc/database/db_poll_elm.bb b/doc/en/database/db_poll_elm.bb index fd649d5a6..fd649d5a6 100644 --- a/doc/database/db_poll_elm.bb +++ b/doc/en/database/db_poll_elm.bb diff --git a/doc/database/db_profdef.bb b/doc/en/database/db_profdef.bb index a0904fd79..a0904fd79 100644 --- a/doc/database/db_profdef.bb +++ b/doc/en/database/db_profdef.bb diff --git a/doc/database/db_profext.bb b/doc/en/database/db_profext.bb index ada9dce2a..ada9dce2a 100644 --- a/doc/database/db_profext.bb +++ b/doc/en/database/db_profext.bb diff --git a/doc/database/db_profile.bb b/doc/en/database/db_profile.bb index 717fae585..717fae585 100644 --- a/doc/database/db_profile.bb +++ b/doc/en/database/db_profile.bb diff --git a/doc/database/db_profile_check.bb b/doc/en/database/db_profile_check.bb index 3be64c5da..3be64c5da 100644 --- a/doc/database/db_profile_check.bb +++ b/doc/en/database/db_profile_check.bb diff --git a/doc/database/db_register.bb b/doc/en/database/db_register.bb index 50672b5e1..50672b5e1 100644 --- a/doc/database/db_register.bb +++ b/doc/en/database/db_register.bb diff --git a/doc/database/db_session.bb b/doc/en/database/db_session.bb index d7ff0482d..d7ff0482d 100644 --- a/doc/database/db_session.bb +++ b/doc/en/database/db_session.bb diff --git a/doc/database/db_shares.bb b/doc/en/database/db_shares.bb index be5255c03..be5255c03 100644 --- a/doc/database/db_shares.bb +++ b/doc/en/database/db_shares.bb diff --git a/doc/database/db_sign.bb b/doc/en/database/db_sign.bb index e80ea7ef3..e80ea7ef3 100644 --- a/doc/database/db_sign.bb +++ b/doc/en/database/db_sign.bb diff --git a/doc/database/db_site.bb b/doc/en/database/db_site.bb index 8dea4dae6..8dea4dae6 100644 --- a/doc/database/db_site.bb +++ b/doc/en/database/db_site.bb diff --git a/doc/database/db_source.bb b/doc/en/database/db_source.bb index 92850a82e..92850a82e 100644 --- a/doc/database/db_source.bb +++ b/doc/en/database/db_source.bb diff --git a/doc/database/db_spam.bb b/doc/en/database/db_spam.bb index b75e1edd3..b75e1edd3 100644 --- a/doc/database/db_spam.bb +++ b/doc/en/database/db_spam.bb diff --git a/doc/database/db_sys_perms.bb b/doc/en/database/db_sys_perms.bb index 04416a26b..04416a26b 100644 --- a/doc/database/db_sys_perms.bb +++ b/doc/en/database/db_sys_perms.bb diff --git a/doc/database/db_term.bb b/doc/en/database/db_term.bb index bd155fe21..bd155fe21 100644 --- a/doc/database/db_term.bb +++ b/doc/en/database/db_term.bb diff --git a/doc/database/db_tokens.bb b/doc/en/database/db_tokens.bb index 35da2458c..35da2458c 100644 --- a/doc/database/db_tokens.bb +++ b/doc/en/database/db_tokens.bb diff --git a/doc/database/db_updates.bb b/doc/en/database/db_updates.bb index f2e25d84c..f2e25d84c 100644 --- a/doc/database/db_updates.bb +++ b/doc/en/database/db_updates.bb diff --git a/doc/database/db_verify.bb b/doc/en/database/db_verify.bb index 9d01181c5..9d01181c5 100644 --- a/doc/database/db_verify.bb +++ b/doc/en/database/db_verify.bb diff --git a/doc/database/db_vote.bb b/doc/en/database/db_vote.bb index 0b9a423eb..0b9a423eb 100644 --- a/doc/database/db_vote.bb +++ b/doc/en/database/db_vote.bb diff --git a/doc/database/db_xchan.bb b/doc/en/database/db_xchan.bb index 8932969c5..8932969c5 100644 --- a/doc/database/db_xchan.bb +++ b/doc/en/database/db_xchan.bb diff --git a/doc/database/db_xchat.bb b/doc/en/database/db_xchat.bb index 0897408d1..0897408d1 100644 --- a/doc/database/db_xchat.bb +++ b/doc/en/database/db_xchat.bb diff --git a/doc/database/db_xconfig.bb b/doc/en/database/db_xconfig.bb index 111d1ce3a..111d1ce3a 100644 --- a/doc/database/db_xconfig.bb +++ b/doc/en/database/db_xconfig.bb diff --git a/doc/database/db_xign.bb b/doc/en/database/db_xign.bb index 63c6569de..63c6569de 100644 --- a/doc/database/db_xign.bb +++ b/doc/en/database/db_xign.bb diff --git a/doc/database/db_xlink.bb b/doc/en/database/db_xlink.bb index 528f8da19..528f8da19 100644 --- a/doc/database/db_xlink.bb +++ b/doc/en/database/db_xlink.bb diff --git a/doc/database/db_xprof.bb b/doc/en/database/db_xprof.bb index bed79e9ca..bed79e9ca 100644 --- a/doc/database/db_xprof.bb +++ b/doc/en/database/db_xprof.bb diff --git a/doc/database/db_xtag.bb b/doc/en/database/db_xtag.bb index 1e6fb9961..1e6fb9961 100644 --- a/doc/database/db_xtag.bb +++ b/doc/en/database/db_xtag.bb diff --git a/doc/dev-function-overview.md b/doc/en/dev-function-overview.md index cd2526ead..4dccc8cef 100644 --- a/doc/dev-function-overview.md +++ b/doc/en/dev-function-overview.md @@ -21,11 +21,15 @@ returns an xchan structure representing the current viewer if authenticated (loc * get_config($family,$key), get_pconfig($uid,$family,$key) -Returns the config setting for $family and $key or false if unset. +Returns the config setting for $family and $key or false if unset. + +Deprecated: Use Zotlabs\Lib\Config::Get instead. * set_config($family,$key,$value), set_pconfig($uid,$family,$key,$value) -Sets the value of config setting for $family and $key to $value. Returns $value. The config versions operate on system-wide settings. The pconfig versions get/set the values for a specific integer uid (channel_id). +Sets the value of config setting for $family and $key to $value. Returns $value. The config versions operate on system-wide settings. The pconfig versions get/set the values for a specific integer uid (channel_id). + +Deprecated: Use Zotlabs\Lib\Config::Set instead. * dbesc() @@ -33,7 +37,7 @@ Always escape strings being used in DB queries. This function returns the escape * q($sql,$var1...) -Perform a DB query with the SQL statement $sql. printf style arguments %s and %d are replaced with variable arguments, which should each be appropriately dbesc() or intval(). SELECT queries return an array of results or false if SQL or DB error. Other queries return true if the command was successful or false if it wasn't. +Perform a DB query with the SQL statement $sql. printf style arguments %s and %d are replaced with variable arguments, which should each be appropriately dbesc() or intval(). SELECT queries return an array of results or false if SQL or DB error. Other queries return true if the command was successful or false if it wasn't. * t($string) diff --git a/doc/dev_beginner.bb b/doc/en/dev_beginner.bb index 4ac69c301..4ac69c301 100644 --- a/doc/dev_beginner.bb +++ b/doc/en/dev_beginner.bb diff --git a/doc/develop.bb b/doc/en/develop.bb index 20e987a5a..20e987a5a 100644 --- a/doc/develop.bb +++ b/doc/en/develop.bb diff --git a/doc/developer/api_zot.bb b/doc/en/developer/api_zot.bb index ff937bfa5..ff937bfa5 100644 --- a/doc/developer/api_zot.bb +++ b/doc/en/developer/api_zot.bb diff --git a/doc/developer/covenant.bb b/doc/en/developer/covenant.bb index 431cc74e9..431cc74e9 100644 --- a/doc/developer/covenant.bb +++ b/doc/en/developer/covenant.bb diff --git a/doc/developer/developer_guide.bb b/doc/en/developer/developer_guide.bb index d04cec121..d04cec121 100644 --- a/doc/developer/developer_guide.bb +++ b/doc/en/developer/developer_guide.bb diff --git a/doc/developer/testing.md b/doc/en/developer/testing.md index f7e8ffeba..f7e8ffeba 100644 --- a/doc/developer/testing.md +++ b/doc/en/developer/testing.md diff --git a/doc/developer/unorganized.md b/doc/en/developer/unorganized.md index 5ba719226..5ba719226 100644 --- a/doc/developer/unorganized.md +++ b/doc/en/developer/unorganized.md diff --git a/doc/developer/zot_protocol.bb b/doc/en/developer/zot_protocol.bb index e9355bca8..e9355bca8 100644 --- a/doc/developer/zot_protocol.bb +++ b/doc/en/developer/zot_protocol.bb diff --git a/doc/developer_function_primer.bb b/doc/en/developer_function_primer.bb index 48af9523d..f39954d73 100644 --- a/doc/developer_function_primer.bb +++ b/doc/en/developer_function_primer.bb @@ -20,10 +20,14 @@ returns an xchan structure representing the current viewer if authenticated (loc Returns the config setting for $family and $key or false if unset. +Deprecated: Use Zotlabs\Lib\Config::Get instead. + [b] set_config($family,$key,$value), set_pconfig($uid,$family,$key,$value)[/b] Sets the value of config setting for $family and $key to $value. Returns $value. The config versions operate on system-wide settings. The pconfig versions get/set the values for a specific integer uid (channel_id). The xconfig version get/sets the value for a specific xchan hash - generally used for remote users. +Deprecated: Use Zotlabs\Lib\Config::Set instead. + [b]dbesc()[/b] Always escape strings being used in DB queries. This function returns the escaped string. Integer DB parameters should all be proven integers by wrapping with intval() diff --git a/doc/developers.bb b/doc/en/developers.bb index 22dc82d7e..22dc82d7e 100644 --- a/doc/developers.bb +++ b/doc/en/developers.bb diff --git a/doc/diaspora_compat.bb b/doc/en/diaspora_compat.bb index f27a63b9d..f27a63b9d 100644 --- a/doc/diaspora_compat.bb +++ b/doc/en/diaspora_compat.bb diff --git a/doc/directories.bb b/doc/en/directories.bb index 60a0b624d..60a0b624d 100644 --- a/doc/directories.bb +++ b/doc/en/directories.bb diff --git a/doc/dnt-policy.txt b/doc/en/dnt-policy.txt index ad946d1f8..ad946d1f8 100644 --- a/doc/dnt-policy.txt +++ b/doc/en/dnt-policy.txt diff --git a/doc/doco.bb b/doc/en/doco.bb index 7ca64cfea..7ca64cfea 100644 --- a/doc/doco.bb +++ b/doc/en/doco.bb diff --git a/doc/encryption.bb b/doc/en/encryption.bb index 9985f4b33..9985f4b33 100644 --- a/doc/encryption.bb +++ b/doc/en/encryption.bb diff --git a/doc/external-resource-links.bb b/doc/en/external-resource-links.bb index 338db8023..338db8023 100644 --- a/doc/external-resource-links.bb +++ b/doc/en/external-resource-links.bb diff --git a/doc/extra_features.bb b/doc/en/extra_features.bb index 17d85228e..17d85228e 100644 --- a/doc/extra_features.bb +++ b/doc/en/extra_features.bb diff --git a/doc/faq_admins.bb b/doc/en/faq_admins.bb index 0b54a41de..0b54a41de 100644 --- a/doc/faq_admins.bb +++ b/doc/en/faq_admins.bb diff --git a/doc/feature/access_tokens.bb b/doc/en/feature/access_tokens.bb index eb5c03717..eb5c03717 100644 --- a/doc/feature/access_tokens.bb +++ b/doc/en/feature/access_tokens.bb diff --git a/doc/feature/additional/access.md b/doc/en/feature/additional/access.md index b7f0df717..b7f0df717 100644 --- a/doc/feature/additional/access.md +++ b/doc/en/feature/additional/access.md diff --git a/doc/feature/additional/composition.md b/doc/en/feature/additional/composition.md index 1256f7501..1256f7501 100644 --- a/doc/feature/additional/composition.md +++ b/doc/en/feature/additional/composition.md diff --git a/doc/feature/additional/filtering.md b/doc/en/feature/additional/filtering.md index ba8e1e29f..ba8e1e29f 100644 --- a/doc/feature/additional/filtering.md +++ b/doc/en/feature/additional/filtering.md diff --git a/doc/feature/additional/general.md b/doc/en/feature/additional/general.md index a1b712b12..a1b712b12 100644 --- a/doc/feature/additional/general.md +++ b/doc/en/feature/additional/general.md diff --git a/doc/feature/additional/overview.md b/doc/en/feature/additional/overview.md index b51f60bcd..b51f60bcd 100644 --- a/doc/feature/additional/overview.md +++ b/doc/en/feature/additional/overview.md diff --git a/doc/feature/additional/posts.md b/doc/en/feature/additional/posts.md index d3f6b37db..d3f6b37db 100644 --- a/doc/feature/additional/posts.md +++ b/doc/en/feature/additional/posts.md diff --git a/doc/federate.bb b/doc/en/federate.bb index 9137ec160..9137ec160 100644 --- a/doc/federate.bb +++ b/doc/en/federate.bb diff --git a/doc/filesync.md b/doc/en/filesync.md index 4c64bdb09..4c64bdb09 100644 --- a/doc/filesync.md +++ b/doc/en/filesync.md diff --git a/doc/first-post.bb b/doc/en/first-post.bb index cf6ed5b49..cf6ed5b49 100644 --- a/doc/first-post.bb +++ b/doc/en/first-post.bb diff --git a/doc/gdpr1.md b/doc/en/gdpr1.md index daa401a3d..daa401a3d 100644 --- a/doc/gdpr1.md +++ b/doc/en/gdpr1.md diff --git a/doc/general.bb b/doc/en/general.bb index 0b80db756..0b80db756 100644 --- a/doc/general.bb +++ b/doc/en/general.bb diff --git a/doc/git_for_non_developers.bb b/doc/en/git_for_non_developers.bb index 5fba17439..5fba17439 100644 --- a/doc/git_for_non_developers.bb +++ b/doc/en/git_for_non_developers.bb diff --git a/doc/hidden_configs.bb b/doc/en/hidden_configs.bb index 4eac1aa6e..4eac1aa6e 100644 --- a/doc/hidden_configs.bb +++ b/doc/en/hidden_configs.bb diff --git a/doc/hook/about_hook.bb b/doc/en/hook/about_hook.bb index 22b60d786..22b60d786 100644 --- a/doc/hook/about_hook.bb +++ b/doc/en/hook/about_hook.bb diff --git a/doc/hook/accept_follow.bb b/doc/en/hook/accept_follow.bb index e8b1ed0c4..e8b1ed0c4 100644 --- a/doc/hook/accept_follow.bb +++ b/doc/en/hook/accept_follow.bb diff --git a/doc/hook/account_downgrade.bb b/doc/en/hook/account_downgrade.bb index 63bae0a58..63bae0a58 100644 --- a/doc/hook/account_downgrade.bb +++ b/doc/en/hook/account_downgrade.bb diff --git a/doc/hook/account_settings.bb b/doc/en/hook/account_settings.bb index 91b3a8385..91b3a8385 100644 --- a/doc/hook/account_settings.bb +++ b/doc/en/hook/account_settings.bb diff --git a/doc/hook/account_settings_post.bb b/doc/en/hook/account_settings_post.bb index bbd7a57a8..bbd7a57a8 100644 --- a/doc/hook/account_settings_post.bb +++ b/doc/en/hook/account_settings_post.bb diff --git a/doc/hook/activity_decode_mapper.bb b/doc/en/hook/activity_decode_mapper.bb index 43d08a136..43d08a136 100644 --- a/doc/hook/activity_decode_mapper.bb +++ b/doc/en/hook/activity_decode_mapper.bb diff --git a/doc/hook/activity_filter.bb b/doc/en/hook/activity_filter.bb index 9d0768577..9d0768577 100644 --- a/doc/hook/activity_filter.bb +++ b/doc/en/hook/activity_filter.bb diff --git a/doc/hook/activity_mapper.bb b/doc/en/hook/activity_mapper.bb index db65fadc4..db65fadc4 100644 --- a/doc/hook/activity_mapper.bb +++ b/doc/en/hook/activity_mapper.bb diff --git a/doc/hook/activity_obj_decode_mapper.bb b/doc/en/hook/activity_obj_decode_mapper.bb index a96b32eee..a96b32eee 100644 --- a/doc/hook/activity_obj_decode_mapper.bb +++ b/doc/en/hook/activity_obj_decode_mapper.bb diff --git a/doc/hook/activity_obj_mapper.bb b/doc/en/hook/activity_obj_mapper.bb index 7c14a1b81..7c14a1b81 100644 --- a/doc/hook/activity_obj_mapper.bb +++ b/doc/en/hook/activity_obj_mapper.bb diff --git a/doc/hook/activity_order.bb b/doc/en/hook/activity_order.bb index 4a4670d03..4a4670d03 100644 --- a/doc/hook/activity_order.bb +++ b/doc/en/hook/activity_order.bb diff --git a/doc/hook/activity_received.bb b/doc/en/hook/activity_received.bb index 2e9d68bf3..2e9d68bf3 100644 --- a/doc/hook/activity_received.bb +++ b/doc/en/hook/activity_received.bb diff --git a/doc/hook/addon_app_installed_filter.bb b/doc/en/hook/addon_app_installed_filter.bb index e610b3205..e610b3205 100644 --- a/doc/hook/addon_app_installed_filter.bb +++ b/doc/en/hook/addon_app_installed_filter.bb diff --git a/doc/hook/affinity_labels.bb b/doc/en/hook/affinity_labels.bb index 7234b7632..7234b7632 100644 --- a/doc/hook/affinity_labels.bb +++ b/doc/en/hook/affinity_labels.bb diff --git a/doc/hook/api_perm_is_allowed.bb b/doc/en/hook/api_perm_is_allowed.bb index 862cbd653..862cbd653 100644 --- a/doc/hook/api_perm_is_allowed.bb +++ b/doc/en/hook/api_perm_is_allowed.bb diff --git a/doc/hook/app_destroy.bb b/doc/en/hook/app_destroy.bb index 386d7af16..386d7af16 100644 --- a/doc/hook/app_destroy.bb +++ b/doc/en/hook/app_destroy.bb diff --git a/doc/hook/app_installed_filter.bb b/doc/en/hook/app_installed_filter.bb index f0d91d6f0..f0d91d6f0 100644 --- a/doc/hook/app_installed_filter.bb +++ b/doc/en/hook/app_installed_filter.bb diff --git a/doc/hook/atom_author.bb b/doc/en/hook/atom_author.bb index c9d05a593..c9d05a593 100644 --- a/doc/hook/atom_author.bb +++ b/doc/en/hook/atom_author.bb diff --git a/doc/hook/atom_entry.bb b/doc/en/hook/atom_entry.bb index 0aec89f16..0aec89f16 100644 --- a/doc/hook/atom_entry.bb +++ b/doc/en/hook/atom_entry.bb diff --git a/doc/hook/atom_feed.bb b/doc/en/hook/atom_feed.bb index 69775ca5e..69775ca5e 100644 --- a/doc/hook/atom_feed.bb +++ b/doc/en/hook/atom_feed.bb diff --git a/doc/hook/atom_feed_end.bb b/doc/en/hook/atom_feed_end.bb index 4f019fc8f..4f019fc8f 100644 --- a/doc/hook/atom_feed_end.bb +++ b/doc/en/hook/atom_feed_end.bb diff --git a/doc/hook/attach_delete.bb b/doc/en/hook/attach_delete.bb index 3b63f28d3..3b63f28d3 100644 --- a/doc/hook/attach_delete.bb +++ b/doc/en/hook/attach_delete.bb diff --git a/doc/hook/attach_upload_file.bb b/doc/en/hook/attach_upload_file.bb index 1f8056caa..1f8056caa 100644 --- a/doc/hook/attach_upload_file.bb +++ b/doc/en/hook/attach_upload_file.bb diff --git a/doc/hook/authenticate.bb b/doc/en/hook/authenticate.bb index eb8071e73..eb8071e73 100644 --- a/doc/hook/authenticate.bb +++ b/doc/en/hook/authenticate.bb diff --git a/doc/hook/author_is_pmable.bb b/doc/en/hook/author_is_pmable.bb index 11d1185f3..11d1185f3 100644 --- a/doc/hook/author_is_pmable.bb +++ b/doc/en/hook/author_is_pmable.bb diff --git a/doc/hook/bb2diaspora.bb b/doc/en/hook/bb2diaspora.bb index c28f1883e..c28f1883e 100644 --- a/doc/hook/bb2diaspora.bb +++ b/doc/en/hook/bb2diaspora.bb diff --git a/doc/hook/bbcode.bb b/doc/en/hook/bbcode.bb index f6b8711b0..f6b8711b0 100644 --- a/doc/hook/bbcode.bb +++ b/doc/en/hook/bbcode.bb diff --git a/doc/hook/bbcode_filter.bb b/doc/en/hook/bbcode_filter.bb index efeb2e1b0..efeb2e1b0 100644 --- a/doc/hook/bbcode_filter.bb +++ b/doc/en/hook/bbcode_filter.bb diff --git a/doc/hook/build_pagehead.bb b/doc/en/hook/build_pagehead.bb index 8fc3486c7..8fc3486c7 100644 --- a/doc/hook/build_pagehead.bb +++ b/doc/en/hook/build_pagehead.bb diff --git a/doc/hook/can_comment_on_post.bb b/doc/en/hook/can_comment_on_post.bb index 2cfd3b2da..2cfd3b2da 100644 --- a/doc/hook/can_comment_on_post.bb +++ b/doc/en/hook/can_comment_on_post.bb diff --git a/doc/hook/change_channel.bb b/doc/en/hook/change_channel.bb index 4514b9265..4514b9265 100644 --- a/doc/hook/change_channel.bb +++ b/doc/en/hook/change_channel.bb diff --git a/doc/hook/channel_links.bb b/doc/en/hook/channel_links.bb index c0243dac6..c0243dac6 100644 --- a/doc/hook/channel_links.bb +++ b/doc/en/hook/channel_links.bb diff --git a/doc/hook/channel_remove.bb b/doc/en/hook/channel_remove.bb index db9e9dd82..db9e9dd82 100644 --- a/doc/hook/channel_remove.bb +++ b/doc/en/hook/channel_remove.bb diff --git a/doc/hook/chat_message.bb b/doc/en/hook/chat_message.bb index ccc93bb2c..ccc93bb2c 100644 --- a/doc/hook/chat_message.bb +++ b/doc/en/hook/chat_message.bb diff --git a/doc/hook/chat_post.bb b/doc/en/hook/chat_post.bb index 7cb3c9fa1..7cb3c9fa1 100644 --- a/doc/hook/chat_post.bb +++ b/doc/en/hook/chat_post.bb diff --git a/doc/hook/check_account_email.bb b/doc/en/hook/check_account_email.bb index b309706a0..b309706a0 100644 --- a/doc/hook/check_account_email.bb +++ b/doc/en/hook/check_account_email.bb diff --git a/doc/hook/check_account_invite.bb b/doc/en/hook/check_account_invite.bb index 8d4a40522..8d4a40522 100644 --- a/doc/hook/check_account_invite.bb +++ b/doc/en/hook/check_account_invite.bb diff --git a/doc/hook/check_account_password.bb b/doc/en/hook/check_account_password.bb index ce5202f48..ce5202f48 100644 --- a/doc/hook/check_account_password.bb +++ b/doc/en/hook/check_account_password.bb diff --git a/doc/hook/check_channelallowed.bb b/doc/en/hook/check_channelallowed.bb index e7559c92f..e7559c92f 100644 --- a/doc/hook/check_channelallowed.bb +++ b/doc/en/hook/check_channelallowed.bb diff --git a/doc/hook/check_siteallowed.bb b/doc/en/hook/check_siteallowed.bb index 28134cbd2..28134cbd2 100644 --- a/doc/hook/check_siteallowed.bb +++ b/doc/en/hook/check_siteallowed.bb diff --git a/doc/hook/collect_public_recipients.bb b/doc/en/hook/collect_public_recipients.bb index de3f4049e..de3f4049e 100644 --- a/doc/hook/collect_public_recipients.bb +++ b/doc/en/hook/collect_public_recipients.bb diff --git a/doc/hook/comments_are_now_closed.bb b/doc/en/hook/comments_are_now_closed.bb index 4d3baa95a..4d3baa95a 100644 --- a/doc/hook/comments_are_now_closed.bb +++ b/doc/en/hook/comments_are_now_closed.bb diff --git a/doc/hook/connect_premium.bb b/doc/en/hook/connect_premium.bb index ae3aafc66..ae3aafc66 100644 --- a/doc/hook/connect_premium.bb +++ b/doc/en/hook/connect_premium.bb diff --git a/doc/hook/connection_remove.bb b/doc/en/hook/connection_remove.bb index bd13ae5f2..bd13ae5f2 100644 --- a/doc/hook/connection_remove.bb +++ b/doc/en/hook/connection_remove.bb diff --git a/doc/hook/connector_settings.bb b/doc/en/hook/connector_settings.bb index 9b59c49da..9b59c49da 100644 --- a/doc/hook/connector_settings.bb +++ b/doc/en/hook/connector_settings.bb diff --git a/doc/hook/construct_page.bb b/doc/en/hook/construct_page.bb index 700d9256f..700d9256f 100644 --- a/doc/hook/construct_page.bb +++ b/doc/en/hook/construct_page.bb diff --git a/doc/hook/contact_block_end.bb b/doc/en/hook/contact_block_end.bb index 30a7d2d76..30a7d2d76 100644 --- a/doc/hook/contact_block_end.bb +++ b/doc/en/hook/contact_block_end.bb diff --git a/doc/hook/contact_edit.bb b/doc/en/hook/contact_edit.bb index 5fd31fb1d..5fd31fb1d 100644 --- a/doc/hook/contact_edit.bb +++ b/doc/en/hook/contact_edit.bb diff --git a/doc/hook/contact_edit_post.bb b/doc/en/hook/contact_edit_post.bb index bc736f8b8..bc736f8b8 100644 --- a/doc/hook/contact_edit_post.bb +++ b/doc/en/hook/contact_edit_post.bb diff --git a/doc/hook/contact_select_options.bb b/doc/en/hook/contact_select_options.bb index 65f9154ff..65f9154ff 100644 --- a/doc/hook/contact_select_options.bb +++ b/doc/en/hook/contact_select_options.bb diff --git a/doc/hook/content_security_policy.bb b/doc/en/hook/content_security_policy.bb index 96b8095ae..96b8095ae 100644 --- a/doc/hook/content_security_policy.bb +++ b/doc/en/hook/content_security_policy.bb diff --git a/doc/hook/conversation_start.bb b/doc/en/hook/conversation_start.bb index 7208c8d8f..7208c8d8f 100644 --- a/doc/hook/conversation_start.bb +++ b/doc/en/hook/conversation_start.bb diff --git a/doc/hook/create_identity.bb b/doc/en/hook/create_identity.bb index 5c1da2d43..5c1da2d43 100644 --- a/doc/hook/create_identity.bb +++ b/doc/en/hook/create_identity.bb diff --git a/doc/hook/cron.bb b/doc/en/hook/cron.bb index 55120b6c2..55120b6c2 100644 --- a/doc/hook/cron.bb +++ b/doc/en/hook/cron.bb diff --git a/doc/hook/cron_daily.bb b/doc/en/hook/cron_daily.bb index 802bea5e4..802bea5e4 100644 --- a/doc/hook/cron_daily.bb +++ b/doc/en/hook/cron_daily.bb diff --git a/doc/hook/cron_weekly.bb b/doc/en/hook/cron_weekly.bb index c01bf9611..c01bf9611 100644 --- a/doc/hook/cron_weekly.bb +++ b/doc/en/hook/cron_weekly.bb diff --git a/doc/hook/crypto_methods.bb b/doc/en/hook/crypto_methods.bb index 1b16f567d..1b16f567d 100644 --- a/doc/hook/crypto_methods.bb +++ b/doc/en/hook/crypto_methods.bb diff --git a/doc/hook/daemon_addon.bb b/doc/en/hook/daemon_addon.bb index b60b25748..b60b25748 100644 --- a/doc/hook/daemon_addon.bb +++ b/doc/en/hook/daemon_addon.bb diff --git a/doc/hook/daemon_master_release.bb b/doc/en/hook/daemon_master_release.bb index a17216d48..a17216d48 100644 --- a/doc/hook/daemon_master_release.bb +++ b/doc/en/hook/daemon_master_release.bb diff --git a/doc/hook/directory_item.bb b/doc/en/hook/directory_item.bb index cb710e0b4..cb710e0b4 100644 --- a/doc/hook/directory_item.bb +++ b/doc/en/hook/directory_item.bb diff --git a/doc/hook/discover_channel_webfinger.bb b/doc/en/hook/discover_channel_webfinger.bb index b0eb5f2c4..b0eb5f2c4 100644 --- a/doc/hook/discover_channel_webfinger.bb +++ b/doc/en/hook/discover_channel_webfinger.bb diff --git a/doc/hook/display_item.bb b/doc/en/hook/display_item.bb index a6bfd621d..a6bfd621d 100644 --- a/doc/hook/display_item.bb +++ b/doc/en/hook/display_item.bb diff --git a/doc/hook/display_settings.bb b/doc/en/hook/display_settings.bb index 1f1e0b491..1f1e0b491 100644 --- a/doc/hook/display_settings.bb +++ b/doc/en/hook/display_settings.bb diff --git a/doc/hook/display_settings_post.bb b/doc/en/hook/display_settings_post.bb index d3bb39359..d3bb39359 100644 --- a/doc/hook/display_settings_post.bb +++ b/doc/en/hook/display_settings_post.bb diff --git a/doc/hook/donate_contributors.bb b/doc/en/hook/donate_contributors.bb index f97c77efa..f97c77efa 100644 --- a/doc/hook/donate_contributors.bb +++ b/doc/en/hook/donate_contributors.bb diff --git a/doc/hook/donate_plugin.bb b/doc/en/hook/donate_plugin.bb index db4a6f113..db4a6f113 100644 --- a/doc/hook/donate_plugin.bb +++ b/doc/en/hook/donate_plugin.bb diff --git a/doc/hook/donate_sponsors.bb b/doc/en/hook/donate_sponsors.bb index 3abd46d42..3abd46d42 100644 --- a/doc/hook/donate_sponsors.bb +++ b/doc/en/hook/donate_sponsors.bb diff --git a/doc/hook/dreport_is_storable.bb b/doc/en/hook/dreport_is_storable.bb index 9ca99b896..9ca99b896 100644 --- a/doc/hook/dreport_is_storable.bb +++ b/doc/en/hook/dreport_is_storable.bb diff --git a/doc/hook/dreport_process.bb b/doc/en/hook/dreport_process.bb index 3ad331f41..3ad331f41 100644 --- a/doc/hook/dreport_process.bb +++ b/doc/en/hook/dreport_process.bb diff --git a/doc/hook/drop_item.bb b/doc/en/hook/drop_item.bb index 35bb80f82..35bb80f82 100644 --- a/doc/hook/drop_item.bb +++ b/doc/en/hook/drop_item.bb diff --git a/doc/hook/dropdown_extras.bb b/doc/en/hook/dropdown_extras.bb index 6d7110a76..6d7110a76 100644 --- a/doc/hook/dropdown_extras.bb +++ b/doc/en/hook/dropdown_extras.bb diff --git a/doc/hook/encode_object.bb b/doc/en/hook/encode_object.bb index 0c8e86458..0c8e86458 100644 --- a/doc/hook/encode_object.bb +++ b/doc/en/hook/encode_object.bb diff --git a/doc/hook/enotify.bb b/doc/en/hook/enotify.bb index 703a3ffa0..703a3ffa0 100644 --- a/doc/hook/enotify.bb +++ b/doc/en/hook/enotify.bb diff --git a/doc/hook/enotify_mail.bb b/doc/en/hook/enotify_mail.bb index adeb8bd30..adeb8bd30 100644 --- a/doc/hook/enotify_mail.bb +++ b/doc/en/hook/enotify_mail.bb diff --git a/doc/hook/enotify_store.bb b/doc/en/hook/enotify_store.bb index dc44cc320..dc44cc320 100644 --- a/doc/hook/enotify_store.bb +++ b/doc/en/hook/enotify_store.bb diff --git a/doc/hook/event_created.bb b/doc/en/hook/event_created.bb index 222602e77..222602e77 100644 --- a/doc/hook/event_created.bb +++ b/doc/en/hook/event_created.bb diff --git a/doc/hook/event_store_event.bb b/doc/en/hook/event_store_event.bb index 7015a8322..7015a8322 100644 --- a/doc/hook/event_store_event.bb +++ b/doc/en/hook/event_store_event.bb diff --git a/doc/hook/event_updated.bb b/doc/en/hook/event_updated.bb index 69e3c72c1..69e3c72c1 100644 --- a/doc/hook/event_updated.bb +++ b/doc/en/hook/event_updated.bb diff --git a/doc/hook/externals_url_select.bb b/doc/en/hook/externals_url_select.bb index a542dcb29..a542dcb29 100644 --- a/doc/hook/externals_url_select.bb +++ b/doc/en/hook/externals_url_select.bb diff --git a/doc/hook/feature_enabled.bb b/doc/en/hook/feature_enabled.bb index 5630cc768..5630cc768 100644 --- a/doc/hook/feature_enabled.bb +++ b/doc/en/hook/feature_enabled.bb diff --git a/doc/hook/feature_settings.bb b/doc/en/hook/feature_settings.bb index d1691eb38..d1691eb38 100644 --- a/doc/hook/feature_settings.bb +++ b/doc/en/hook/feature_settings.bb diff --git a/doc/hook/feature_settings_post.bb b/doc/en/hook/feature_settings_post.bb index eecf941ff..eecf941ff 100644 --- a/doc/hook/feature_settings_post.bb +++ b/doc/en/hook/feature_settings_post.bb diff --git a/doc/hook/fetch_and_store.bb b/doc/en/hook/fetch_and_store.bb index afece11a6..afece11a6 100644 --- a/doc/hook/fetch_and_store.bb +++ b/doc/en/hook/fetch_and_store.bb diff --git a/doc/hook/follow.bb b/doc/en/hook/follow.bb index a97632b06..a97632b06 100644 --- a/doc/hook/follow.bb +++ b/doc/en/hook/follow.bb diff --git a/doc/hook/follow_allow.bb b/doc/en/hook/follow_allow.bb index fdab1865c..fdab1865c 100644 --- a/doc/hook/follow_allow.bb +++ b/doc/en/hook/follow_allow.bb diff --git a/doc/hook/gender_selector.bb b/doc/en/hook/gender_selector.bb index 0b56b5c9b..0b56b5c9b 100644 --- a/doc/hook/gender_selector.bb +++ b/doc/en/hook/gender_selector.bb diff --git a/doc/hook/gender_selector_min.bb b/doc/en/hook/gender_selector_min.bb index 9d143855a..9d143855a 100644 --- a/doc/hook/gender_selector_min.bb +++ b/doc/en/hook/gender_selector_min.bb diff --git a/doc/hook/generate_map.bb b/doc/en/hook/generate_map.bb index 33672d552..33672d552 100644 --- a/doc/hook/generate_map.bb +++ b/doc/en/hook/generate_map.bb diff --git a/doc/hook/generate_named_map.bb b/doc/en/hook/generate_named_map.bb index 5bacb846d..5bacb846d 100644 --- a/doc/hook/generate_named_map.bb +++ b/doc/en/hook/generate_named_map.bb diff --git a/doc/hook/get_all_api_perms.bb b/doc/en/hook/get_all_api_perms.bb index eb41f8a02..eb41f8a02 100644 --- a/doc/hook/get_all_api_perms.bb +++ b/doc/en/hook/get_all_api_perms.bb diff --git a/doc/hook/get_all_perms.bb b/doc/en/hook/get_all_perms.bb index 149f8c78c..149f8c78c 100644 --- a/doc/hook/get_all_perms.bb +++ b/doc/en/hook/get_all_perms.bb diff --git a/doc/hook/get_default_export_sections b/doc/en/hook/get_default_export_sections index 09b146643..09b146643 100644 --- a/doc/hook/get_default_export_sections +++ b/doc/en/hook/get_default_export_sections diff --git a/doc/hook/get_features.bb b/doc/en/hook/get_features.bb index 66e81f13c..66e81f13c 100644 --- a/doc/hook/get_features.bb +++ b/doc/en/hook/get_features.bb diff --git a/doc/hook/get_photo.bb b/doc/en/hook/get_photo.bb index eaf3beffb..eaf3beffb 100644 --- a/doc/hook/get_photo.bb +++ b/doc/en/hook/get_photo.bb diff --git a/doc/hook/get_profile_photo.bb b/doc/en/hook/get_profile_photo.bb index ab07179ae..ab07179ae 100644 --- a/doc/hook/get_profile_photo.bb +++ b/doc/en/hook/get_profile_photo.bb diff --git a/doc/hook/get_role_perms.bb b/doc/en/hook/get_role_perms.bb index 87830f8e3..87830f8e3 100644 --- a/doc/hook/get_role_perms.bb +++ b/doc/en/hook/get_role_perms.bb diff --git a/doc/hook/global_permissions.bb b/doc/en/hook/global_permissions.bb index fe998ee9c..fe998ee9c 100644 --- a/doc/hook/global_permissions.bb +++ b/doc/en/hook/global_permissions.bb diff --git a/doc/hook/home_content.bb b/doc/en/hook/home_content.bb index 7f32b3547..7f32b3547 100644 --- a/doc/hook/home_content.bb +++ b/doc/en/hook/home_content.bb diff --git a/doc/hook/home_init.bb b/doc/en/hook/home_init.bb index 25dd72792..25dd72792 100644 --- a/doc/hook/home_init.bb +++ b/doc/en/hook/home_init.bb diff --git a/doc/hook/hostxrd.bb b/doc/en/hook/hostxrd.bb index 2b67320cf..2b67320cf 100644 --- a/doc/hook/hostxrd.bb +++ b/doc/en/hook/hostxrd.bb diff --git a/doc/hook/html2bbcode.bb b/doc/en/hook/html2bbcode.bb index 3061f05f0..3061f05f0 100644 --- a/doc/hook/html2bbcode.bb +++ b/doc/en/hook/html2bbcode.bb diff --git a/doc/hook/identity_basic_export.bb b/doc/en/hook/identity_basic_export.bb index 71329ba1e..71329ba1e 100644 --- a/doc/hook/identity_basic_export.bb +++ b/doc/en/hook/identity_basic_export.bb diff --git a/doc/hook/import_author_xchan.bb b/doc/en/hook/import_author_xchan.bb index e2340469d..e2340469d 100644 --- a/doc/hook/import_author_xchan.bb +++ b/doc/en/hook/import_author_xchan.bb diff --git a/doc/hook/import_channel.bb b/doc/en/hook/import_channel.bb index b220b7415..b220b7415 100644 --- a/doc/hook/import_channel.bb +++ b/doc/en/hook/import_channel.bb diff --git a/doc/hook/import_directory_profile.bb b/doc/en/hook/import_directory_profile.bb index e2fac59bc..e2fac59bc 100644 --- a/doc/hook/import_directory_profile.bb +++ b/doc/en/hook/import_directory_profile.bb diff --git a/doc/hook/import_xchan.bb b/doc/en/hook/import_xchan.bb index 40e0783ce..40e0783ce 100644 --- a/doc/hook/import_xchan.bb +++ b/doc/en/hook/import_xchan.bb diff --git a/doc/hook/item_custom.bb b/doc/en/hook/item_custom.bb index d20c7d76c..d20c7d76c 100644 --- a/doc/hook/item_custom.bb +++ b/doc/en/hook/item_custom.bb diff --git a/doc/hook/item_photo_menu.bb b/doc/en/hook/item_photo_menu.bb index 8f9860a90..8f9860a90 100644 --- a/doc/hook/item_photo_menu.bb +++ b/doc/en/hook/item_photo_menu.bb diff --git a/doc/hook/item_store.bb b/doc/en/hook/item_store.bb index 5d49b725c..5d49b725c 100644 --- a/doc/hook/item_store.bb +++ b/doc/en/hook/item_store.bb diff --git a/doc/hook/item_store_update.bb b/doc/en/hook/item_store_update.bb index a7c58939a..a7c58939a 100644 --- a/doc/hook/item_store_update.bb +++ b/doc/en/hook/item_store_update.bb diff --git a/doc/hook/item_stored.bb b/doc/en/hook/item_stored.bb index 8d706cb4e..8d706cb4e 100644 --- a/doc/hook/item_stored.bb +++ b/doc/en/hook/item_stored.bb diff --git a/doc/hook/item_stored_update.bb b/doc/en/hook/item_stored_update.bb index 4532a347c..4532a347c 100644 --- a/doc/hook/item_stored_update.bb +++ b/doc/en/hook/item_stored_update.bb diff --git a/doc/hook/item_translate.bb b/doc/en/hook/item_translate.bb index 695494b9c..695494b9c 100644 --- a/doc/hook/item_translate.bb +++ b/doc/en/hook/item_translate.bb diff --git a/doc/hook/jot_header_tpl_filter.bb b/doc/en/hook/jot_header_tpl_filter.bb index b17d81d03..b17d81d03 100644 --- a/doc/hook/jot_header_tpl_filter.bb +++ b/doc/en/hook/jot_header_tpl_filter.bb diff --git a/doc/hook/jot_networks.bb b/doc/en/hook/jot_networks.bb index 4c1629ba7..4c1629ba7 100644 --- a/doc/hook/jot_networks.bb +++ b/doc/en/hook/jot_networks.bb diff --git a/doc/hook/jot_tool.bb b/doc/en/hook/jot_tool.bb index 22ba9701e..22ba9701e 100644 --- a/doc/hook/jot_tool.bb +++ b/doc/en/hook/jot_tool.bb diff --git a/doc/hook/jot_tpl_filter.bb b/doc/en/hook/jot_tpl_filter.bb index 426da3c56..426da3c56 100644 --- a/doc/hook/jot_tpl_filter.bb +++ b/doc/en/hook/jot_tpl_filter.bb diff --git a/doc/hook/legal_webbie.bb b/doc/en/hook/legal_webbie.bb index 8c7d32d56..8c7d32d56 100644 --- a/doc/hook/legal_webbie.bb +++ b/doc/en/hook/legal_webbie.bb diff --git a/doc/hook/legal_webbie_text.bb b/doc/en/hook/legal_webbie_text.bb index 32c74c93b..32c74c93b 100644 --- a/doc/hook/legal_webbie_text.bb +++ b/doc/en/hook/legal_webbie_text.bb diff --git a/doc/hook/load_pdl.bb b/doc/en/hook/load_pdl.bb index 149a3e766..149a3e766 100644 --- a/doc/hook/load_pdl.bb +++ b/doc/en/hook/load_pdl.bb diff --git a/doc/hook/local_dir_update.bb b/doc/en/hook/local_dir_update.bb index d0b0f8ac1..d0b0f8ac1 100644 --- a/doc/hook/local_dir_update.bb +++ b/doc/en/hook/local_dir_update.bb diff --git a/doc/hook/logged_in.bb b/doc/en/hook/logged_in.bb index b01041576..b01041576 100644 --- a/doc/hook/logged_in.bb +++ b/doc/en/hook/logged_in.bb diff --git a/doc/hook/logger.bb b/doc/en/hook/logger.bb index 8fe989abd..8fe989abd 100644 --- a/doc/hook/logger.bb +++ b/doc/en/hook/logger.bb diff --git a/doc/hook/logging_out.bb b/doc/en/hook/logging_out.bb index d47b9f1df..d47b9f1df 100644 --- a/doc/hook/logging_out.bb +++ b/doc/en/hook/logging_out.bb diff --git a/doc/hook/login_hook.bb b/doc/en/hook/login_hook.bb index 156a0afcd..156a0afcd 100644 --- a/doc/hook/login_hook.bb +++ b/doc/en/hook/login_hook.bb diff --git a/doc/hook/magic_auth.bb b/doc/en/hook/magic_auth.bb index 80d6edb27..80d6edb27 100644 --- a/doc/hook/magic_auth.bb +++ b/doc/en/hook/magic_auth.bb diff --git a/doc/hook/magic_auth_openid_success.bb b/doc/en/hook/magic_auth_openid_success.bb index 810f2e06d..810f2e06d 100644 --- a/doc/hook/magic_auth_openid_success.bb +++ b/doc/en/hook/magic_auth_openid_success.bb diff --git a/doc/hook/magic_auth_success.bb b/doc/en/hook/magic_auth_success.bb index d795e43e5..d795e43e5 100644 --- a/doc/hook/magic_auth_success.bb +++ b/doc/en/hook/magic_auth_success.bb diff --git a/doc/hook/main_slider.bb b/doc/en/hook/main_slider.bb index a63c2170a..a63c2170a 100644 --- a/doc/hook/main_slider.bb +++ b/doc/en/hook/main_slider.bb diff --git a/doc/hook/marital_selector.bb b/doc/en/hook/marital_selector.bb index 0f76c3f5a..0f76c3f5a 100644 --- a/doc/hook/marital_selector.bb +++ b/doc/en/hook/marital_selector.bb diff --git a/doc/hook/marital_selector_min.bb b/doc/en/hook/marital_selector_min.bb index f02d21f20..f02d21f20 100644 --- a/doc/hook/marital_selector_min.bb +++ b/doc/en/hook/marital_selector_min.bb diff --git a/doc/hook/markdown_to_bb.bb b/doc/en/hook/markdown_to_bb.bb index 8af637c8c..8af637c8c 100644 --- a/doc/hook/markdown_to_bb.bb +++ b/doc/en/hook/markdown_to_bb.bb diff --git a/doc/hook/module_loaded.bb b/doc/en/hook/module_loaded.bb index cb0d2302d..cb0d2302d 100644 --- a/doc/hook/module_loaded.bb +++ b/doc/en/hook/module_loaded.bb diff --git a/doc/hook/module_mod_aftercontent.bb b/doc/en/hook/module_mod_aftercontent.bb index 04e3c8d88..04e3c8d88 100644 --- a/doc/hook/module_mod_aftercontent.bb +++ b/doc/en/hook/module_mod_aftercontent.bb diff --git a/doc/hook/module_mod_content.bb b/doc/en/hook/module_mod_content.bb index eef5b7ba5..eef5b7ba5 100644 --- a/doc/hook/module_mod_content.bb +++ b/doc/en/hook/module_mod_content.bb diff --git a/doc/hook/module_mod_init.bb b/doc/en/hook/module_mod_init.bb index 52fe5a616..52fe5a616 100644 --- a/doc/hook/module_mod_init.bb +++ b/doc/en/hook/module_mod_init.bb diff --git a/doc/hook/module_mod_post.bb b/doc/en/hook/module_mod_post.bb index 3adb0e737..3adb0e737 100644 --- a/doc/hook/module_mod_post.bb +++ b/doc/en/hook/module_mod_post.bb diff --git a/doc/hook/mood_verbs.bb b/doc/en/hook/mood_verbs.bb index 67fb719dd..67fb719dd 100644 --- a/doc/hook/mood_verbs.bb +++ b/doc/en/hook/mood_verbs.bb diff --git a/doc/hook/nav.bb b/doc/en/hook/nav.bb index b52f90602..b52f90602 100644 --- a/doc/hook/nav.bb +++ b/doc/en/hook/nav.bb diff --git a/doc/hook/network_content_init.bb b/doc/en/hook/network_content_init.bb index 224da393a..224da393a 100644 --- a/doc/hook/network_content_init.bb +++ b/doc/en/hook/network_content_init.bb diff --git a/doc/hook/network_ping.bb b/doc/en/hook/network_ping.bb index 78deefe78..78deefe78 100644 --- a/doc/hook/network_ping.bb +++ b/doc/en/hook/network_ping.bb diff --git a/doc/hook/network_to_name.bb b/doc/en/hook/network_to_name.bb index eea4a1841..eea4a1841 100644 --- a/doc/hook/network_to_name.bb +++ b/doc/en/hook/network_to_name.bb diff --git a/doc/hook/notifier_end.bb b/doc/en/hook/notifier_end.bb index df9d852bd..df9d852bd 100644 --- a/doc/hook/notifier_end.bb +++ b/doc/en/hook/notifier_end.bb diff --git a/doc/hook/notifier_hub.bb b/doc/en/hook/notifier_hub.bb index 4255ce446..4255ce446 100644 --- a/doc/hook/notifier_hub.bb +++ b/doc/en/hook/notifier_hub.bb diff --git a/doc/hook/notifier_normal.bb b/doc/en/hook/notifier_normal.bb index 0059baa47..0059baa47 100644 --- a/doc/hook/notifier_normal.bb +++ b/doc/en/hook/notifier_normal.bb diff --git a/doc/hook/obj_verbs.bb b/doc/en/hook/obj_verbs.bb index ca98229aa..ca98229aa 100644 --- a/doc/hook/obj_verbs.bb +++ b/doc/en/hook/obj_verbs.bb diff --git a/doc/hook/oembed_probe.bb b/doc/en/hook/oembed_probe.bb index 4f32ac267..4f32ac267 100644 --- a/doc/hook/oembed_probe.bb +++ b/doc/en/hook/oembed_probe.bb diff --git a/doc/hook/other_encapsulate.bb b/doc/en/hook/other_encapsulate.bb index ea0cdf622..ea0cdf622 100644 --- a/doc/hook/other_encapsulate.bb +++ b/doc/en/hook/other_encapsulate.bb diff --git a/doc/hook/other_unencapsulate.bb b/doc/en/hook/other_unencapsulate.bb index c8b0b617f..c8b0b617f 100644 --- a/doc/hook/other_unencapsulate.bb +++ b/doc/en/hook/other_unencapsulate.bb diff --git a/doc/hook/page_content_top.bb b/doc/en/hook/page_content_top.bb index 137e3abfd..137e3abfd 100644 --- a/doc/hook/page_content_top.bb +++ b/doc/en/hook/page_content_top.bb diff --git a/doc/hook/page_end.bb b/doc/en/hook/page_end.bb index 09293cf50..09293cf50 100644 --- a/doc/hook/page_end.bb +++ b/doc/en/hook/page_end.bb diff --git a/doc/hook/page_header.bb b/doc/en/hook/page_header.bb index ffaa791c9..ffaa791c9 100644 --- a/doc/hook/page_header.bb +++ b/doc/en/hook/page_header.bb diff --git a/doc/hook/page_meta.bb b/doc/en/hook/page_meta.bb index 30a8f9440..30a8f9440 100644 --- a/doc/hook/page_meta.bb +++ b/doc/en/hook/page_meta.bb diff --git a/doc/hook/parse_atom.bb b/doc/en/hook/parse_atom.bb index c8037317f..c8037317f 100644 --- a/doc/hook/parse_atom.bb +++ b/doc/en/hook/parse_atom.bb diff --git a/doc/hook/parse_link.bb b/doc/en/hook/parse_link.bb index 1c328059c..1c328059c 100644 --- a/doc/hook/parse_link.bb +++ b/doc/en/hook/parse_link.bb diff --git a/doc/hook/pdl_selector.bb b/doc/en/hook/pdl_selector.bb index bee01c843..bee01c843 100644 --- a/doc/hook/pdl_selector.bb +++ b/doc/en/hook/pdl_selector.bb diff --git a/doc/hook/perm_is_allowed.bb b/doc/en/hook/perm_is_allowed.bb index aac647609..aac647609 100644 --- a/doc/hook/perm_is_allowed.bb +++ b/doc/en/hook/perm_is_allowed.bb diff --git a/doc/hook/permissions_create.bb b/doc/en/hook/permissions_create.bb index 22f80a80e..22f80a80e 100644 --- a/doc/hook/permissions_create.bb +++ b/doc/en/hook/permissions_create.bb diff --git a/doc/hook/permissions_update.bb b/doc/en/hook/permissions_update.bb index 40366b33d..40366b33d 100644 --- a/doc/hook/permissions_update.bb +++ b/doc/en/hook/permissions_update.bb diff --git a/doc/hook/permit_hook.bb b/doc/en/hook/permit_hook.bb index e69de29bb..e69de29bb 100644 --- a/doc/hook/permit_hook.bb +++ b/doc/en/hook/permit_hook.bb diff --git a/doc/hook/personal_xrd.bb b/doc/en/hook/personal_xrd.bb index 71d4bd8dd..71d4bd8dd 100644 --- a/doc/hook/personal_xrd.bb +++ b/doc/en/hook/personal_xrd.bb diff --git a/doc/hook/photo_post_end.bb b/doc/en/hook/photo_post_end.bb index 8a3291763..8a3291763 100644 --- a/doc/hook/photo_post_end.bb +++ b/doc/en/hook/photo_post_end.bb diff --git a/doc/hook/photo_upload_begin.bb b/doc/en/hook/photo_upload_begin.bb index 5e441a12a..5e441a12a 100644 --- a/doc/hook/photo_upload_begin.bb +++ b/doc/en/hook/photo_upload_begin.bb diff --git a/doc/hook/photo_upload_end.bb b/doc/en/hook/photo_upload_end.bb index 956175f1d..956175f1d 100644 --- a/doc/hook/photo_upload_end.bb +++ b/doc/en/hook/photo_upload_end.bb diff --git a/doc/hook/photo_upload_file.bb b/doc/en/hook/photo_upload_file.bb index 726622ac0..726622ac0 100644 --- a/doc/hook/photo_upload_file.bb +++ b/doc/en/hook/photo_upload_file.bb diff --git a/doc/hook/photo_upload_form.bb b/doc/en/hook/photo_upload_form.bb index 70b8318b8..70b8318b8 100644 --- a/doc/hook/photo_upload_form.bb +++ b/doc/en/hook/photo_upload_form.bb diff --git a/doc/hook/photo_view_filter.bb b/doc/en/hook/photo_view_filter.bb index 0780c1edc..0780c1edc 100644 --- a/doc/hook/photo_view_filter.bb +++ b/doc/en/hook/photo_view_filter.bb diff --git a/doc/hook/poke_verbs.bb b/doc/en/hook/poke_verbs.bb index 54d68c3a2..54d68c3a2 100644 --- a/doc/hook/poke_verbs.bb +++ b/doc/en/hook/poke_verbs.bb diff --git a/doc/hook/post_local.bb b/doc/en/hook/post_local.bb index 5aa723cb9..5aa723cb9 100644 --- a/doc/hook/post_local.bb +++ b/doc/en/hook/post_local.bb diff --git a/doc/hook/post_local_end.bb b/doc/en/hook/post_local_end.bb index 380166fdb..380166fdb 100644 --- a/doc/hook/post_local_end.bb +++ b/doc/en/hook/post_local_end.bb diff --git a/doc/hook/post_local_start.bb b/doc/en/hook/post_local_start.bb index 2f684f67a..2f684f67a 100644 --- a/doc/hook/post_local_start.bb +++ b/doc/en/hook/post_local_start.bb diff --git a/doc/hook/post_mail.bb b/doc/en/hook/post_mail.bb index 8f67ad4f0..8f67ad4f0 100644 --- a/doc/hook/post_mail.bb +++ b/doc/en/hook/post_mail.bb diff --git a/doc/hook/post_mail_end.bb b/doc/en/hook/post_mail_end.bb index 7f0085773..7f0085773 100644 --- a/doc/hook/post_mail_end.bb +++ b/doc/en/hook/post_mail_end.bb diff --git a/doc/hook/post_remote.bb b/doc/en/hook/post_remote.bb index f8e087eee..f8e087eee 100644 --- a/doc/hook/post_remote.bb +++ b/doc/en/hook/post_remote.bb diff --git a/doc/hook/post_remote_end.bb b/doc/en/hook/post_remote_end.bb index 0fef20cbf..0fef20cbf 100644 --- a/doc/hook/post_remote_end.bb +++ b/doc/en/hook/post_remote_end.bb diff --git a/doc/hook/post_remote_update.bb b/doc/en/hook/post_remote_update.bb index fd358db28..fd358db28 100644 --- a/doc/hook/post_remote_update.bb +++ b/doc/en/hook/post_remote_update.bb diff --git a/doc/hook/post_remote_update_end.bb b/doc/en/hook/post_remote_update_end.bb index 95f1e6f78..95f1e6f78 100644 --- a/doc/hook/post_remote_update_end.bb +++ b/doc/en/hook/post_remote_update_end.bb diff --git a/doc/hook/prepare_body.bb b/doc/en/hook/prepare_body.bb index 3f1eaef85..3f1eaef85 100644 --- a/doc/hook/prepare_body.bb +++ b/doc/en/hook/prepare_body.bb diff --git a/doc/hook/prepare_body_final.bb b/doc/en/hook/prepare_body_final.bb index 96d1ae389..96d1ae389 100644 --- a/doc/hook/prepare_body_final.bb +++ b/doc/en/hook/prepare_body_final.bb diff --git a/doc/hook/prepare_body_init.bb b/doc/en/hook/prepare_body_init.bb index f3de79970..f3de79970 100644 --- a/doc/hook/prepare_body_init.bb +++ b/doc/en/hook/prepare_body_init.bb diff --git a/doc/hook/privacygroup_extras.bb b/doc/en/hook/privacygroup_extras.bb index bd67f2470..bd67f2470 100644 --- a/doc/hook/privacygroup_extras.bb +++ b/doc/en/hook/privacygroup_extras.bb diff --git a/doc/hook/privacygroup_extras_drop.bb b/doc/en/hook/privacygroup_extras_drop.bb index fd27ab255..fd27ab255 100644 --- a/doc/hook/privacygroup_extras_drop.bb +++ b/doc/en/hook/privacygroup_extras_drop.bb diff --git a/doc/hook/privacygroup_extras_post.bb b/doc/en/hook/privacygroup_extras_post.bb index 704db1997..704db1997 100644 --- a/doc/hook/privacygroup_extras_post.bb +++ b/doc/en/hook/privacygroup_extras_post.bb diff --git a/doc/hook/proc_run.bb b/doc/en/hook/proc_run.bb index a3759794a..a3759794a 100644 --- a/doc/hook/proc_run.bb +++ b/doc/en/hook/proc_run.bb diff --git a/doc/hook/process_channel_sync_delivery.bb b/doc/en/hook/process_channel_sync_delivery.bb index c0416c8cb..c0416c8cb 100644 --- a/doc/hook/process_channel_sync_delivery.bb +++ b/doc/en/hook/process_channel_sync_delivery.bb diff --git a/doc/hook/profile_advanced.bb b/doc/en/hook/profile_advanced.bb index 65e56afd6..65e56afd6 100644 --- a/doc/hook/profile_advanced.bb +++ b/doc/en/hook/profile_advanced.bb diff --git a/doc/hook/profile_edit.bb b/doc/en/hook/profile_edit.bb index e60663d4a..e60663d4a 100644 --- a/doc/hook/profile_edit.bb +++ b/doc/en/hook/profile_edit.bb diff --git a/doc/hook/profile_photo_content_end.bb b/doc/en/hook/profile_photo_content_end.bb index 518415c4d..518415c4d 100644 --- a/doc/hook/profile_photo_content_end.bb +++ b/doc/en/hook/profile_photo_content_end.bb diff --git a/doc/hook/profile_post.bb b/doc/en/hook/profile_post.bb index d22d8fbc7..d22d8fbc7 100644 --- a/doc/hook/profile_post.bb +++ b/doc/en/hook/profile_post.bb diff --git a/doc/hook/profile_sidebar.bb b/doc/en/hook/profile_sidebar.bb index bfd059e4b..bfd059e4b 100644 --- a/doc/hook/profile_sidebar.bb +++ b/doc/en/hook/profile_sidebar.bb diff --git a/doc/hook/profile_sidebar_enter.bb b/doc/en/hook/profile_sidebar_enter.bb index 9d6726a30..9d6726a30 100644 --- a/doc/hook/profile_sidebar_enter.bb +++ b/doc/en/hook/profile_sidebar_enter.bb diff --git a/doc/hook/register_account.bb b/doc/en/hook/register_account.bb index df4de2b30..df4de2b30 100644 --- a/doc/hook/register_account.bb +++ b/doc/en/hook/register_account.bb diff --git a/doc/hook/render_location.bb b/doc/en/hook/render_location.bb index 41501c087..41501c087 100644 --- a/doc/hook/render_location.bb +++ b/doc/en/hook/render_location.bb diff --git a/doc/hook/replace_macros.bb b/doc/en/hook/replace_macros.bb index fac39dd7b..fac39dd7b 100644 --- a/doc/hook/replace_macros.bb +++ b/doc/en/hook/replace_macros.bb diff --git a/doc/hook/reverse_magic_auth.bb b/doc/en/hook/reverse_magic_auth.bb index 4cbd84b93..4cbd84b93 100644 --- a/doc/hook/reverse_magic_auth.bb +++ b/doc/en/hook/reverse_magic_auth.bb diff --git a/doc/hook/settings_form.bb b/doc/en/hook/settings_form.bb index d65341181..d65341181 100644 --- a/doc/hook/settings_form.bb +++ b/doc/en/hook/settings_form.bb diff --git a/doc/hook/settings_post.bb b/doc/en/hook/settings_post.bb index f72546c11..f72546c11 100644 --- a/doc/hook/settings_post.bb +++ b/doc/en/hook/settings_post.bb diff --git a/doc/hook/sexpref_selector.bb b/doc/en/hook/sexpref_selector.bb index b4dad6b38..b4dad6b38 100644 --- a/doc/hook/sexpref_selector.bb +++ b/doc/en/hook/sexpref_selector.bb diff --git a/doc/hook/sexpref_selector_min.bb b/doc/en/hook/sexpref_selector_min.bb index 6f49946af..6f49946af 100644 --- a/doc/hook/sexpref_selector_min.bb +++ b/doc/en/hook/sexpref_selector_min.bb diff --git a/doc/hook/smilie.bb b/doc/en/hook/smilie.bb index 575acc178..575acc178 100644 --- a/doc/hook/smilie.bb +++ b/doc/en/hook/smilie.bb diff --git a/doc/hook/status_editor.bb b/doc/en/hook/status_editor.bb index 00e97a7c9..00e97a7c9 100644 --- a/doc/hook/status_editor.bb +++ b/doc/en/hook/status_editor.bb diff --git a/doc/hook/stream_item.bb b/doc/en/hook/stream_item.bb index 30086961d..30086961d 100644 --- a/doc/hook/stream_item.bb +++ b/doc/en/hook/stream_item.bb diff --git a/doc/hook/system_app_installed_filter.bb b/doc/en/hook/system_app_installed_filter.bb index a269a79a8..a269a79a8 100644 --- a/doc/hook/system_app_installed_filter.bb +++ b/doc/en/hook/system_app_installed_filter.bb diff --git a/doc/hook/tagged.bb b/doc/en/hook/tagged.bb index 05d081d07..05d081d07 100644 --- a/doc/hook/tagged.bb +++ b/doc/en/hook/tagged.bb diff --git a/doc/hook/update_unseen.bb b/doc/en/hook/update_unseen.bb index 8fb02c239..8fb02c239 100644 --- a/doc/hook/update_unseen.bb +++ b/doc/en/hook/update_unseen.bb diff --git a/doc/hook/validate_channelname.bb b/doc/en/hook/validate_channelname.bb index 2ab12bbec..2ab12bbec 100644 --- a/doc/hook/validate_channelname.bb +++ b/doc/en/hook/validate_channelname.bb diff --git a/doc/hook/webfinger.bb b/doc/en/hook/webfinger.bb index 7cc24322f..7cc24322f 100644 --- a/doc/hook/webfinger.bb +++ b/doc/en/hook/webfinger.bb diff --git a/doc/hook/well_known.bb b/doc/en/hook/well_known.bb index 778b27a02..778b27a02 100644 --- a/doc/hook/well_known.bb +++ b/doc/en/hook/well_known.bb diff --git a/doc/hook/wiki_preprocess.bb b/doc/en/hook/wiki_preprocess.bb index 913b601ba..913b601ba 100644 --- a/doc/hook/wiki_preprocess.bb +++ b/doc/en/hook/wiki_preprocess.bb diff --git a/doc/hook/zid.bb b/doc/en/hook/zid.bb index 2210c1342..2210c1342 100644 --- a/doc/hook/zid.bb +++ b/doc/en/hook/zid.bb diff --git a/doc/hook/zid_init.bb b/doc/en/hook/zid_init.bb index 131dd8f72..131dd8f72 100644 --- a/doc/hook/zid_init.bb +++ b/doc/en/hook/zid_init.bb diff --git a/doc/hook/zot_best_algorithm.bb b/doc/en/hook/zot_best_algorithm.bb index ccde505cb..ccde505cb 100644 --- a/doc/hook/zot_best_algorithm.bb +++ b/doc/en/hook/zot_best_algorithm.bb diff --git a/doc/hook/zot_finger.bb b/doc/en/hook/zot_finger.bb index 9383b4c31..9383b4c31 100644 --- a/doc/hook/zot_finger.bb +++ b/doc/en/hook/zot_finger.bb diff --git a/doc/hooklist.bb b/doc/en/hooklist.bb index 7231cd185..7231cd185 100644 --- a/doc/hooklist.bb +++ b/doc/en/hooklist.bb diff --git a/doc/hooks.html b/doc/en/hooks.html index a7ee314e7..a7ee314e7 100644 --- a/doc/hooks.html +++ b/doc/en/hooks.html diff --git a/doc/intro_for_developers.bb b/doc/en/intro_for_developers.bb index 172008b7f..172008b7f 100644 --- a/doc/intro_for_developers.bb +++ b/doc/en/intro_for_developers.bb diff --git a/doc/macros/addons_footer.bb b/doc/en/macros/addons_footer.bb index 32814c59b..32814c59b 100644 --- a/doc/macros/addons_footer.bb +++ b/doc/en/macros/addons_footer.bb diff --git a/doc/macros/cloud_footer.bb b/doc/en/macros/cloud_footer.bb index 798cc9ea6..798cc9ea6 100644 --- a/doc/macros/cloud_footer.bb +++ b/doc/en/macros/cloud_footer.bb diff --git a/doc/macros/de/addons_footer.bb b/doc/en/macros/de/addons_footer.bb index 068bb7ec7..068bb7ec7 100644 --- a/doc/macros/de/addons_footer.bb +++ b/doc/en/macros/de/addons_footer.bb diff --git a/doc/macros/de/cloud_footer.bb b/doc/en/macros/de/cloud_footer.bb index 921448a3c..921448a3c 100644 --- a/doc/macros/de/cloud_footer.bb +++ b/doc/en/macros/de/cloud_footer.bb diff --git a/doc/macros/de/main_footer.bb b/doc/en/macros/de/main_footer.bb index e71603626..e71603626 100644 --- a/doc/macros/de/main_footer.bb +++ b/doc/en/macros/de/main_footer.bb diff --git a/doc/macros/de/troubleshooting_footer.bb b/doc/en/macros/de/troubleshooting_footer.bb index be8c13a28..be8c13a28 100644 --- a/doc/macros/de/troubleshooting_footer.bb +++ b/doc/en/macros/de/troubleshooting_footer.bb diff --git a/doc/macros/main_footer.bb b/doc/en/macros/main_footer.bb index 08f671ded..08f671ded 100644 --- a/doc/macros/main_footer.bb +++ b/doc/en/macros/main_footer.bb diff --git a/doc/macros/pl/addons_footer.bb b/doc/en/macros/pl/addons_footer.bb index 79ac0a71c..79ac0a71c 100644 --- a/doc/macros/pl/addons_footer.bb +++ b/doc/en/macros/pl/addons_footer.bb diff --git a/doc/macros/pl/cloud_footer.bb b/doc/en/macros/pl/cloud_footer.bb index 48628ae1a..48628ae1a 100644 --- a/doc/macros/pl/cloud_footer.bb +++ b/doc/en/macros/pl/cloud_footer.bb diff --git a/doc/macros/pl/main_footer.bb b/doc/en/macros/pl/main_footer.bb index 8bf25fed5..8bf25fed5 100644 --- a/doc/macros/pl/main_footer.bb +++ b/doc/en/macros/pl/main_footer.bb diff --git a/doc/macros/pl/troubleshooting_footer.bb b/doc/en/macros/pl/troubleshooting_footer.bb index 19328ad64..19328ad64 100644 --- a/doc/macros/pl/troubleshooting_footer.bb +++ b/doc/en/macros/pl/troubleshooting_footer.bb diff --git a/doc/macros/troubleshooting_footer.bb b/doc/en/macros/troubleshooting_footer.bb index c7603a62b..c7603a62b 100644 --- a/doc/macros/troubleshooting_footer.bb +++ b/doc/en/macros/troubleshooting_footer.bb diff --git a/doc/en/member/assets/bookmarker-save-icon.png b/doc/en/member/assets/bookmarker-save-icon.png Binary files differnew file mode 100644 index 000000000..6a7c10eb9 --- /dev/null +++ b/doc/en/member/assets/bookmarker-save-icon.png diff --git a/doc/en/member/assets/bookmarks-menu-dropdown.png b/doc/en/member/assets/bookmarks-menu-dropdown.png Binary files differnew file mode 100644 index 000000000..137ae52ad --- /dev/null +++ b/doc/en/member/assets/bookmarks-menu-dropdown.png diff --git a/doc/en/member/assets/privacy-group-tool-public.png b/doc/en/member/assets/privacy-group-tool-public.png Binary files differnew file mode 100644 index 000000000..828cb6411 --- /dev/null +++ b/doc/en/member/assets/privacy-group-tool-public.png diff --git a/doc/en/member/assets/privacy-tool-3.png b/doc/en/member/assets/privacy-tool-3.png Binary files differnew file mode 100644 index 000000000..ba896403d --- /dev/null +++ b/doc/en/member/assets/privacy-tool-3.png diff --git a/doc/member/assets/qr_text_to_post.png b/doc/en/member/assets/qr_text_to_post.png Binary files differindex 887c85492..887c85492 100644 --- a/doc/member/assets/qr_text_to_post.png +++ b/doc/en/member/assets/qr_text_to_post.png diff --git a/doc/member/assets/zat_dialog.png b/doc/en/member/assets/zat_dialog.png Binary files differindex 892964e95..892964e95 100644 --- a/doc/member/assets/zat_dialog.png +++ b/doc/en/member/assets/zat_dialog.png diff --git a/doc/member/bbcode.html b/doc/en/member/bbcode.html index e3e079b4d..e3e079b4d 100644 --- a/doc/member/bbcode.html +++ b/doc/en/member/bbcode.html diff --git a/doc/member/member_faq.bb b/doc/en/member/member_faq.bb index 9533cb557..9533cb557 100644 --- a/doc/member/member_faq.bb +++ b/doc/en/member/member_faq.bb diff --git a/doc/member/member_guide.bb b/doc/en/member/member_guide.bb index 2b772d1c5..e3d62a4b5 100644 --- a/doc/member/member_guide.bb +++ b/doc/en/member/member_guide.bb @@ -46,17 +46,17 @@ In short, a channel that represents yourself is "me, on the internet". [h3]Channel Permission Roles[/h3] -When you create a new channel, you will be asked to select a permission role based on how you envision using this channel. The most popular permission roles are the Social Networking roles. You have many other choices, providing options which are analagous to Facebook Groups and Pages, collaborative spaces, newsfeeds, and more. These roles automatically configure several different system variables ranging from what permissions are granted to friends, to your default privacy settings and visibility choices. Advanced configurations are available to let you adjust each of these parameters to your needs, but we've found that most people prefer to "set it and forget it". Thew following describes some of the different roles which are currently available and how they impact your privacy and ability to interact. +When you create a new channel, you will be asked to select a permission role based on how you envision using this channel. The most popular permission roles are the Social Networking roles. You have many other choices, providing options which are analagous to Facebook Groups and Pages, collaborative spaces, newsfeeds, and more. These roles automatically configure several different system variables ranging from what permissions are granted to friends, to your default privacy settings and visibility choices. Advanced configurations are available to let you adjust each of these parameters to your needs, but we've found that most people prefer to "set it and forget it". Thew following describes some of the different roles which are currently available and how they impact your privacy and ability to interact. [h4]Social[/h4] [b]Federation[/b] -The channel is a very permissive social networking profile which is compatible with other federated social networks. The permission policies are similar to Twitter and mostly compatible with Diaspora and Mastodon. Privacy is a lower priority than ease of access and connecting with others. Anybody in the network can comment on your public posts and send you private mail. By default posts and published items are public, but you can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others. This mode [i]may[/i] increase your exposure to undesired communications and spam. This role is not generally recommended [i]unless[/i] you need to interact regularly with members of other networks. +The channel is a very permissive social networking profile which is compatible with other federated social networks. The permission policies are similar to Twitter and mostly compatible with Diaspora and Mastodon. Privacy is a lower priority than ease of access and connecting with others. Anybody in the network can comment on your public posts and send you private mail. By default posts and published items are public, but you can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others. This mode [i]may[/i] increase your exposure to undesired communications and spam. This role is not generally recommended [i]unless[/i] you need to interact regularly with members of other networks. [b]Mostly Public[/b] -The channel is a typical social networking profile. By default posts and published items are public, but you can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others. Only your immediate connections can comment on your public posts and send you private mail. The permission policies are similar to Facebook. +The channel is a typical social networking profile. By default posts and published items are public, but you can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others. Only your immediate connections can comment on your public posts and send you private mail. The permission policies are similar to Facebook. [b]Restricted[/b] @@ -65,7 +65,7 @@ By default all posts and published items are sent to your 'Friends' privacy grou [b]Private[/b] -By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. You can over-ride this and create a public post or public item if you desire. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. +By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. You can over-ride this and create a public post or public item if you desire. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. [h4]Forum[/h4] @@ -77,11 +77,11 @@ The channel is a typical forum. By default posts and published items are public. [b]Restricted[/b] -By default all posts and published items are sent to the channel's 'Friends' privacy group. New friends are added to this privacy group. Members may post by !mention or wall-to-wall post, but posts and replies may also be seen by other receipients of the top-level post who are not members. The channel is visible in the directory. Members must be manually added by the forum owner. +By default all posts and published items are sent to the channel's 'Friends' privacy group. New friends are added to this privacy group. Members may post by !mention or wall-to-wall post, but posts and replies may also be seen by other receipients of the top-level post who are not members. The channel is visible in the directory. Members must be manually added by the forum owner. [b]Private[/b] -By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. The owner can over-ride this and create a public post or public item if desired. Members cannot. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. Members must be manually added by the forum owner. Posting by !mention is disabled. Posts can only be made via wall-to-wall posts, and sent to members of the 'Friends' privacy group. They are not publicly visible. +By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. The owner can over-ride this and create a public post or public item if desired. Members cannot. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. Members must be manually added by the forum owner. Posting by !mention is disabled. Posts can only be made via wall-to-wall posts, and sent to members of the 'Friends' privacy group. They are not publicly visible. [h4]Feed[/h4] @@ -89,29 +89,29 @@ By default all posts and published items are sent to your 'Friends' privacy grou [b]Public[/b] -Similiar to Social - Mostly Public, but tailored for RSS feed sources. Items may be freely republished and sourced. Online presence is meaningless, therefore hidden. New connections are automatically approved. +Similiar to Social - Mostly Public, but tailored for RSS feed sources. Items may be freely republished and sourced. Online presence is meaningless, therefore hidden. New connections are automatically approved. [b]Restricted[/b] -Not listed in directory. Online presence is meaningless, therefore hidden. Feed is published only to members of the 'Friends' privacy group. New connections are automatically added to this privacy group. Members must be manually approved by the channel owner. +Not listed in directory. Online presence is meaningless, therefore hidden. Feed is published only to members of the 'Friends' privacy group. New connections are automatically added to this privacy group. Members must be manually approved by the channel owner. [h4]Special[/h4] [b]Celebrity/Soapbox[/b] -Listed in directory. Communications are by default public. Online presence is hidden. No commenting or feedback of any form is allowed, though connections have the ability to "like" your profile. +Listed in directory. Communications are by default public. Online presence is hidden. No commenting or feedback of any form is allowed, though connections have the ability to "like" your profile. [b]Group Repository[/b] -A public forum which allows members to post files/photos/webpages. +A public forum which allows members to post files/photos/webpages. [h4]Custom/Expert Mode[/h4] -Set all the privacy and permissions manually to suit your specific needs. +Set all the privacy and permissions manually to suit your specific needs. [h3]Creating channels[/h3] @@ -184,17 +184,17 @@ First, you need to find some channels to connect to. There are two primary ways The next thing you can do is look at the Directory. The directory is available on every $Projectname website which means searching from your own site will bring in results from the entire network. You can search by name, interest, location, and keyword. -If you already know somebody's 'webbie' you can connect with them directly. A webbie looks just like an email address (for instance bob@example.com) but refers to somebody in the open social web. In order to connect they must be using a compatible network protocol. By default, this software supports the 'zot' protocol, however additional protocols may be provided through plugins/addons. See below for more information on connecting to channels on other networks. +If you already know somebody's 'webbie' you can connect with them directly. A webbie looks just like an email address (for instance bob@example.com) but refers to somebody in the open social web. In order to connect they must be using a compatible network protocol. By default, this software supports the 'zot' protocol, however additional protocols may be provided through plugins/addons. See below for more information on connecting to channels on other networks. To connect with other $Projectname channels: -Visit their profile by clicking their photograph in the directory, matrix, or comments, and it will open their channel home page in the channel viewer. At the left hand side of the screen, you will usually see a link called "connect". Click it, and you're done. Depending on the settings of the channel you are connecting to, you may need to wait for them to approve your connection, but no further action is needed on your part. Once you've initiated the connection, you will be taken to the connection editor. This allows you to assign specific permissions for this channel if you wish to make any changes. +Visit their profile by clicking their photograph in the directory, matrix, or comments, and it will open their channel home page in the channel viewer. At the left hand side of the screen, you will usually see a link called "connect". Click it, and you're done. Depending on the settings of the channel you are connecting to, you may need to wait for them to approve your connection, but no further action is needed on your part. Once you've initiated the connection, you will be taken to the connection editor. This allows you to assign specific permissions for this channel if you wish to make any changes. You may also connect with any channel by visiting the "Connections" page of your site or the Directory and typing their "webbie" into the "Add New Connection" field. Use this method if somebody tells you their webbie and you wish to connect with them. The process is the same as connecting via the "Connect" button - you will then be taken to the connection editor to set permissions. To connect with channels on other networks: -The process for connecting to channels on other networks (such as GNU-Social, Mastodon, and Diaspora) is similar - type their "webbie" into the "Add New Connections" box on the "Connections" page. Before you do this however, please visit your Settings page (Feature/Addon Settings) and ensure that the relevant protocol (Diaspora, GNU-Social/OStatus, or ActivityPub) is provided on your hub and [b][i]activated[/i] for your channel[/b]. These networks/protocols do not support account migration and location independence so if you move location or clone your channel elsewhere, communications with these connections may fail. For this reason these protocols are not activated by default, but only through your consent. Activating these protocols involves an important decision between communicating with friends on these networks or providing fail-safe account resilience if your server fails. +The process for connecting to channels on other networks (such as GNU-Social, Mastodon, and Diaspora) is similar - type their "webbie" into the "Add New Connections" box on the "Connections" page. Before you do this however, please visit your Settings page (Feature/Addon Settings) and ensure that the relevant protocol (Diaspora, GNU-Social/OStatus, or ActivityPub) is provided on your hub and [b][i]activated[/i] for your channel[/b]. These networks/protocols do not support account migration and location independence so if you move location or clone your channel elsewhere, communications with these connections may fail. For this reason these protocols are not activated by default, but only through your consent. Activating these protocols involves an important decision between communicating with friends on these networks or providing fail-safe account resilience if your server fails. Some communications offer more than one protocol. If you wish to connect with somebody on Mastodon (for instance) they can use either the 'ostatus' or the 'activitypub' protocol for communication. Generally the 'activitypub' protocol will provide a better experience than 'ostatus', but $Projectname will often choose the first protocol it discovers and this may not be the one you want. You may connect with somebody over a specific protocol by prepending the protocol name in square brackets to their "webbie". For example @@ -209,7 +209,7 @@ Some communications offer more than one protocol. If you wish to connect with so To connect with RSS feeds: -Your hub admin may allow connecting to RSS feeds. The process for connecting to an RSS feed is the same, exept type (or paste) the URL of the feed into the "Add New Connection" box. Feeds are only processed once or twice per day and your hub admin may impose limits on how many feeds you may add. +Your hub admin may allow connecting to RSS feeds. The process for connecting to an RSS feed is the same, exept type (or paste) the URL of the feed into the "Add New Connection" box. Feeds are only processed once or twice per day and your hub admin may impose limits on how many feeds you may add. [h4]Block/Ignore/Archive/Hide channels [/h4] @@ -234,7 +234,7 @@ Permissions in $Projectname are more complete than you may be used to. This allo [h4]Permission Roles[/h4] -When you create a channel we allow you to select different 'roles' for that channel. These create an entire family of permissions and privacy settings that are appropriate for that role. Typical roles are "Social - mostly public", "Social - mostly private", "Forum - public" and many others. These bring a level of simplicity to managing permissions. Just choose a role and appropriate permissions are automatically applied. You can also choose 'Custom/Expert mode' and change any individual permission setting in any way you desire. +When you create a channel we allow you to select different 'roles' for that channel. These create an entire family of permissions and privacy settings that are appropriate for that role. Typical roles are "Social - mostly public", "Social - mostly private", "Forum - public" and many others. These bring a level of simplicity to managing permissions. Just choose a role and appropriate permissions are automatically applied. You can also choose 'Custom/Expert mode' and change any individual permission setting in any way you desire. [h4]Default Permission Limits[/h4] @@ -242,8 +242,8 @@ When you create a channel we allow you to select different 'roles' for that chan There are a large number of individual permissions. These control everything from the ability to view your stream to the ability to chat with you. Every permission has a limit. The scope of these permissions varies from "Only me" to "Everybody on the internet" - though some scopes may not be available for some permissions. The limit applies to any published thing you create which has no privacy or access control. For example if you publish a photo and didn't select a specific audience with permission to view it, we apply the limit. These limits apply to everything within that permission rule, so you cannot apply a limit to one photo. The limit applies to all your photos. If all your photos are visible to everybody on the internet and you reduce the limit only to friends, [b]all[/b] of your photos will now be visible only to friends. [h4]Access Control[/h4] - -Access Control is the preferred method of managing privacy in [i]most[/i] cases, rather than using permission limits. This creates lists of either connections or privacy groups (or both) and uses the access list to decide if a permission is allowed. An access list is attached to everything you publish. Unlike permission limits, if you change the access control list on a single photo, it doesn't affect any of your other photos. You can use privacy groups and a "default access control list" to create and automate the management of access control lists to provide any level of privacy you desire on anything you publish. + +Access Control is the preferred method of managing privacy in [i]most[/i] cases, rather than using permission limits. This creates lists of either connections or privacy groups (or both) and uses the access list to decide if a permission is allowed. An access list is attached to everything you publish. Unlike permission limits, if you change the access control list on a single photo, it doesn't affect any of your other photos. You can use privacy groups and a "default access control list" to create and automate the management of access control lists to provide any level of privacy you desire on anything you publish. We highly recommend that you use the "typical social network" settings when you create your first channel, as it allows others to communicate with you and help you out if you have difficulty. You will find that these settings allow you as much privacy as you desire - when you desire it; but also allow you to communicate in public if you choose to. You are free to use much more private settings once you have learned your way around. @@ -252,17 +252,17 @@ We highly recommend that you use the "typical social network" settings when you [*= The scopes of permissions are:] [dl terms="i"] [*= Nobody Except Yourself ] This is self explanatory. Only you will be allowed access. - + [*= Only those you specifically allow ] By default, people you are not connected to, and all new contacts will have this permission denied. You will be able to make exceptions for individual channels on their contact edit screen. - + [*= Anybody in your address book ] Anybody you do not know will have this permission denied, but anybody you accept as a contact will have this permission approved. This is the way most legacy platforms handle permissions. - + [*= Anybody On This Hub ] Anybody with a channel on the same hub/website as you will have permission approved. Anybody who is registered at a different hub will have this permission denied. - + [*= Anybody in this network ] Anybody in $Projectname will have this permission approved. Even complete strangers. However, anybody not logged in/authenticated will have this permission denied. - + [*= Anybody authenticated ] This is similar to "anybody in this network" except that it can include anybody who can authenticate by any means - and therefore [i]may[/i] include visitors from other networks. - + [*=Guest Access Token] This allows you to share a file, folder, photo, album, or channel with a specific person or group of people. They don't need to be $Projectname members. You can set an expiration for the Access Token. [*= Anybody on the internet ] Completely public. This permission will be approved for anybody at all. @@ -279,7 +279,7 @@ We highly recommend that you use the "typical social network" settings when you [*= Can view my "public" file storage. ] This permission determines who can view your public files stored in your cloud. - [*= Can view my "public" pages. ] This permission determines who can view your public web pages. + [*= Can view my "public" pages. ] This permission determines who can view your public web pages. [*= Can send me their channel stream and posts. ] This permission determines whose posts you will view. If your channel is a personal channel (ie, you as a person), you would probably want to set this to "anyone in my address book" at a minimum. A personal notes channel would probably want to choose "nobody except myself". Setting this to "Anybody in the network" will show you posts from complete strangers, which is a good form of discovery. @@ -334,50 +334,63 @@ $Projectname supports several markup languages for advanced formatting of conten [/table] [h3]Tags And Mentions[/h3] -Like many other platforms, $Projectname uses a special notation inside messages to indicate "tags" or contextual links to other entities. [h4]Mentions[/h4] -Channels are tagged by simply preceding their name with the @ character. +You can mention a channel by simply preceding their name with the [code]@[/code] character, like this: [code] @Jack [/code] -When you start to mention somebody, it will create an auto-complete box to select from your immediate connections. Select one as appropriate. +If the channel mentioned is in the list of recipients for the post or comment, they will receive a notification, bringing it to their attention. If they're [i]not[/i] among the recipients, the tag will simply work as a link to their profile. + +When you begin to mention somebody, it will create an auto-complete box to select from [u]your immediate connections[/u](?). Select one as appropriate. -If the person mentioned is in the list of recipients for the post, they will receive a tag notification. -[h4]Deliverable Mentions[/h4] +[h4]Private Mentions[/h4] +If you wish to restrict a post to a single—or only a few—channels you can do this by selecting channels or privacy groups from the privacy tool. -The [b]![/b] character designates a deliverable mention to a forum or special channel which allows "re-delivery of mentions". +[img=[baseurl]/help/en/member/assets/privacy-tool-3.png]Two views of the permissions dialogue. To the left: Selecing a single privacy group or forum as recipients for the post. To the right: Using the 'Custom selection' view to gain fine grained control over the recipients.[/img] -[code] -@Gardening - mention the Gardening forum -[/code] +You can also just tag a channel with a [i]privacy tag[/i]. -[code] -!Gardening - mention the Gardening Forum and also post to the Gardening "network" (e.g. send to all the forum members; if you have permission to do so) -[/code] +A privacy tag is a channel name preceded by the two characters [code]@![/code]. This will also change the privacy permissions of the post to only include the tagged channel. You can use more than one privacy tag, for instance [code]@!bob and @!linda[/code] will send the post only to Bob and Linda. This mechanism over-rides the privacy selector. -Note: In previous releases, forums were delivered by using @forum+ with a plus sign at the end. This mechanism is no longer supported. +[h4]Mentioning forums[/h4] -[h4]Private Mentions[/h4] -If you wish to restrict a post to a single person or a number of people, you can do this by selecting channels or privacy groups from the privacy tool. You can also just tag them with a privacy tag. A privacy tag is a name preceded by the two characters @! - and in addition to tagging these channels, will also change the privacy permissions of the post to only include them. You can have more than one privacy tag, for instance @!bob and @!linda will send the post only to Bob and Linda. This mechanism over-rides the privacy selector. +Forums may be mentioned in the same way. [code]@!dogs[/code] will post to the dogs forum privately. The forum will redeliver the post to all the forum members, but your own followers will not see the post unless they are also members of the dogs forum. + +[size=small][b]Note:[/b] In previous releases you could mention a forum by prefixing the forum name with the characters [code]!![/code]. This is no longer supported. The correct way to send to a forum is by using the [code]@![/code] tag.[/size] + +[h4]Mentioning privacy groups[/h4] -Forums may be mentioned in the same way. !!dogs will post to the dogs forum privately. The forum will redeliver the post to all the forum members, but your own followers will not see the post unless they are also members of the dogs forum. +You may also tag privacy groups which are "public". -You may also tag privacy groups which are "public". When you create or edit a privacy group, there is a checkbox to allow the group members to be seen by others. If this box is checked for a group and you tag (for instance) @!Friends - the post will be restricted to the Friends group. Check that the group is public before doing this - as there is no way to take back a post except to delete it. The group name will appear in the post and will alert members of that group that they are members of it. +When you create or edit a privacy group, there is a checkbox to allow the group members to be seen by others. If this box is checked for a group and you tag (for instance) [code]@!Friends[/code] - the post will be restricted to the Friends group. Check that the group is public before doing this - as there is no way to take back a post except to delete it. The group name will appear in the post and will alert members of that group that they are members of it. + +Set the privacy group visible to others to make it public: +[img=[baseurl]/help/en/member/assets/privacy-group-tool-public.png]The privacy group tool with 'Members are visible to other channels' set to 'yes'.[/img] + +To add or edit privacy groups, you need to have the [url=[baseurl]/group]Privacy Groups app[/url] installed. [h4]Mentions and Comments[/h4] -The above mechanisms only apply to "top-level" posts you create. Mentioning a channel with any of the above mechanisms has no effect in comments, except that the mentioned channel may receive a notification if they were already included as a recipient in the conversation. +The above mechanisms only apply to "top-level" posts you create. Mentioning a channel with any of the above mechanisms has no effect in comments, except that the mentioned channel may receive a notification if they were already included as a recipient in the conversation. [h4]Topical Tags (also known as Hashtags)[/h4] -Topical tags are indicated by preceding the tag name with the # character. This will create a link in the post to a generalised site search for the term provided. For example, #[zrl=[baseurl]/search?tag=cars]cars[/zrl] will provide a search link for all posts mentioning 'cars' on your site. Topical tags are generally a minimum of three characters in length. Shorter search terms are not likely to yield any search results, although this depends on the database configuration. +Topical tags are indicated by preceding the tag name with the [code]#[/code] character. This will create a link in the post to a generalised site search for the term provided. For example, #[zrl=[baseurl]/search?tag=cars]cars[/zrl] will provide a search link for all posts tagged with '[code]#cars[/code]' on your site. Topical tags are generally a minimum of three characters in length. Shorter search terms are not likely to yield any search results, although this depends on the database configuration. -Topical tags are also not normally linked if they are purely numeric, e.g. #1. If you wish to use a numeric hashtag, please add some descriptive text such as #2012-elections or enclose the entire tag in double quotes (for example #"2012"). Doubles quotes are also required if the tag contains spaces (#"My Tag") and may be required if the tag contains punctuation characters (#"EndsWithPeriod." or #"Exciting!!!"). +Topical tags are also not normally linked if they are purely numeric, e.g. [code]#1[/code]. If you wish to use a numeric hashtag, please add some descriptive text such as [code]#2012-elections[/code] or enclose the entire tag in double quotes (for example [code]#"2012"[/code]). Doubles quotes are also required if the tag contains spaces ([code]#"My Tag"[/code]) and may be required if the tag contains punctuation characters ([code]#"EndsWithPeriod."[/code] or [code]#"Exciting!!!"[/code]). [h4]Bookmarks[/h4] -Bookmarks indicate a link which can be saved to your bookmark folder. They use the sequence #^ followed by the link. Often these are generated automatically. If the 'bookmarker' addon is installed, this sequence will be converted to a bookmark icon when viewing the post or comment online, and clicking the icon will save the bookmark. If the bookmarker addon is not installed, the post 'dropdown menu' contains a link for saving the bookmark or bookmarks. +Bookmarks indicate a link which can be saved to your bookmark folder. They use the sequence [code]#^[/code] followed by the link. Often these are generated automatically. + +[img=[baseurl]/help/en/member/assets/bookmarker-save-icon.png]Saving a bookmark by clicking the bookmark icon when the 'bookmarker' addon is enabled.[/img] + +If the site administrator has enabled the [url=[baseurl]/admin/addons/bookmarker]bookmarker[/url] addon for the site, this sequence will be converted to a bookmark icon when viewing the post or comment online. Clicking the icon will save the bookmark. + +Otherwise if the [url=[baseurl]/bookmarks]Bookmarks app[/url] is installed for the channel, the post dropdown menu contains a link for saving the bookmark or bookmarks. + +[img=[baseurl]/help/en/member/assets/bookmarks-menu-dropdown.png]A post with a bookmark, showing the dropdown menu.[/img] [h4]Manual Mentions[/h4] Where possible please use the auto-complete window to select tag and mention recipients, because it will generate a coded tag which uniquely identifies one channel. Names are sometimes ambiguous. However, you can "manually" tag a channel by matching the channel name or address. @@ -386,7 +399,7 @@ Where possible please use the auto-complete window to select tag and mention rec @billy [/code] -will tag a connection whose name or network address is 'billy' (exact match). If you have two connections with a name or network address of billy, for instance billy@server1.hubzilla.org and billy@server2.hubzilla2.org, you will need to supply the complete address or the results will be ambiguous and the wrong person may be tagged. +will tag a connection whose name or network address is 'billy' (exact match). If you have two connections with a name or network address of billy, for instance [code]billy@server1.hubzilla.org[/code] and [code]billy@server2.hubzilla2.org[/code], you will need to supply the complete address or the results will be ambiguous and the wrong person may be tagged. [code] @"Robert Johnson" @@ -401,10 +414,10 @@ $Projectname allows members and allowed connections to create static webpages. Once enabled, a new tab will appear on your channel page labeled "Webpages". Clicking this link will take you to the webpage editor. Pages will be accessible at [b][baseurl]/page/[observer=1][observer.webname][/observer][observer=0]channelname[/observer]/pagelinktitle[/b] -The "page link title" box allows you to specify the "pagelinktitle" of this URL. If no page link title is set, we will set one for you automatically, using the message ID of the item. +The "page link title" box allows you to specify the "pagelinktitle" of this URL. If no page link title is set, we will set one for you automatically, using the message ID of the item. Beneath the page creation box, a list of existing pages will appear with an "edit" link. Clicking this will take you to an editor, similar to that of the post editor, where you can make changes to your webpages. - + [h4]Using Blocks[/h4] Blocks can be parts of webpages. The basic HTML of a block looks like this @@ -417,7 +430,7 @@ Blocks can be parts of webpages. The basic HTML of a block looks like this If a block has text/html content type it can also contain menu elements. Sample content of [code] - <p>HTML block content</p> + <p>HTML block content</p> [menu]menuname[/menu] [/code] @@ -484,7 +497,7 @@ will produce this HTML There are two methods of importing webpage elements: uploading a zip file or referencing a local cloud files folder. Both methods require that the webpage elements are specified using a specific folder structure. The import tool makes it possible to import all the elements necessary to construct an entire website or set of websites. The goal is to accommodate external development of webpages as well as tools to simplify and automate deployment on a hub. [h5] Folder structure [/h5] -Element definitions must be stored in the repo root under folders called +Element definitions must be stored in the repo root under folders called [code] /pages/ /blocks/ @@ -502,15 +515,15 @@ Page element metadata is specified in a JSON-formatted file called [code]page.js [*] layout [*] contentfile [/list] -[b]Example[/b] +[b]Example[/b] -Files: -[code] +Files: +[code] /pages/my-page/page.json /pages/my-page/my-page.bbcode -[/code] +[/code] Content of [code]page.json[/code]: -[code] +[code] { "title": "My Page", "pagelink": "mypage", @@ -518,7 +531,7 @@ Content of [code]page.json[/code]: "layout": "my-layout", "contentfile": "my-page.bbcode" } -[/code] +[/code] [h5] Layout elements [/h5] Layout element metadata is specified in a JSON-formatted file called [code]layout.json[/code] with the following properties: @@ -527,13 +540,13 @@ Layout element metadata is specified in a JSON-formatted file called [code]layou [*] description [*] contentfile [/list] -[b]Example[/b] +[b]Example[/b] Files: [code] /layouts/my-layout/layout.json /layouts/my-layout/my-layout.bbcode -[/code] +[/code] Content of [code]layout.json[/code]: [code] { @@ -552,14 +565,14 @@ Block element metadata is specified in a JSON-formatted file called [code]block. [*] mimetype [*] contentfile [/list] -[b]Example[/b] +[b]Example[/b] Files: -[code] +[code] /blocks/my-block/block.json /blocks/my-block/my-block.html [/code] -Content of [code]block.json[/code]: +Content of [code]block.json[/code]: [code] { @@ -581,7 +594,7 @@ Currently there are five layout templates, unless your site provides additional [dl terms="b"] [*= default] -The default template defines a "nav" region across the top, "aside" as a fixed width sidebar, +The default template defines a "nav" region across the top, "aside" as a fixed width sidebar, "content" for the main content region, and "footer" for a page footer. [*= full] @@ -644,7 +657,7 @@ This will select the theme named "suckerberg". By default your channel [theme=passion]suckerberg[/theme] [/code] -This will select the theme named "suckerberg" and select the "passion" schema (theme variant). Alternatively it may be possible to use a condensed theme notation for this. +This will select the theme named "suckerberg" and select the "passion" schema (theme variant). Alternatively it may be possible to use a condensed theme notation for this. [code] [theme]suckerberg:passion[/theme] @@ -693,13 +706,13 @@ Your webpage creation tools allow you to create menus and blocks, in addition to [menu]mymenu[/menu] [/code] -This places the menu called "mymenu" at this location on the page, which must be inside a region. +This places the menu called "mymenu" at this location on the page, which must be inside a region. [code] [menu=horizontal]mymenu[/menu] [/code] -This places the menu called "mymenu" at this location on the page, which must be inside a region. Additionally it applies the "horizontal" class to the menu. "horizontal" is defined in the redbasic theme. It may or may not be available in other themes. +This places the menu called "mymenu" at this location on the page, which must be inside a region. Additionally it applies the "horizontal" class to the menu. "horizontal" is defined in the redbasic theme. It may or may not be available in other themes. [code] [menu][var=wrap]none[/var]mymenu[/menu] @@ -734,8 +747,8 @@ Widgets and arguments are specified with the 'widget' and 'var' tags. [/code] -This loads the "recent_visitors" widget and supplies it with the argument "count" set to "24". - +This loads the "recent_visitors" widget and supplies it with the argument "count" set to "24". + [h4]Comments[/h4] The 'comment' tag is used to delimit comments. These comments will not appear on the rendered page. @@ -760,7 +773,7 @@ You can use an 'if' construct to make decisions. These are currently based on sy [/code] - The 'else' clause is optional. + The 'else' clause is optional. Several tests are supported besides boolean evaluation. @@ -848,7 +861,7 @@ To delete attachments or change the permissions on the stored files, visit [obse [h4]Web Access[/h4] -Your files are visible on the web at the location [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] to anybody who is allowed to view them. If the viewer has sufficient privileges, they may also have the ability to create new files and folders/directories. This should only be used for smaller files and photos (up to a few megabytes) as it uses internal memory. For larger files (videos, music, etc.), please upload using WebDAV. These files may still be retrieved via web access. +Your files are visible on the web at the location [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] to anybody who is allowed to view them. If the viewer has sufficient privileges, they may also have the ability to create new files and folders/directories. This should only be used for smaller files and photos (up to a few megabytes) as it uses internal memory. For larger files (videos, music, etc.), please upload using WebDAV. These files may still be retrieved via web access. [h4]WebDAV access[/h4] @@ -909,8 +922,8 @@ Now you need to add any user you want to be able to mount dav to the davfs2 grou [code]usermod -aG davfs2 <DesktopUser>[/code] -[b]Note:[/b] on some systems the user group may be different, i.e. - "network" -on Arch Linux. If in doubt, check the davfs documentation for your +[b]Note:[/b] on some systems the user group may be different, i.e. - "network" +on Arch Linux. If in doubt, check the davfs documentation for your particular OS. Edit /etc/fstab @@ -925,7 +938,7 @@ Edit /etc/fstab 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 +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]/dav/ /home/bob/cloud davfs user,noauto,uid=bob,file_mode=600,dir_mode=700 0 1[/code] @@ -965,7 +978,7 @@ With some webservers and certain configurations, you may find davfs2 creating fi [code]nano /etc/davfs2/davfs2.conf[/code] -Your distribution will provide a sample configuration, and this file should already exist, however, most of it will be commented out with a # at the beginning of the line. +Your distribution will provide a sample configuration, and this file should already exist, however, most of it will be commented out with a # at the beginning of the line. First step is to remove locks. @@ -989,7 +1002,7 @@ Note, if you are already logged in to the web interface via Konqueror, you will Simply visit webdavs://example.com/dav after logging in to your hub, where "example.com" is the URL of your hub. -No further authentication is required if you are logged in to your hub in the normal manner. +No further authentication is required if you are logged in to your hub in the normal manner. Additionally, if one has authenticated at a different hub during their normal browser session, your identity will be passed to the cloud for these hubs too - meaning you can access any private files on any server, as long as you have permissions to see them, as long as you have visited that site earlier in your session. @@ -1023,13 +1036,13 @@ Once open you can set a bookmark. [h5]Server Notes[/h5] -Note: There have been reported issues with clients that use "chunked transfer encoding", which includes Apple iOS services, and also the "AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads often end up with files of zero size. This is caused by an incorrect implemention of chunked encoding in some current FCGI (fast-cgi) implementations. Apache running with PHP as a module does not have these issues, but when running under FCGI you may need to use alternative clients or use the web uploader. At the time of this writing the issue has been open and no updates provided for at least a year. If you encounter zero size files with other clients, please check the client notes; as there are occasional configuration issues which can also produce these symptoms. +Note: There have been reported issues with clients that use "chunked transfer encoding", which includes Apple iOS services, and also the "AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads often end up with files of zero size. This is caused by an incorrect implemention of chunked encoding in some current FCGI (fast-cgi) implementations. Apache running with PHP as a module does not have these issues, but when running under FCGI you may need to use alternative clients or use the web uploader. At the time of this writing the issue has been open and no updates provided for at least a year. If you encounter zero size files with other clients, please check the client notes; as there are occasional configuration issues which can also produce these symptoms. [h3]Saved Searches[/h3] -In order to quickly find information, the 'saved search' widget may be used. This widget may be presented as a sidebar tool on your network page and possibly from your channel page. It is differentiated from the 'navigation bar' search tool in that it does not search the entire site, but only the subset of information available to your channel. +In order to quickly find information, the 'saved search' widget may be used. This widget may be presented as a sidebar tool on your network page and possibly from your channel page. It is differentiated from the 'navigation bar' search tool in that it does not search the entire site, but only the subset of information available to your channel. -Additionally the search terms you provide may activate a one-time search or be saved in a list for re-use. Saving the search item also invokes the search in addition to adding it to the saved list (which is displayed below the search text entry box). Any item in the list may be discarded if it is no longer needed. +Additionally the search terms you provide may activate a one-time search or be saved in a list for re-use. Saving the search item also invokes the search in addition to adding it to the saved list (which is displayed below the search text entry box). Any item in the list may be discarded if it is no longer needed. The saved search widget will provide autocompletion of channels (the results are prefixed with '@'), and hashtags (prefixed with '#'). You do not need to enter these tags; although entering the desired tag will reduce the autocomplete results to only hold the relevant information. The behaviour maps as follows: @@ -1046,9 +1059,9 @@ The saved search widget will provide autocompletion of channels (the results are Select the 'Remove Channel' link on your channel settings page or visit the URL: - [baseurl]/removeme + [baseurl]/removeme -You will need to confirm your password and the channel you are currently logged into will be removed. +You will need to confirm your password and the channel you are currently logged into will be removed. [hl][i][b]This is irreversible.[/b][/i][/hl] @@ -1059,8 +1072,8 @@ If you have identity clones on other hubs this only removes by default the chan Select 'Remove Account' from your account settings page or visit the URL: [baseurl]/removeaccount - -You will need to confirm your password and the account you are currently logged into will be removed. + +You will need to confirm your password and the account you are currently logged into will be removed. [hl][i][b]This is irreversible.[/b][/i][/hl] diff --git a/doc/plugins.bb b/doc/en/plugins.bb index 3aecc458f..3aecc458f 100644 --- a/doc/plugins.bb +++ b/doc/en/plugins.bb diff --git a/doc/problems-following-an-update.bb b/doc/en/problems-following-an-update.bb index 7376d6163..7376d6163 100644 --- a/doc/problems-following-an-update.bb +++ b/doc/en/problems-following-an-update.bb diff --git a/doc/red2pi.bb b/doc/en/red2pi.bb index 8ae087fbf..8ae087fbf 100644 --- a/doc/red2pi.bb +++ b/doc/en/red2pi.bb diff --git a/doc/roadmap.bb b/doc/en/roadmap.bb index dce19848a..dce19848a 100644 --- a/doc/roadmap.bb +++ b/doc/en/roadmap.bb diff --git a/doc/schema_development.bb b/doc/en/schema_development.bb index 10832684a..10832684a 100644 --- a/doc/schema_development.bb +++ b/doc/en/schema_development.bb diff --git a/doc/schemaspy_hubzilla/zot.meta.xml b/doc/en/schemaspy_hubzilla/zot.meta.xml index 98a9d370e..98a9d370e 100644 --- a/doc/schemaspy_hubzilla/zot.meta.xml +++ b/doc/en/schemaspy_hubzilla/zot.meta.xml diff --git a/doc/sql_conventions.bb b/doc/en/sql_conventions.bb index f6a4e251f..f6a4e251f 100644 --- a/doc/sql_conventions.bb +++ b/doc/en/sql_conventions.bb diff --git a/doc/en/toc.html b/doc/en/toc.html new file mode 100644 index 000000000..b1edef6d2 --- /dev/null +++ b/doc/en/toc.html @@ -0,0 +1,75 @@ +<div class="" id="accordion"> + <div class="mb-3"> + <div class=""> + <h3 class="panel-title"> + Tutorials + </h3> + </div> + <div id="tutorials" class="doco-section"> + <div class="vstack"> + <a class="" href="/help/tutorials/personal_channel">Personal Channel</a> + </div> + </div> + </div> + <div class="mb-3"> + <div class=""> + <h3 class="panel-title"> + Members + </h3> + </div> + <div id="members" class="doco-section"> + <div class="vstack"> + <a class="" href="/help/member/member_guide">Guide</a> + <a class="" href="/help/member/bbcode">BBcode Reference</a> + <a class="" href="/help/feature/additional/overview">Additional Features</a> + <a class="" href="/help/bugs">Reporting Bugs</a> + <a class="" href="/help/member/member_faq">FAQ</a> + </div> + </div> + </div> + <div class="mb-3"> + <div class=""> + <h3 class="panel-title"> + Administrators + </h3> + </div> + <div id="administrators" class="doco-section"> + <div class="vstack"> + <a class="" href="/help/admin/administrator_guide">Guide</a> + <a class="" href="/help/admin/hub_snapshots">Hub Snapshots</a> + <a class="" href="/help/database">Database</a> + <a class="" href="/help/hidden_configs">Extra configs</a> + </div> + </div> + </div> + <div class="mb-3"> + <div class=""> + <h3 class="panel-title"> + Developers + </h3> + </div> + <div id="developers" class="doco-section"> + <div class="vstack"> + <a class="" href="/help/developer/developer_guide">Guide</a> + <a class="" href="/help/developer/covenant">Code of Conduct</a> + <a class="" href="/help/developer/zot_protocol">Zot Protocol</a> + <a class="" href="/help/developer/api_zot">Zot API</a> + <a class="" href="/help/hooklist">Hooks</a> + </div> + </div> + </div> + <div class="mb-3"> + <div class=""> + <h3 class="panel-title"> + About + </h3> + </div> + <div id="about" class="doco-section"> + <div class="vstack"> + <a class="" href="/help/about/about">About</a> + <a class="" href="/help/about/project">Project</a> + <a class="" href="/help/about/about_hub">About this hub</a> + </div> + </div> + </div> +</div> diff --git a/doc/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png b/doc/en/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png Binary files differindex d5cf1093f..d5cf1093f 100644 --- a/doc/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png +++ b/doc/en/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png diff --git a/doc/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png b/doc/en/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png Binary files differindex d613925aa..d613925aa 100644 --- a/doc/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png +++ b/doc/en/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png diff --git a/doc/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png b/doc/en/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png Binary files differindex c403bf806..c403bf806 100644 --- a/doc/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png +++ b/doc/en/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png diff --git a/doc/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png b/doc/en/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png Binary files differindex ca8ba6fb9..ca8ba6fb9 100644 --- a/doc/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png +++ b/doc/en/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png diff --git a/doc/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png b/doc/en/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png Binary files differindex 0da2d96e2..0da2d96e2 100644 --- a/doc/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png +++ b/doc/en/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png diff --git a/doc/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png b/doc/en/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png Binary files differindex 2a209b2be..2a209b2be 100644 --- a/doc/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png +++ b/doc/en/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png diff --git a/doc/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png b/doc/en/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png Binary files differindex f992672b0..f992672b0 100644 --- a/doc/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png +++ b/doc/en/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png diff --git a/doc/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png b/doc/en/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png Binary files differindex b656192dc..b656192dc 100644 --- a/doc/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png +++ b/doc/en/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png diff --git a/doc/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png b/doc/en/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png Binary files differindex 6129195b6..6129195b6 100644 --- a/doc/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png +++ b/doc/en/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png diff --git a/doc/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png b/doc/en/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png Binary files differindex 923403fe9..923403fe9 100644 --- a/doc/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png +++ b/doc/en/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png diff --git a/doc/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png b/doc/en/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png Binary files differindex f158ad5d9..f158ad5d9 100644 --- a/doc/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png +++ b/doc/en/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png diff --git a/doc/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png b/doc/en/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png Binary files differindex edc8b01cc..edc8b01cc 100644 --- a/doc/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png +++ b/doc/en/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png diff --git a/doc/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png b/doc/en/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png Binary files differindex 5b259058b..5b259058b 100644 --- a/doc/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png +++ b/doc/en/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png diff --git a/doc/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png b/doc/en/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png Binary files differindex c03ffd18d..c03ffd18d 100644 --- a/doc/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png +++ b/doc/en/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png diff --git a/doc/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png b/doc/en/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png Binary files differindex 65d4c5f0a..65d4c5f0a 100644 --- a/doc/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png +++ b/doc/en/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png diff --git a/doc/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png b/doc/en/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png Binary files differindex 45609a7bb..45609a7bb 100644 --- a/doc/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png +++ b/doc/en/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png diff --git a/doc/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png b/doc/en/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png Binary files differindex d239d6965..d239d6965 100644 --- a/doc/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png +++ b/doc/en/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png diff --git a/doc/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png b/doc/en/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png Binary files differindex 45ed64d00..45ed64d00 100644 --- a/doc/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png +++ b/doc/en/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png diff --git a/doc/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png b/doc/en/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png Binary files differindex fcaed8bef..fcaed8bef 100644 --- a/doc/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png +++ b/doc/en/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png diff --git a/doc/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png b/doc/en/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png Binary files differindex 0ccfc8995..0ccfc8995 100644 --- a/doc/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png +++ b/doc/en/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png diff --git a/doc/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png b/doc/en/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png Binary files differindex 1cb4d2d22..1cb4d2d22 100644 --- a/doc/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png +++ b/doc/en/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png diff --git a/doc/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png b/doc/en/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png Binary files differindex 22e4cb5d5..22e4cb5d5 100644 --- a/doc/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png +++ b/doc/en/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png diff --git a/doc/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png b/doc/en/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png Binary files differindex 5674f5207..5674f5207 100644 --- a/doc/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png +++ b/doc/en/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png diff --git a/doc/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png b/doc/en/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png Binary files differindex e6b4a9974..e6b4a9974 100644 --- a/doc/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png +++ b/doc/en/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png diff --git a/doc/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png b/doc/en/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png Binary files differindex 8de042ae4..8de042ae4 100644 --- a/doc/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png +++ b/doc/en/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png diff --git a/doc/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png b/doc/en/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png Binary files differindex cec391fb4..cec391fb4 100644 --- a/doc/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png +++ b/doc/en/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png diff --git a/doc/tutorials/personal_channel.html b/doc/en/tutorials/personal_channel.html index bbf367571..3069cd44b 100644 --- a/doc/tutorials/personal_channel.html +++ b/doc/en/tutorials/personal_channel.html @@ -1,18 +1,18 @@ -<p>This tutorial is intended to be followed in sequence as if you were setting up a -channel for the first time. It introduces some of the tools and features related +<p>This tutorial is intended to be followed in sequence as if you were setting up a +channel for the first time. It introduces some of the tools and features related to a personal channel in a natural way.</p> <h3 id="Create_a_new_channel">Create a new channel</h3> -<p>When you log in for the first time after registering, you must create a channel. +<p>When you log in for the first time after registering, you must create a channel. (Alternatively you can visit https://your_website/new_channel)</p> -<p><img class="img-responsive" src="/help/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png" alt="image"></p> -<p>Enter your name and a nickname for the channel address, and select a "role". -Typically if this is a personal channel that represents you, select a <strong>Social</strong> role -with a level of default privacy that you are comfortable with. If you are unsure, +<p>Enter your name and a nickname for the channel address, and select a "role". +Typically if this is a personal channel that represents you, select a <strong>Social</strong> role +with a level of default privacy that you are comfortable with. If you are unsure, select <strong>Social - Mostly public</strong> which allows easy interaction and provides privacy when you need it. Alternatively, <strong>Social - Restricted</strong> is very popular among privacy advocates, though it may require a bit more effort to meet people. Whichever setting you choose can be changed later if you decide you require more or less privacy than what is provided.</p> @@ -20,15 +20,15 @@ effort to meet people. Whichever setting you choose can be changed later if you <!-- This section no longer applicable <h3 id="Configure_your_channel_features">Configure your channel features</h3> -<p>When your new channel is created you are directed to the channel settings page. -Take the time to look around at all the settings pages to familiarize yourself with +<p>When your new channel is created you are directed to the channel settings page. +Take the time to look around at all the settings pages to familiarize yourself with your options, even if you don't understand everything you see right now.</p> -<p>Navigate to the <strong>Additional Features</strong> settings and follow the screenshots below to +<p>Navigate to the <strong>Additional Features</strong> settings and follow the screenshots below to enable various features. Remember to press the Submit button when you are done with your selections.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png" alt="image"><img class="img-responsive" src="/help/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png" alt="image"><img class="img-responsive" src="/help/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png" alt="image"><img class="img-responsive" src="/help/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png" alt="image"><img class="img-responsive" src="/help/en/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png" alt="image"><img class="img-responsive" src="/help/en/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png" alt="image"><img class="img-responsive" src="/help/en/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png" alt="image"></p> --> <h3 id="Add_a_profile_photo">Add a profile photo</h3> @@ -37,126 +37,126 @@ your selections.</p> <p>From the <strong>Profile Tools</strong> dropdown menu, select <strong>Change profile photo</strong> (or just click the profile photo).</p> -<p><img class="img-responsive" src="/help/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png" alt="image"></p> <p>Upload your photo and size as necessary using the image editor.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png" alt="image"></p> -<p>When you press <strong>Done Editing</strong> you will be redirected back to the profile editor. +<p>When you press <strong>Done Editing</strong> you will be redirected back to the profile editor. (You might need to clear your browser cache if you have trouble seeing the new photo.)</p> -<p><img class="img-responsive" src="/help/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png" alt="image"></p> -<p>Returning to your channel home page you will see that a post notifying others of your new +<p>Returning to your channel home page you will see that a post notifying others of your new profile pic has been automatically posted.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png" alt="image"></p> <h3 id="Compose_a_post">Compose a post</h3> -<p>Go to your channel home and open the post editor by pressing the <strong>Share</strong> textbox -at the top of the channel "wall". Enter a message, and then drag-and-drop an image -file into the post editor text area (alternatively you can use the <strong>Attach file</strong> +<p>Go to your channel home and open the post editor by pressing the <strong>Share</strong> textbox +at the top of the channel "wall". Enter a message, and then drag-and-drop an image +file into the post editor text area (alternatively you can use the <strong>Attach file</strong> tool at the bottom).</p> -<p><img class="img-responsive" src="/help/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png" alt="image"></p> -<p>Your image file will be automatically uploaded and stored in your cloud files, and +<p>Your image file will be automatically uploaded and stored in your cloud files, and a link will appear in the post window. Pressing the post preview button will allow you to preview your post before publishing it.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png" alt="image"></p> -<p>Pressing the lock button near the Submit button will open the <strong>Access Control List</strong> +<p>Pressing the lock button near the Submit button will open the <strong>Access Control List</strong> so you can specify exactly who can access this post.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png" alt="image"></p> <h3 id="Use_an_uploaded_image_as_a_channel_cover_photo">Use an uploaded image as a channel cover photo</h3> -<p>One way to add some pizzazz your channel is to add a cover photo that visitors will -see when they load your channel page. The integrated cloud file system +<p>One way to add some pizzazz your channel is to add a cover photo that visitors will +see when they load your channel page. The integrated cloud file system allows you to choose an existing photo for this purpose.</p> <p>Visit your photos in the <strong>Photos</strong> app</p> -<p><img class="img-responsive" src="/help/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png" alt="image"></p> <p>Select the photo you wish to use and select <strong>Use as cover photo</strong> from the <strong>Photo Tools</strong> dropdown menu.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png" alt="image"></p> <p>Crop the image using the photo editor and save your changes.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png" alt="image"></p> <p>When you load your channel home page, you will first see the cover photo, and your channel page will fade in as you scroll down.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png" alt="image"></p> <h3 id="Make_a_connection">Make a connection</h3> -<p>Making connections between channels to share things is what social communications are all about. +<p>Making connections between channels to share things is what social communications are all about. Making a connection is simple. If you do not already know how to reach a channel's home -page, you might try a directory search by opening the <strong>Directory</strong> link from the menu on the right +page, you might try a directory search by opening the <strong>Directory</strong> link from the menu on the right side of the top navbar.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png" alt="image"></p> -<p>You can connect directly from the directory entry using the <strong>Connect</strong> button there, -or you can open the channel page first and press the <strong>Connect</strong> button below the +<p>You can connect directly from the directory entry using the <strong>Connect</strong> button there, +or you can open the channel page first and press the <strong>Connect</strong> button below the profile photo.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png" alt="image"></p> -<p>After you connect you are immediately taken to the connection editor page, where +<p>After you connect you are immediately taken to the connection editor page, where you make some important decisions about what you plan to share with this channel.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png" alt="image"></p> <p>The two important settings are</p> <ul><li>The individual permissions for the newly connected channel</li> <li>The privacy group(s) the connection is a member of</li> -</ul><p>The individual permissions are mostly straightforward, but they can be slightly +</ul><p>The individual permissions are mostly straightforward, but they can be slightly unclear at first. For example, <strong>Can view my file storage and photos</strong> does <em>not</em> -mean that the connected channel will be able to view <em>all</em> of your photos and files! -It means that you will have the <em>option</em> to share photos and files with that +mean that the connected channel will be able to view <em>all</em> of your photos and files! +It means that you will have the <em>option</em> to share photos and files with that channel. It is perfectly possible for you to allow someone to read your posts but -disallow them from seeing photos in that post. This kind of unusual situation is, +disallow them from seeing photos in that post. This kind of unusual situation is, as they say, not a bug; it is a feature.</p> <p>Privacy groups allow you to conveniently share items with groups of people. You can create whatever groups fit your needs by opening the <strong>Add privacy group</strong> link.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png" alt="image"></p> -<p>In this editor, you can switch between the existing privacy groups and see at a -glance what channels are and are not members of the group. Selecting the icon of +<p>In this editor, you can switch between the existing privacy groups and see at a +glance what channels are and are not members of the group. Selecting the icon of a channel in either box will move it to the in or out of the group.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png" alt="image"></p> -<p>When editing an individual channel's settings, you can set their privacy group +<p>When editing an individual channel's settings, you can set their privacy group membership using the widget on the left:</p> -<p><img class="img-responsive" src="/help/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png" alt="image"></p> <p>Connections are a mutual engagement. The channel you connect can <em>choose</em> to approve your connection. They will receive a notification that you connected</p> -<p><img class="img-responsive" src="/help/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png" alt="image"></p> -<p>which takes them to their <a href="https://grid.reticu.li/connections"><strong>Connections</strong></a> editor page where +<p>which takes them to their <a href="https://grid.reticu.li/connections"><strong>Connections</strong></a> editor page where they can choose to approve the connection or not.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png" alt="image"></p> -<p>After you approve a connection, it is a good idea to open the individual connection +<p>After you approve a connection, it is a good idea to open the individual connection editor by pressing the edit button beside the <strong>Delete</strong> button.</p> -<p><img class="img-responsive" src="/help/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png" alt="image"></p> +<p><img class="img-responsive" src="/help/en/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png" alt="image"></p> + - diff --git a/doc/toc.html b/doc/toc.html deleted file mode 100644 index d2f2654a1..000000000 --- a/doc/toc.html +++ /dev/null @@ -1,75 +0,0 @@ -<div class="" id="accordion"> - <div class=""> - <div class=""> - <h3 class="panel-title"> - Tutorials - </h3> - </div> - <div id="tutorials" class="doco-section"> - <div class="flex-column"> - <a class="nav-link" href="/help/tutorials/personal_channel">Personal Channel</a> - </div> - </div> - </div> - <div class=""> - <div class=""> - <h3 class="panel-title"> - Members - </h3> - </div> - <div id="members" class="doco-section"> - <div class="flex-column"> - <a class="nav-link" href="/help/member/member_guide">Guide</a> - <a class="nav-link" href="/help/member/bbcode">BBcode Reference</a> - <a class="nav-link" href="/help/feature/additional/overview">Additional Features</a> - <a class="nav-link" href="/help/bugs">Reporting Bugs</a> - <a class="nav-link" href="/help/member/member_faq">FAQ</a> - </div> - </div> - </div> - <div class="panel"> - <div class=""> - <h3 class="panel-title"> - Administrators - </h3> - </div> - <div id="administrators" class="doco-section"> - <div class="flex-column"> - <a class="nav-link" href="/help/admin/administrator_guide">Guide</a> - <a class="nav-link" href="/help/admin/hub_snapshots">Hub Snapshots</a> - <a class="nav-link" href="/help/database">Database</a> - <a class="nav-link" href="/help/hidden_configs">Extra configs</a> - </div> - </div> - </div> - <div class="panel"> - <div class=""> - <h3 class="panel-title"> - Developers - </h3> - </div> - <div id="developers" class="doco-section"> - <div class="flex-column"> - <a class="nav-link" href="/help/developer/developer_guide">Guide</a> - <a class="nav-link" href="/help/developer/covenant">Code of Conduct</a> - <a class="nav-link" href="/help/developer/zot_protocol">Zot Protocol</a> - <a class="nav-link" href="/help/developer/api_zot">Zot API</a> - <a class="nav-link" href="/help/hooklist">Hooks</a> - </div> - </div> - </div> - <div class="panel"> - <div class=""> - <h3 class="panel-title"> - About - </h3> - </div> - <div id="about" class="doco-section"> - <div class="flex-column"> - <a class="nav-link" href="/help/about/about">About</a> - <a class="nav-link" href="/help/about/project">Project</a> - <a class="nav-link" href="/help/about/about_hub">About this hub</a> - </div> - </div> - </div> -</div> diff --git a/include/account.php b/include/account.php index a1fb0f159..884c07389 100644 --- a/include/account.php +++ b/include/account.php @@ -4,6 +4,7 @@ * @brief Somme account related functions. */ +use Zotlabs\Lib\Config; use Zotlabs\Lib\Crypto; require_once('include/config.php'); @@ -83,8 +84,8 @@ function check_account_invite($invite_code) { $result = array('error' => false, 'message' => ''); // [hilmar -> - $using_invites = (get_config('system','invitation_only') - || get_config('system','invitation_also')); + $using_invites = (Config::Get('system','invitation_only') + || Config::Get('system','invitation_also')); if($using_invites) { @@ -118,7 +119,7 @@ function check_account_invite($invite_code) { function check_account_admin($arr) { if(is_site_admin()) return true; - $admin_email = trim(get_config('system','admin_email')); + $admin_email = trim(Config::Get('system','admin_email')); if(strlen($admin_email) && $admin_email === trim($arr['email'])) return true; return false; @@ -182,7 +183,7 @@ function create_account_IS_OBSOLETE($arr) { $roles = ((x($arr,'account_roles')) ? intval($arr['account_roles']) : 0 ); $expires = ((x($arr,'expires')) ? intval($arr['expires']) : NULL_DATE); - $default_service_class = get_config('system','default_service_class'); + $default_service_class = Config::Get('system','default_service_class'); if($default_service_class === false) $default_service_class = ''; @@ -209,10 +210,10 @@ function create_account_IS_OBSOLETE($arr) { // Ensure that there is a host keypair. - if ((! get_config('system', 'pubkey')) && (! get_config('system', 'prvkey'))) { + if ((! Config::Get('system', 'pubkey')) && (! Config::Get('system', 'prvkey'))) { $hostkey = Crypto::new_keypair(4096); - set_config('system', 'pubkey', $hostkey['pubkey']); - set_config('system', 'prvkey', $hostkey['prvkey']); + Config::Set('system', 'pubkey', $hostkey['pubkey']); + Config::Set('system', 'prvkey', $hostkey['prvkey']); } $invite_result = check_account_invite($invite_code); @@ -319,7 +320,7 @@ function create_account_from_register($arr) { // account $expires = NULL_DATE; - $default_service_class = get_config('system','default_service_class'); + $default_service_class = Config::Get('system','default_service_class'); if($default_service_class === false) $default_service_class = ''; @@ -420,7 +421,7 @@ function verify_email_address($arr) { $email_msg = replace_macros(get_intltext_template('register_verify_member.tpl'), [ - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$email' => $arr['email'], '$uid' => 1, @@ -432,7 +433,7 @@ function verify_email_address($arr) { $res = z_mail( [ 'toEmail' => $arr['email'], - 'messageSubject' => sprintf( t('Registration confirmation for %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Registration confirmation for %s'), Config::Get('system','sitename')), 'textVersion' => $email_msg, ] ); @@ -488,7 +489,7 @@ function verify_email_addressNOP($arr) { $email_msg = replace_macros(get_intltext_template('register_verify_member.tpl'), [ - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$email' => $arr['email'], '$uid' => $account['account_id'], @@ -500,7 +501,7 @@ function verify_email_addressNOP($arr) { $res = z_mail( [ 'toEmail' => $arr['email'], - 'messageSubject' => sprintf( t('Registration confirmation for %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Registration confirmation for %s'), Config::Get('system','sitename')), 'textVersion' => $email_msg, ] ); @@ -564,7 +565,7 @@ function send_reg_approval_email($arr) { push_lang('en'); $email_msg = replace_macros(get_intltext_template('register_verify_eml.tpl'), array( - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$email' => $arr['email'], '$uid' => $arr['account']['account_id'], @@ -575,7 +576,7 @@ function send_reg_approval_email($arr) { $res = z_mail( [ 'toEmail' => $admin['email'], - 'messageSubject' => sprintf( t('Registration request at %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Registration request at %s'), Config::Get('system','sitename')), 'textVersion' => $email_msg, ] ); @@ -594,7 +595,7 @@ function send_reg_approval_email($arr) { function send_register_success_email($email,$password) { $email_msg = replace_macros(get_intltext_template('register_open_eml.tpl'), array( - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$email' => $email, '$password' => t('your registration password'), @@ -603,7 +604,7 @@ function send_register_success_email($email,$password) { $res = z_mail( [ 'toEmail' => $email, - 'messageSubject' => sprintf( t('Registration details for %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Registration details for %s'), Config::Get('system','sitename')), 'textVersion' => $email_msg, ] ); @@ -681,7 +682,7 @@ function account_allow($hash) { $email_tpl = get_intltext_template("register_open_eml.tpl"); $email_msg = replace_macros($email_tpl, array( - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$username' => $account[0]['account_email'], '$email' => $account[0]['account_email'], @@ -692,14 +693,14 @@ function account_allow($hash) { $res = z_mail( [ 'toEmail' => $account[0]['account_email'], - 'messageSubject' => sprintf( t('Registration details for %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Registration details for %s'), Config::Get('system','sitename')), 'textVersion' => $email_msg, ] ); pop_lang(); - if(get_config('system', 'auto_channel_create', 1)) + if(Config::Get('system', 'auto_channel_create', 1)) auto_channel_create($register[0]['uid']); if ($res) { @@ -844,7 +845,7 @@ function account_approve($hash) { if(! $account) return $ret; - if(get_config('system','auto_channel_create')) + if(Config::Get('system','auto_channel_create')) auto_channel_create($register[0]['reg_uid']); else { $_SESSION['login_return_url'] = 'new_channel'; @@ -992,7 +993,7 @@ function downgrade_accounts() { if(! $r) return; - $basic = get_config('system','default_service_class'); + $basic = Config::Get('system','default_service_class'); foreach($r as $rr) { if(($basic) && ($rr['account_service_class']) && ($rr['account_service_class'] != $basic)) { @@ -1135,7 +1136,7 @@ function service_class_fetch($uid, $property) { if(! x($service_class)) return false; // everything is allowed - $arr = get_config('service_class', $service_class); + $arr = Config::Get('service_class', $service_class); if(! is_array($arr) || (! count($arr))) return false; @@ -1169,7 +1170,7 @@ function account_service_class_fetch($aid, $property) { if(! isset($service_class)) return false; // everything is allowed - $arr = get_config('service_class', $service_class); + $arr = Config::Get('service_class', $service_class); if(! is_array($arr) || (! count($arr))) return false; @@ -1179,7 +1180,7 @@ function account_service_class_fetch($aid, $property) { function upgrade_link($bbcode = false) { - $l = get_config('service_class', 'upgrade_link'); + $l = Config::Get('service_class', 'upgrade_link'); if(! $l) return ''; if($bbcode) @@ -1208,7 +1209,7 @@ function get_account_techlevel($account_id = 0) { function zar_log($msg='') { - if(get_config('system', 'register_logfile', 0)) { + if(Config::Get('system', 'register_logfile', 0)) { file_put_contents('./zar.log', date('Y-m-d_H:i:s') . ' ' . $msg . ', ip: § ' . $_SERVER['REMOTE_ADDR'] . ' §' . "\n", FILE_APPEND); } diff --git a/include/api_zot.php b/include/api_zot.php index 22692b962..56cec005d 100644 --- a/include/api_zot.php +++ b/include/api_zot.php @@ -546,6 +546,7 @@ return false; } + logger('api_red_item_store: REQUEST ' . print_r($_REQUEST,true)); logger('api_red_item_store: FILES ' . print_r($_FILES,true)); @@ -561,7 +562,7 @@ $mod = new Zotlabs\Module\Wall_attach(); $media = $mod->post(); if($media) - $_REQUEST['body'] = $media . "\n\n" . $_REQUEST['body']; + $_REQUEST['body'] = $media . "\n" . $_REQUEST['body']; } $mod = new Zotlabs\Module\Item(); diff --git a/include/attach.php b/include/attach.php index e5a2900b3..449721793 100644 --- a/include/attach.php +++ b/include/attach.php @@ -11,11 +11,12 @@ * @todo Also an 'append' option to the storage function might be a useful addition. */ -use Zotlabs\Lib\Libsync; -use Zotlabs\Lib\Activity; use Zotlabs\Access\PermissionLimits; use Zotlabs\Daemon\Master; use Zotlabs\Lib\AccessList; +use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; +use Zotlabs\Lib\Libsync; require_once('include/permissions.php'); require_once('include/security.php'); @@ -112,7 +113,6 @@ function z_mime_content_type($filename) { 'odf' => 'application/vnd.oasis.opendocument.formula', 'odi' => 'application/vnd.oasis.opendocument.image', 'odm' => 'application/vnd.oasis.opendocument.text-master', - 'odb' => 'application/vnd.oasis.opendocument.base', 'odb' => 'application/vnd.oasis.opendocument.database', 'ott' => 'application/vnd.oasis.opendocument.text-template', 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', @@ -801,7 +801,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { // Check storage limits if($options !== 'update') { - $maxfilesize = get_config('system','maxfilesize'); + $maxfilesize = Config::Get('system','maxfilesize'); if(($maxfilesize) && ($filesize > $maxfilesize)) { logger('quota_exceeded'); @@ -2466,8 +2466,8 @@ function copy_folder_to_cloudfiles($channel, $observer_hash, $srcpath, $cloudpat * @param int $channel_id * @param int $resource_id * @param string $new_folder_hash - * @param (optional) string $newname - * @param (optional) boolean $recurse + * @param string (optional) $newname + * @param boolean (optional) $recurse * @return array Associative array with: * * \e boolean \b success * * \e string \b resource_id @@ -2667,8 +2667,8 @@ function attach_move($channel_id, $resource_id, $new_folder_hash, $newname = '', * @param int $channel_id * @param int $resource_id * @param string $new_folder_hash - * @param (optional) string $newname - * @param (optional) boolean $recurse + * @param string (optional) $newname + * @param boolean (optional) $recurse * @return array Associative array with: * * \e boolean \b success * * \e string \b resource_id of the new resource @@ -2981,11 +2981,17 @@ function save_chunk($channel,$start,$end,$len) { $result = []; - $tmp_path = $_FILES['files']['tmp_name']; + $file = $_FILES['files'] ?? $_FILES['userfile'] ?? []; + + if (!$file) { + return $result; + } + + $tmp_path = $file['tmp_name']; $new_base = 'store/[data]/' . $channel['channel_address'] . '/tmp'; os_mkdir($new_base,STORAGE_DEFAULT_PERMISSIONS,true); - $new_path = $new_base . '/' . $_FILES['files']['name']; + $new_path = $new_base . '/' . $file['name']; if(file_exists($new_path) && intval($start) === 0) { $result['partial'] = true; @@ -3007,8 +3013,8 @@ function save_chunk($channel,$start,$end,$len) { } if(($len - 1) == $end) { unlink($tmp_path); - $result['name'] = $_FILES['files']['name']; - $result['type'] = $_FILES['files']['type']; + $result['name'] = $file['name']; + $result['type'] = $file['type']; $result['tmp_name'] = $new_path; $result['error'] = 0; $result['size'] = $len; diff --git a/include/auth.php b/include/auth.php index 5956b89e2..1fc2cc556 100644 --- a/include/auth.php +++ b/include/auth.php @@ -9,8 +9,9 @@ * Also provides a function for OpenID identiy matching. */ -use Zotlabs\Lib\Libzot; use Zotlabs\Lib\AConfig; +use Zotlabs\Lib\Config; +use Zotlabs\Lib\Libzot; use Zotlabs\Module\Totp_check; require_once('include/api_auth.php'); @@ -43,8 +44,8 @@ function account_verify_password($login, $pass) { $ret = [ 'account' => null, 'channel' => null, 'xchan' => null ]; $login = punify($login); - $email_verify = get_config('system', 'verify_email'); - $register_policy = get_config('system', 'register_policy'); + $email_verify = Config::Get('system', 'verify_email'); + $register_policy = Config::Get('system', 'register_policy'); if(!$login || !$pass) return null; @@ -170,11 +171,45 @@ function account_verify_password($login, $pass) { * Error message to display for failed login. */ function log_failed_login($errormsg) { - $authlog = get_config('system', 'authlog'); + $authlog = Config::Get('system', 'authlog'); if ($authlog) @file_put_contents($authlog, datetime_convert() . ':' . session_id() . ' ' . $errormsg . PHP_EOL, FILE_APPEND); } + +/** + * Determines if checking for multifactor authentication needs to be checked. + * + * Checks that multi factor authentication is enabled for the given account_id, + * and whether it's already authenticated or not. + * + * Some modules needs to be excluded from the mfa checks for various reasons: + * + * - `totp_check` is used by the mfa module itself. + * - `dav` provides WebDAV access, and has no way of providing a mfa code. + * - `cdav` is accessed both via CardDAV which has the same limitations as + * the `dav` module, but may also be accessed via a web browser over http. + * We only exclude it if it's not being accessed via a web browser. + * + * @param int $account_id The id of the account we're verifying. + * @param string $module The requested module. + * @param string $arg The first arg passed to the module (or empty if none.) + * + * @return bool `true` if mfa status needs to be checked, `false` otherwise. + */ +function requires_mfa_check(int $account_id, string $module, string $arg): bool { + if (in_array($module, ['totp_check', 'dav'], true)) { + return false; + } + + if ($module === 'cdav' && !in_array($arg, ['addressbook', 'calendar'], true)) { + return false; + } + + $multiFactor = AConfig::Get($account_id, 'system', 'mfa_enabled'); + return $multiFactor && empty($_SESSION['2FA_VERIFIED']); +} + /** * Inline - not a function * look for auth parameters or re-validate an existing session @@ -208,10 +243,10 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) && if(x($_SESSION, 'visitor_id') && (! x($_SESSION, 'uid'))) { // if our authenticated guest is allowed to take control of the admin channel, make it so. - $admins = get_config('system', 'remote_admin'); + $admins = Config::Get('system', 'remote_admin'); if($admins && is_array($admins) && in_array($_SESSION['visitor_id'], $admins)) { $x = q("select * from account where account_email = '%s' and account_email != '' and ( account_flags & %d )>0 limit 1", - dbesc(get_config('system', 'admin_email')), + dbesc(Config::Get('system', 'admin_email')), intval(ACCOUNT_ROLE_ADMIN) ); if($x) { @@ -266,8 +301,7 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) && $login_refresh = true; } - $multiFactor = AConfig::Get(App::$account['account_id'], 'system', 'mfa_enabled'); - if ($multiFactor && empty($_SESSION['2FA_VERIFIED']) && App::$module !== 'totp_check') { + if (requires_mfa_check(App::$account['account_id'], App::$module, argv(1))) { $o = new Totp_check; echo $o->get(); killme(); @@ -328,7 +362,7 @@ else { $error = 'authenticate: failed login attempt: ' . notags(trim($username)) . ' from IP ' . $_SERVER['REMOTE_ADDR']; logger($error); // Also log failed logins to a separate auth log to reduce overhead for server side intrusion prevention - $authlog = get_config('system', 'authlog'); + $authlog = Config::Get('system', 'authlog'); if ($authlog) @file_put_contents($authlog, datetime_convert() . ':' . session_id() . ' ' . $error . "\n", FILE_APPEND); notice( t('Login failed.') . EOL ); diff --git a/include/bbcode.php b/include/bbcode.php index d7ed3a243..15a75ce3f 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -4,8 +4,9 @@ * @brief BBCode related functions for parsing, etc. */ -use Zotlabs\Lib\SvgSanitizer; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; +use Zotlabs\Lib\SvgSanitizer; require_once('include/oembed.php'); require_once('include/event.php'); @@ -111,7 +112,7 @@ function tryzrlvideo($match) { if($zrl) $link = zid($link); - $static_link = get_config('system','video_default_poster','images/video_poster.jpg'); + $static_link = Config::Get('system','video_default_poster','images/video_poster.jpg'); if($static_link) $poster = 'poster="' . escape_tags($static_link) . '" ' ; @@ -1142,7 +1143,7 @@ function parseIdentityAwareHTML($Text) { $Text = str_replace('[observer.photo]','', $Text); } - $Text = str_replace(array('[baseurl]','[sitename]'),array(z_root(),get_config('system','sitename')),$Text); + $Text = str_replace(array('[baseurl]','[sitename]'),array(z_root(),Config::Get('system','sitename')),$Text); // Unhide all [noparse] contained bbtags unspacefying them @@ -1249,7 +1250,7 @@ function bbcode($text, $options = []) { $text = $x['body']; $saved_images = $x['images']; - $text = str_replace(array('[baseurl]','[sitename]'),array(z_root(),get_config('system','sitename')),$text); + $text = str_replace(array('[baseurl]','[sitename]'),array(z_root(),Config::Get('system','sitename')),$text); // Replace any html brackets with HTML Entities to prevent executing HTML or script // Don't use strip_tags here because it breaks [url] search by replacing & with amp @@ -1407,7 +1408,7 @@ function bbcode($text, $options = []) { } // Check for strike-through text if (strpos($text,'[s]') !== false) { - $text = preg_replace("(\[s\](.*?)\[\/s\])ism", '<span style="text-decoration: line-through;">$1</span>', $text); + $text = preg_replace("(\[s\](.*?)\[\/s\])ism", '<del>$1</del>', $text); } // Check for over-line text if (strpos($text,'[o]') !== false) { @@ -1744,10 +1745,8 @@ function bbcode($text, $options = []) { // oembed tag if (strpos($text,'[/embed]') !== false) { + $text = str_replace(["[/embed]\r", "[/embed]\n"], '[/embed]', $text); $text = oembed_bbcode2html($text); - - // Avoid triple linefeeds through oembed - $text = str_replace("<br style='clear:left'></span><br /><br />", "<br style='clear:left'></span>", $text); } // If we found an event earlier, strip out all the event code and replace with a reformatted version. diff --git a/include/channel.php b/include/channel.php index a82794bfd..22b5bcde1 100644 --- a/include/channel.php +++ b/include/channel.php @@ -9,6 +9,7 @@ use Zotlabs\Access\PermissionRoles; use Zotlabs\Access\PermissionLimits; use Zotlabs\Access\Permissions; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Crypto; use Zotlabs\Lib\System; use Zotlabs\Render\Comanche; @@ -108,11 +109,11 @@ function create_sys_channel() { // Ensure that there is a host keypair. - if ((! get_config('system', 'pubkey')) && (! get_config('system', 'prvkey'))) { + if ((! Config::Get('system', 'pubkey')) && (! Config::Get('system', 'prvkey'))) { require_once('include/crypto.php'); $hostkey = Crypto::new_keypair(4096); - set_config('system', 'pubkey', $hostkey['pubkey']); - set_config('system', 'prvkey', $hostkey['prvkey']); + Config::Set('system', 'pubkey', $hostkey['pubkey']); + Config::Set('system', 'prvkey', $hostkey['prvkey']); } create_identity([ @@ -198,8 +199,8 @@ function create_identity($arr) { $ret = array('success' => false); - if(! $arr['account_id']) { - $ret['message'] = t('No account identifier'); + if(empty($arr['account_id'])) { + $ret['message'] = t('No account identifier'); return $ret; } $ret = identity_check_service_class($arr['account_id']); @@ -357,10 +358,10 @@ function create_identity($arr) { 'hubloc_primary' => intval($primary), 'hubloc_url' => z_root(), 'hubloc_url_sig' => Libzot::sign(z_root(),$ret['channel']['channel_prvkey']), - 'hubloc_site_id' => Libzot::make_xchan_hash(z_root(),get_config('system','pubkey')), + 'hubloc_site_id' => Libzot::make_xchan_hash(z_root(),Config::Get('system','pubkey')), 'hubloc_host' => App::get_hostname(), 'hubloc_callback' => z_root() . '/zot', - 'hubloc_sitekey' => get_config('system','pubkey'), + 'hubloc_sitekey' => Config::Get('system','pubkey'), 'hubloc_network' => 'zot6', 'hubloc_updated' => datetime_convert() ] @@ -493,7 +494,7 @@ function create_identity($arr) { // otherwise it could get annoying. Don't make this list too big // or it will impact registration time. - $accts = get_config('system','auto_follow'); + $accts = Config::Get('system','auto_follow'); if(($accts) && (! $total_identities)) { if(! is_array($accts)) $accts = array($accts); @@ -1591,7 +1592,7 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $details = $reddress = true; $connect_url = ''; $connect = ''; - $default_cover = get_config('system', 'default_cover_photo', 'hubzilla'); + $default_cover = Config::Get('system', 'default_cover_photo', 'hubzilla'); $default_cover_url = z_root() . '/images/default_cover_photos/' . $default_cover . '/425.png'; @@ -2040,7 +2041,7 @@ function get_theme_uid() { * @return string with path to profile photo */ function get_default_profile_photo($size = 300) { - $scheme = get_config('system','default_profile_photo'); + $scheme = Config::Get('system','default_profile_photo'); if(! $scheme) $scheme = 'rainbow_man'; @@ -2171,7 +2172,7 @@ function is_public_profile() { if(! local_channel()) return false; - if(intval(get_config('system','block_public'))) + if(intval(Config::Get('system','block_public'))) return false; $channel = App::get_channel(); @@ -2186,7 +2187,7 @@ function is_public_profile() { function get_profile_fields_basic($filter = 0) { - $profile_fields_basic = (($filter == 0) ? get_config('system','profile_fields_basic') : null); + $profile_fields_basic = (($filter == 0) ? Config::Get('system','profile_fields_basic') : null); if(! $profile_fields_basic) $profile_fields_basic = array('fullname','pdesc','chandesc','comms','gender','dob','dob_tz','region','country_name','marital','sexual','homepage','hometown','keywords','about','contact'); @@ -2202,7 +2203,7 @@ function get_profile_fields_basic($filter = 0) { function get_profile_fields_advanced($filter = 0) { $basic = get_profile_fields_basic($filter); - $profile_fields_advanced = (($filter == 0) ? get_config('system','profile_fields_advanced') : null); + $profile_fields_advanced = (($filter == 0) ? Config::Get('system','profile_fields_advanced') : null); if(! $profile_fields_advanced) $profile_fields_advanced = array('address','locality','postal_code','partner','howlong','politic','religion','likes','dislikes','interest','channels','music','book','film','tv','romance','employment','education'); @@ -2423,7 +2424,7 @@ function get_zcard($channel, $observer_hash = '', $args = array()) { $cover = $r[0]; $cover['href'] = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $r[0]['imgscale']; } else { - $default_cover = get_config('system', 'default_cover_photo', 'hubzilla'); + $default_cover = Config::Get('system', 'default_cover_photo', 'hubzilla'); $cover = [ 'href' => z_root() . '/images/default_cover_photos/' . $default_cover . '/' . $cover_width . '.png' ]; } @@ -2500,7 +2501,7 @@ function get_zcard_embed($channel, $observer_hash = '', $args = array()) { $cover['href'] = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $r[0]['imgscale']; } else { - $default_cover = get_config('system', 'default_cover_photo', 'hubzilla'); + $default_cover = Config::Get('system', 'default_cover_photo', 'hubzilla'); $cover = [ 'href' => z_root() . '/images/default_cover_photos/' . $default_cover . '/' . $cover_width . '.png' ]; } diff --git a/include/cli_startup.php b/include/cli_startup.php index b9e7d124d..012b29fbf 100644 --- a/include/cli_startup.php +++ b/include/cli_startup.php @@ -2,11 +2,13 @@ require_once('boot.php'); +use Zotlabs\Lib\Config; + // Everything we need to boot standalone 'background' processes function cli_startup() { sys_boot(); - App::set_baseurl(get_config('system','baseurl')); + App::set_baseurl(Config::Get('system','baseurl')); } diff --git a/include/config.php b/include/config.php index ec3547a82..4dd40eccf 100644 --- a/include/config.php +++ b/include/config.php @@ -31,18 +31,83 @@ use Zotlabs\Lib as Zlib; +/** + * Loads the hub's configuration from database to a cached storage. + * + * Retrieve a category ($family) of config variables from database to a cached + * storage in the global App::$config[$family]. + * + * @param string $family The category of the configuration value + * + * @return Nothing + * + * @deprecated + * This function is deprecated, use Zotlabs\Lib\Config::Load + * instead. + */ function load_config($family) { Zlib\Config::Load($family); } +/** + * Get a particular config variable given the category name ($family) + * and a key. + * + * Get a particular config variable from the given category ($family) and the + * $key from a cached storage in App::$config[$family]. If a key is found in the + * DB but does not exist in local config cache, pull it into the cache so we + * do not have to hit the DB again for this item. + * + * Returns false if not set. + * + * @param string $family The category of the configuration value + * @param string $key The configuration key to query + * @param string $default (optional) default false + * + * @return mixed|false Return value or false on error or if not set + * + * @deprecated + * This function is deprecated, use Zotlabs\Lib\Config::Get + * instead. + */ function get_config($family, $key, $default = false) { return Zlib\Config::Get($family,$key,$default); } +/** + * Sets a configuration value for the hub. + * + * Stores a config value ($value) in the category ($family) under the key ($key). + * + * @param string $family The category of the configuration value + * @param string $key The configuration key to set + * @param mixed $value The value to store in the configuration + * + * @return mixed|false Return the set value, or false if the database update failed + * + * @deprecated + * This function is deprecated, use Zotlabs\Lib\Config::Set + * instead. + */ function set_config($family, $key, $value) { return Zlib\Config::Set($family,$key,$value); } +/** + * Deletes the given key from the hub's configuration database. + * + * Removes the configured value from the stored cache in App::$config[$family] + * and removes it from the database. + * + * @param string $family The category of the configuration value + * @param string $key The configuration key to delete + * + * @return mixed + * + * @deprecated + * This function is deprecated, use Zotlabs\Lib\Config::Delete + * instead. + */ function del_config($family, $key) { return Zlib\Config::Delete($family,$key); } @@ -55,8 +120,8 @@ function get_pconfig($uid, $family, $key, $default = false) { return Zlib\PConfig::Get($uid,$family,$key,$default); } -function set_pconfig($uid, $family, $key, $value) { - return Zlib\PConfig::Set($uid,$family,$key,$value); +function set_pconfig($uid, $family, $key, $value, $updated = NULL) { + return Zlib\PConfig::Set($uid, $family, $key, $value, $updated); } function del_pconfig($uid, $family, $key, $updated = NULL) { diff --git a/include/connections.php b/include/connections.php index 9a6ee7d8d..efc531171 100644 --- a/include/connections.php +++ b/include/connections.php @@ -1,6 +1,7 @@ <?php /** @file */ use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; function abook_store_lowlevel($arr) { @@ -67,6 +68,14 @@ function rconnect_url($channel_id,$xchan) { } +/** + * @brief returns deliverable xchans for a channel. + * + * @param intval $channel_id + * @param array $filter (optional) + * @param boolean $flatten (optional) + */ + function deliverable_abook_xchans($channel_id, $filter = [], $flatten = true) { $filter_sql = ''; @@ -238,7 +247,7 @@ function abook_toggle_flag($abook,$flag) { function mark_orphan_hubsxchans() { - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); if($dirmode == DIRECTORY_MODE_NORMAL) return; @@ -511,8 +520,8 @@ function remove_abook_items($channel_id, $xchan_hash) { function random_profile() { $randfunc = db_getfunc('rand'); - $checkrandom = get_config('randprofile','check'); // False by default - $retryrandom = intval(get_config('randprofile','retry')); + $checkrandom = Config::Get('randprofile','check'); // False by default + $retryrandom = intval(Config::Get('randprofile','retry')); if($retryrandom == 0) $retryrandom = 5; for($i = 0; $i < $retryrandom; $i++) { diff --git a/include/contact_widgets.php b/include/contact_widgets.php index e3fbc1057..84f688d36 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -1,11 +1,12 @@ <?php /** @file */ use Zotlabs\Lib\Cache; +use Zotlabs\Lib\Config; use Zotlabs\Daemon\Master; function findpeople_widget() { - if(get_config('system','invitation_only')) { + if(Config::Get('system','invitation_only')) { $x = get_pconfig(local_channel(),'system','invites_remaining'); if($x || is_site_admin()) { App::$page['aside'] .= '<div class="side-link" id="side-invite-remain">' diff --git a/include/conversation.php b/include/conversation.php index 79fe12d54..c631d53a2 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1,7 +1,8 @@ <?php /** @file */ -use Zotlabs\Lib\Apps; use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; require_once('include/items.php'); @@ -1182,6 +1183,7 @@ function hz_status_editor($x, $popup = false) { '$modalerroralbum' => t('Error getting album'), '$nocomment_enabled' => t('Comments enabled'), '$nocomment_disabled' => t('Comments disabled'), + '$confirmdelete' => t('Confirm delete'), '$auto_save_draft' => $feature_auto_save_draft, '$reset' => $reset, '$popup' => $popup @@ -1262,7 +1264,7 @@ function hz_status_editor($x, $popup = false) { '$poll_option_label' => t('Option'), '$poll_add_option_label' => t('Add option'), '$poll_expire_unit_label' => [t('Minutes'), t('Hours'), t('Days')], - '$multiple_answers' => ['poll_multiple_answers', t("Allow multiple answers"), '', '', [t('No'), t('Yes')]], + '$multiple_answers' => ['poll_multiple_answers', t("Allow multiple answers"), '', '', [t('No'), t('Yes')],null,null], '$consensus' => ((array_key_exists('item',$x)) ? $x['item']['item_consensus'] : 0), '$nocommenttitle' => t('Disable comments'), '$nocommenttitlesub' => t('Toggle comments'), @@ -1336,7 +1338,7 @@ function get_item_children($arr, $parent) { $children = array(); foreach($arr as $item) { if($item['id'] != $item['parent']) { - if(get_config('system','thread_allow')) { + if(Config::Get('system','thread_allow')) { // Fallback to parent_mid if thr_parent is not set $thr_parent = $item['thr_parent']; if($thr_parent == '') diff --git a/include/crypto.php b/include/crypto.php index 40e68a4e7..4d50310fb 100644 --- a/include/crypto.php +++ b/include/crypto.php @@ -1,5 +1,7 @@ <?php /** @file */ +use Zotlabs\Lib\Config; + require_once('library/ASNValue.class.php'); require_once('library/asn1.php'); @@ -282,7 +284,7 @@ function new_keypair($bits) { 'encrypt_key' => false ); - $conf = get_config('system','openssl_conf_file'); + $conf = Config::Get('system','openssl_conf_file'); if($conf) $openssl_options['config'] = $conf; @@ -460,12 +462,12 @@ function convert_salmon_key($key) { function z_obscure($s) { - return json_encode(crypto_encapsulate($s,get_config('system','pubkey'))); + return json_encode(crypto_encapsulate($s,Config::Get('system','pubkey'))); } function z_unobscure($s) { if(strpos($s,"{\"") !== 0) return $s; - return crypto_unencapsulate(json_decode($s,true),get_config('system','prvkey')); + return crypto_unencapsulate(json_decode($s,true),Config::Get('system','prvkey')); } diff --git a/include/event.php b/include/event.php index 701f3c330..f8511cbe2 100644 --- a/include/event.php +++ b/include/event.php @@ -8,6 +8,7 @@ use Sabre\VObject; use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; use Zotlabs\Access\AccessList; @@ -237,7 +238,7 @@ function ical_wrapper($ev) { $o .= "BEGIN:VCALENDAR"; $o .= "\r\nVERSION:2.0"; $o .= "\r\nMETHOD:PUBLISH"; - $o .= "\r\nPRODID:-//" . get_config('system','sitename') . "//" . Zotlabs\Lib\System::get_platform_name() . "//" . strtoupper(App::$language). "\r\n"; + $o .= "\r\nPRODID:-//" . Config::Get('system','sitename') . "//" . Zotlabs\Lib\System::get_platform_name() . "//" . strtoupper(App::$language). "\r\n"; if(array_key_exists('dtstart', $ev)) $o .= format_event_ical($ev); else { @@ -271,9 +272,9 @@ function format_event_ical($ev) { if($ev['adjust']) { if($ev['dtstart']) - $o .= "\r\nDTSTART$tzid:" . datetime_convert($tz,'UTC', $ev['dtstart'],'Ymd\\THis\\Z'); + $o .= "\r\nDTSTART$tzid:" . datetime_convert('UTC', $tz, $ev['dtstart'],'Ymd\\THis'); if($ev['dtend'] && ! $ev['nofinish']) - $o .= "\r\nDTEND$tzid:" . datetime_convert($tz,'UTC', $ev['dtend'],'Ymd\\THis\\Z'); + $o .= "\r\nDTEND$tzid:" . datetime_convert('UTC', $tz, $ev['dtend'],'Ymd\\THis'); } else { if($ev['dtstart']) @@ -796,7 +797,7 @@ function parse_event_object($event_object_json) { $tz = $object['timezone'] ?? 'UTC'; $ev['summary'] = $object['summary'] ?? $object['name'] ?? ''; - $ev['description'] = html2bbcode($content['content']) ?? ''; + $ev['description'] = html2bbcode($object['content']) ?? ''; $ev['dtstart'] = $object['startTime'] ? datetime_convert('UTC', 'UTC', $object['startTime']) : ''; $ev['dtend'] = $object['endTime'] ? datetime_convert('UTC', 'UTC', $object['endTime']) : $ev['dtstart']; $ev['location'] = $object['location']['name'] ?? ''; diff --git a/include/features.php b/include/features.php index e57859aa8..d527f60e6 100644 --- a/include/features.php +++ b/include/features.php @@ -4,17 +4,15 @@ * Features management */ - - - +use Zotlabs\Lib\Config; function feature_enabled($uid,$feature) { - $x = get_config('feature_lock',$feature); + $x = Config::Get('feature_lock',$feature); if($x === false) { $x = get_pconfig($uid,'feature',$feature); if($x === false) { - $x = get_config('feature',$feature); + $x = Config::Get('feature',$feature); if($x === false) $x = get_feature_default($feature); } @@ -38,7 +36,7 @@ function get_feature_default($feature) { function feature_level($feature,$def) { - $x = get_config('feature_level',$feature); + $x = Config::Get('feature_level',$feature); if($x !== false) return intval($x); return $def; @@ -86,7 +84,7 @@ function get_features($filtered = true, $level = (-1)) { t('Start calendar week on Monday'), t('Default is Sunday'), false, - get_config('feature_lock','cal_first_day') + Config::Get('feature_lock','cal_first_day') ], [ @@ -94,7 +92,7 @@ function get_features($filtered = true, $level = (-1)) { t('Event Timezone Selection'), t('Allow event creation in timezones other than your own.'), false, - get_config('feature_lock','event_tz_select'), + Config::Get('feature_lock','event_tz_select'), ] ], @@ -108,7 +106,7 @@ function get_features($filtered = true, $level = (-1)) { t('Search by Date'), t('Ability to select posts by date ranges'), false, - get_config('feature_lock','archives') + Config::Get('feature_lock','archives') ], [ @@ -116,7 +114,7 @@ function get_features($filtered = true, $level = (-1)) { t('Tag Cloud'), t('Provide a personal tag cloud on your channel page'), false, - get_config('feature_lock','tagadelic'), + Config::Get('feature_lock','tagadelic'), ], [ @@ -124,7 +122,7 @@ function get_features($filtered = true, $level = (-1)) { t('Use blog/list mode'), t('Comments will be displayed separately'), false, - get_config('feature_lock','channel_list_mode'), + Config::Get('feature_lock','channel_list_mode'), ] ], @@ -137,7 +135,7 @@ function get_features($filtered = true, $level = (-1)) { t('Connection Filtering'), t('Filter incoming posts from connections based on keywords/content'), false, - get_config('feature_lock','connfilter') + Config::Get('feature_lock','connfilter') ] ], @@ -150,7 +148,7 @@ function get_features($filtered = true, $level = (-1)) { t('Community Tagging'), t('Ability to tag existing posts'), false, - get_config('feature_lock','commtag'), + Config::Get('feature_lock','commtag'), ], */ [ @@ -158,7 +156,7 @@ function get_features($filtered = true, $level = (-1)) { t('Emoji Reactions'), t('Add emoji reaction ability to posts'), true, - get_config('feature_lock','emojis'), + Config::Get('feature_lock','emojis'), ], [ @@ -166,7 +164,7 @@ function get_features($filtered = true, $level = (-1)) { t('Dislike Posts'), t('Ability to dislike posts/comments'), false, - get_config('feature_lock','dislike'), + Config::Get('feature_lock','dislike'), ], [ @@ -174,7 +172,7 @@ function get_features($filtered = true, $level = (-1)) { t('Star Posts'), t('Ability to mark special posts with a star indicator'), false, - get_config('feature_lock','star_posts'), + Config::Get('feature_lock','star_posts'), ], [ @@ -182,7 +180,7 @@ function get_features($filtered = true, $level = (-1)) { t('Reply on comment'), t('Ability to reply on selected comment'), false, - get_config('feature_lock','reply_to'), + Config::Get('feature_lock','reply_to'), ] ], @@ -196,7 +194,7 @@ function get_features($filtered = true, $level = (-1)) { t('Advanced Directory Search'), t('Allows creation of complex directory search queries'), false, - get_config('feature_lock','advanced_dirsearch'), + Config::Get('feature_lock','advanced_dirsearch'), ] ], @@ -210,7 +208,7 @@ function get_features($filtered = true, $level = (-1)) { t('Post Categories'), t('Add categories to your posts'), false, - get_config('feature_lock','categories'), + Config::Get('feature_lock','categories'), ], [ @@ -218,7 +216,7 @@ function get_features($filtered = true, $level = (-1)) { t('Large Photos'), t('Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails'), false, - get_config('feature_lock','large_photos'), + Config::Get('feature_lock','large_photos'), ], [ @@ -226,7 +224,7 @@ function get_features($filtered = true, $level = (-1)) { t('Even More Encryption'), t('Allow optional encryption of content end-to-end with a shared secret key'), false, - get_config('feature_lock','content_encrypt'), + Config::Get('feature_lock','content_encrypt'), ], [ @@ -234,7 +232,7 @@ function get_features($filtered = true, $level = (-1)) { t('Disable Comments'), t('Provide the option to disable comments for a post'), false, - get_config('feature_lock','disable_comments'), + Config::Get('feature_lock','disable_comments'), ], [ @@ -242,7 +240,7 @@ function get_features($filtered = true, $level = (-1)) { t('Delayed Posting'), t('Allow posts to be published at a later date'), false, - get_config('feature_lock','delayed_posting'), + Config::Get('feature_lock','delayed_posting'), ], [ @@ -250,7 +248,7 @@ function get_features($filtered = true, $level = (-1)) { t('Content Expiration'), t('Remove posts/comments and/or private messages at a future time'), false, - get_config('feature_lock','content_expire'), + Config::Get('feature_lock','content_expire'), ], [ @@ -258,7 +256,7 @@ function get_features($filtered = true, $level = (-1)) { t('Suppress Duplicate Posts/Comments'), t('Prevent posts with identical content to be published with less than two minutes in between submissions.'), true, - get_config('feature_lock','suppress_duplicates'), + Config::Get('feature_lock','suppress_duplicates'), ], [ @@ -266,7 +264,7 @@ function get_features($filtered = true, $level = (-1)) { t('Auto-save drafts of posts and comments'), t('Automatically saves post and comment drafts in local browser storage to help prevent accidental loss of compositions'), true, - get_config('feature_lock','auto_save_draft'), + Config::Get('feature_lock','auto_save_draft'), ] ], @@ -280,7 +278,7 @@ function get_features($filtered = true, $level = (-1)) { t('Navigation Channel Select'), t('Change channels directly from within the navigation dropdown menu'), false, - get_config('feature_lock','nav_channel_select'), + Config::Get('feature_lock','nav_channel_select'), ] ], @@ -294,7 +292,7 @@ function get_features($filtered = true, $level = (-1)) { t('Events Filter'), t('Ability to display only events'), false, - get_config('feature_lock','events_tab') + Config::Get('feature_lock','events_tab') ], [ @@ -302,7 +300,7 @@ function get_features($filtered = true, $level = (-1)) { t('Polls Filter'), t('Ability to display only polls'), false, - get_config('feature_lock','polls_tab') + Config::Get('feature_lock','polls_tab') ], [ @@ -310,7 +308,7 @@ function get_features($filtered = true, $level = (-1)) { t('Saved Searches'), t('Save search terms for re-use'), false, - get_config('feature_lock','savedsearch') + Config::Get('feature_lock','savedsearch') ], [ @@ -318,7 +316,7 @@ function get_features($filtered = true, $level = (-1)) { t('Saved Folders'), t('Ability to file posts under folders'), false, - get_config('feature_lock','filing'), + Config::Get('feature_lock','filing'), ], [ @@ -326,7 +324,7 @@ function get_features($filtered = true, $level = (-1)) { t('Alternate Stream Order'), t('Ability to order the stream by last post date, last comment date or unthreaded activities'), false, - get_config('feature_lock','order_tab') + Config::Get('feature_lock','order_tab') ], [ @@ -334,7 +332,7 @@ function get_features($filtered = true, $level = (-1)) { t('Contact Filter'), t('Ability to display only posts of a selected contact'), false, - get_config('feature_lock','name_tab') + Config::Get('feature_lock','name_tab') ], [ @@ -342,7 +340,7 @@ function get_features($filtered = true, $level = (-1)) { t('Forum Filter'), t('Ability to display only posts of a specific forum'), false, - get_config('feature_lock','forums_tab') + Config::Get('feature_lock','forums_tab') ], [ @@ -350,7 +348,7 @@ function get_features($filtered = true, $level = (-1)) { t('Personal Posts Filter'), t('Ability to display only posts that you\'ve interacted on'), false, - get_config('feature_lock','personal_tab') + Config::Get('feature_lock','personal_tab') ], [ @@ -358,7 +356,7 @@ function get_features($filtered = true, $level = (-1)) { t('Use blog/list mode'), t('Comments will be displayed separately'), false, - get_config('feature_lock','network_list_mode'), + Config::Get('feature_lock','network_list_mode'), ] ], @@ -372,7 +370,7 @@ function get_features($filtered = true, $level = (-1)) { t('Photo Location'), t('If location data is available on uploaded photos, link this to a map.'), false, - get_config('feature_lock','photo_location'), + Config::Get('feature_lock','photo_location'), ], [ @@ -380,7 +378,7 @@ function get_features($filtered = true, $level = (-1)) { t('Flag Adult Photos'), t('Provide photo edit option to hide inappropriate photos from default album view'), false, - get_config('feature_lock','adult_photo_flagging'), + Config::Get('feature_lock','adult_photo_flagging'), ] ], @@ -394,7 +392,7 @@ function get_features($filtered = true, $level = (-1)) { t('Advanced Profiles'), t('Additional profile sections and selections'), false, - get_config('feature_lock','advanced_profiles') + Config::Get('feature_lock','advanced_profiles') ], [ @@ -402,7 +400,7 @@ function get_features($filtered = true, $level = (-1)) { t('Profile Import/Export'), t('Save and load profile details across sites/channels'), false, - get_config('feature_lock','profile_export') + Config::Get('feature_lock','profile_export') ], [ @@ -410,7 +408,7 @@ function get_features($filtered = true, $level = (-1)) { t('Multiple Profiles'), t('Ability to create multiple profiles'), false, - get_config('feature_lock','multi_profiles') + Config::Get('feature_lock','multi_profiles') ] ] diff --git a/include/feedutils.php b/include/feedutils.php index f05c15414..a50214746 100644 --- a/include/feedutils.php +++ b/include/feedutils.php @@ -4,6 +4,8 @@ * @brief Some functions to work with XML feeds. */ +use Zotlabs\Lib\Config; + /** * @brief Return an Atom feed for channel. * @@ -1037,7 +1039,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { - $sys_expire = intval(get_config('system', 'default_expire_days')); + $sys_expire = intval(Config::Get('system', 'default_expire_days')); $chn_expire = intval($importer['channel_expire_days']); $expire_days = $sys_expire; @@ -1325,7 +1327,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { // but save the thread_parent in case we need to refer to it later. if($importer['channel_system']) { - if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,get_config('system','pubstream_incl'),get_config('system','pubstream_excl'))) { + if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,Config::Get('system','pubstream_incl'),Config::Get('system','pubstream_excl'))) { continue; } } @@ -1481,7 +1483,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { } if($importer['channel_system']) { - if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,get_config('system','pubstream_incl'),get_config('system','pubstream_excl'))) { + if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,Config::Get('system','pubstream_incl'),Config::Get('system','pubstream_excl'))) { continue; } } diff --git a/include/help.php b/include/help.php index 9e4be57f9..12721a30b 100644 --- a/include/help.php +++ b/include/help.php @@ -5,203 +5,6 @@ use CommerceGuys\Intl\Language\LanguageRepository; require_once('include/items.php'); -/** - * @brief - * - * @param string $path - * @param string $suffix (optional) default null - * @return string - */ -function get_help_fullpath($path, $suffix = null) { - - $docroot = (\App::$override_helproot) ? \App::$override_helproot : 'doc/'; - $docroot = (substr($docroot,-1)!='/') ? $docroot .= '/' : $docroot; - - // Determine the language and modify the path accordingly - $x = determine_help_language(); - $lang = $x['language']; - - // The English translation is at the root of /doc/. Other languages are in - // subfolders named by the language code such as "de", "es", etc. - if($lang !== 'en') { - $langpath = $lang . '/' . $path; - } else { - $langpath = $path; - } - - $newpath = (isset(\App::$override_helpfiles[$langpath])) ? \App::$override_helpfiles[$langpath] : $langpath; - $newpath = ($newpath == $langpath) ? $docroot . $newpath : $newpath; - - if ($suffix) { - if (file_exists($newpath . $suffix)) { - return $newpath; - } - } elseif (file_exists($newpath . '.md') || - file_exists($newpath . '.bb') || - file_exists($newpath . '.html')) { - return $newpath; - } - - $newpath = (isset(\App::$override_helpfiles[$path])) ? \App::$override_helpfiles[$path] : null; - - $newpath = (!$newpath) ? $docroot.$path : $newpath; - return $newpath; -} - - -/** - * @brief - * - * @param string $tocpath (optional) default false - * @return string - */ -function get_help_content($tocpath = false) { - - $doctype = 'markdown'; - - $text = ''; - - $path = (($tocpath !== false) ? $tocpath : ''); - $docroot = (\App::$override_helproot) ? \App::$override_helproot : 'doc/'; - $docroot = (substr($docroot,-1)!='/') ? $docroot .= '/' : $docroot; - - if($tocpath === false && argc() > 1) { - $path = ''; - for($x = 1; $x < argc(); $x ++) { - if(strlen($path)) - $path .= '/'; - $path .= argv($x); - } - } - - - if($path) { - $fullpath = get_help_fullpath($path); - $title = basename($path); - if(! $tocpath) - \App::$page['title'] = t('Help:') . ' ' . ucwords(str_replace('-',' ',notags($title))); - - // Check that there is a "toc" or "sitetoc" located at the specified path. - // If there is not, then there was not a translation of the table of contents - // available and so default back to the English TOC at /doc/toc.{html,bb,md} - // TODO: This is incompatible with the hierarchical TOC construction - // defined in /Zotlabs/Widget/Helpindex.php. - if($tocpath !== false && - load_doc_file($fullpath . '.md') === '' && - load_doc_file($fullpath . '.bb') === '' && - load_doc_file($fullpath . '.html') === '' - ) { - $path = $title; - } - $fullpath = get_help_fullpath($path); - $text = load_doc_file($fullpath . '.md'); - - if(! $text) { - $text = load_doc_file($fullpath . '.bb'); - if($text) - $doctype = 'bbcode'; - } - if(! $text) { - $text = load_doc_file($fullpath . '.html'); - if($text) - $doctype = 'html'; - } - } - - if(($tocpath) && (! $text)) - return ''; - - if($tocpath === false) { - if(! $text) { - $path = 'Site'; - $fullpath = get_help_fullpath($path,'.md'); - $text = load_doc_file($fullpath . '.md'); - \App::$page['title'] = t('Help'); - } - if(! $text) { - $doctype = 'bbcode'; - $path = 'main'; - $fullpath = get_help_fullpath($path,'.md'); - $text = load_doc_file($fullpath . '.bb'); - goaway('/help/about/about'); - \App::$page['title'] = t('Help'); - } - - if(! $text) { - header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found')); - $tpl = get_markup_template("404.tpl"); - return replace_macros($tpl, array( - '$message' => t('Page not found.') - )); - } - } - - if($doctype === 'html') - $content = parseIdentityAwareHTML($text); - if($doctype === 'markdown') { - # escape #include tags - $text = preg_replace('/#include/ism', '%%include', $text); - $content = MarkdownExtra::defaultTransform($text); - $content = preg_replace('/%%include/ism', '#include', $content); - } - if($doctype === 'bbcode') { - require_once('include/bbcode.php'); - $content = zidify_links(bbcode($text)); - // bbcode retargets external content to new windows. This content is internal. - $content = str_replace(' target="_blank"', '', $content); - } - - $content = preg_replace_callback("/#include (.*?)\;/ism", 'preg_callback_help_include', $content); - - return translate_projectname($content); -} - -function preg_callback_help_include($matches) { - - if($matches[1]) { - $include = str_replace($matches[0],load_doc_file($matches[1]),$matches[0]); - if(preg_match('/\.bb$/', $matches[1]) || preg_match('/\.txt$/', $matches[1])) { - require_once('include/bbcode.php'); - $include = zidify_links(bbcode($include)); - $include = str_replace(' target="_blank"','',$include); - } - elseif(preg_match('/\.md$/', $matches[1])) { - $include = MarkdownExtra::defaultTransform($include); - } - return $include; - } - -} - -/** - * @brief Determines help language. - * - * If the language was specified in the URL, override the language preference - * of the browser. Default to English if both of these are absent. - * - * @return array Associative array with: - * * \e string \b language - 2-letter ISO 639-1 code ("en") - * * \e boolean \b from_url - true if language from URL overrides browser default - */ -function determine_help_language() { - - $language_repository = new LanguageRepository; - $languages = $language_repository->getList(); - - if(array_key_exists(argv(1), $languages)) { - $lang = argv(1); - $from_url = true; - } else { - $lang = \App::$language; - if(! isset($lang)) - $lang = 'en'; - - $from_url = false; - } - - return array('language' => $lang, 'from_url' => $from_url); -} - function load_doc_file($s) { $c = find_doc_file($s); diff --git a/include/html2bbcode.php b/include/html2bbcode.php index 03e09cd62..8c35cdf03 100644 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -26,8 +26,12 @@ function node2bbcodesub(&$doc, $oldnode, $attributes, $startbb, $endbb) $xpath = new DomXPath($doc); $list = $xpath->query("//".$oldnode); + foreach ($list as $oldNode) { + if ($oldnode == 'li') + hz_syslog(print_r($oldNode,true)); + $attr = array(); if ($oldNode->attributes->length) foreach ($oldNode->attributes as $attribute) @@ -113,13 +117,6 @@ function html2bbcode($message) $message = str_replace("\r", "", $message); - $message = str_replace(array( - "<li><p>", - "</p></li>"), - array( - "<li>", - "</li>"), - $message); // remove namespaces $message = preg_replace('=<(\w+):(.+?)>=', '<removeme>', $message); @@ -129,7 +126,16 @@ function html2bbcode($message) //$message = mb_convert_encoding($message, 'HTML-ENTITIES', "UTF-8"); $message = mb_encode_numericentity($message, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'); + // TODO: It would be better to do the list parsing with node2bbcode() but it has serious issues when + // parsing nested lists. Especially if the li tag has no closing tag (which is valid). + + $message = preg_replace('/\<ul(.*?)\>/', '[list]', $message); + $message = preg_replace('/\<ol(.*?)\>/', '[list=1]', $message); + $message = str_replace(['<li><p>', '</p></li>'], ['<li>', '</li>'], $message); + $message = preg_replace('/\<li(.*?)\>/', '[*]', $message); + $message = str_replace(['</ul>', '</ol>'], '[/list]', $message); + $message = str_replace('</li>', '', $message); if(!$message) return; @@ -185,7 +191,11 @@ function html2bbcode($message) node2bbcode($doc, 'b', array(), '[b]', '[/b]'); node2bbcode($doc, 'i', array(), '[i]', '[/i]'); node2bbcode($doc, 'u', array(), '[u]', '[/u]'); + // The s tag is deprecated in HTML5 node2bbcode($doc, 's', array(), '[s]', '[/s]'); + node2bbcode($doc, 'del', [], '[s]', '[/s]'); + + node2bbcode($doc, 'mark', array(), '[mark]', '[/mark]'); node2bbcode($doc, 'span', array(), "", ""); @@ -205,11 +215,6 @@ function html2bbcode($message) node2bbcode($doc, 'audio', array('src'=>'/(.+)/'), '[audio]$1', '[/audio]'); // node2bbcode($doc, 'iframe', array('src'=>'/(.+)/'), '[iframe]$1', '[/iframe]'); - - node2bbcode($doc, 'ul', array(), "[list]", "[/list]"); - node2bbcode($doc, 'ol', array(), "[list=1]", "[/list]"); - node2bbcode($doc, 'li', array(), "[*]", ""); - node2bbcode($doc, 'hr', array(), "[hr]", ""); // node2bbcode($doc, 'table', array(), "", ""); diff --git a/include/html2plain.php b/include/html2plain.php index 5cb7ee35d..69fb5193a 100644 --- a/include/html2plain.php +++ b/include/html2plain.php @@ -129,6 +129,8 @@ function html2plain($html, $wraplength = 75, $compact = false) if(!$message) return; + $message = preg_replace('/\<li(.*?)\>/', "\n*", $message); + $message = str_replace('</li>', '', $message); $doc = new DOMDocument(); $doc->preserveWhiteSpace = false; @@ -178,7 +180,7 @@ function html2plain($html, $wraplength = 75, $compact = false) //node2bbcode($doc, 'ul', array(), "\n[list]", "[/list]\n"); //node2bbcode($doc, 'ol', array(), "\n[list=1]", "[/list]\n"); - node2bbcode($doc, 'li', array(), "\n* ", "\n"); + //node2bbcode($doc, 'li', array(), "\n* ", "\n"); node2bbcode($doc, 'hr', array(), "\n".str_repeat("-", 70)."\n", ""); @@ -194,7 +196,7 @@ function html2plain($html, $wraplength = 75, $compact = false) // Problem: there is no reliable way to detect if it is a link to a tag or profile //node2bbcode($doc, 'a', array('href'=>'/(.+)/'), ' $1 ', '', true); - node2bbcode($doc, 'a', array('href'=>'/(.+)/', 'rel'=>'oembed'), ' $1 ', '', true); + node2bbcode($doc, 'a', array('href'=>'/(.+)/', 'rel'=>'oembed'), ' $1 ', ''); //node2bbcode($doc, 'img', array('alt'=>'/(.+)/'), '$1', ''); //node2bbcode($doc, 'img', array('title'=>'/(.+)/'), '$1', ''); //node2bbcode($doc, 'img', array(), '', ''); @@ -203,7 +205,7 @@ function html2plain($html, $wraplength = 75, $compact = false) else node2bbcode($doc, 'img', array('src'=>'/(.+)/'), '', ''); - node2bbcode($doc, 'iframe', array('src'=>'/(.+)/'), ' $1 ', '', true); + node2bbcode($doc, 'iframe', array('src'=>'/(.+)/'), ' $1 ', ''); $message = $doc->saveHTML(); diff --git a/include/hubloc.php b/include/hubloc.php index 4d2980a6b..982455f9c 100644 --- a/include/hubloc.php +++ b/include/hubloc.php @@ -5,6 +5,7 @@ */ use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; /** * @brief Create an array for hubloc table and insert record. @@ -129,7 +130,7 @@ function remove_obsolete_hublocs() { $r = q("select hubloc_id from hubloc where hubloc_url = '%s' and hubloc_sitekey = '%s'", dbesc(z_root()), - dbesc(get_config('system', 'pubkey')) + dbesc(Config::Get('system', 'pubkey')) ); if((! $r) || (! count($r))) return; @@ -139,11 +140,11 @@ function remove_obsolete_hublocs() { // Do we have any invalid ones? $r = q("select hubloc_id, hubloc_hash from hubloc where hubloc_sitekey = '%s' and hubloc_url != '%s'", - dbesc(get_config('system', 'pubkey')), + dbesc(Config::Get('system', 'pubkey')), dbesc(z_root()) ); $p = q("select hubloc_id, hubloc_hash from hubloc where hubloc_sitekey != '%s' and hubloc_url = '%s'", - dbesc(get_config('system', 'pubkey')), + dbesc(Config::Get('system', 'pubkey')), dbesc(z_root()) ); if(is_array($r) && is_array($p)) @@ -156,7 +157,7 @@ function remove_obsolete_hublocs() { logger('remove_obsolete_hublocs: removing ' . count($r) . ' hublocs.'); - $interval = get_config('queueworker', 'queue_interval', 500000); + $interval = Config::Get('queueworker', 'queue_interval', 500000); foreach($r as $rr) { q("update hubloc set hubloc_deleted = 1 where hubloc_id = %d", diff --git a/include/import.php b/include/import.php index 7dac518f5..479c2c255 100644 --- a/include/import.php +++ b/include/import.php @@ -1,6 +1,7 @@ <?php use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Lib\IConfig; use Zotlabs\Lib\Libzot; @@ -1479,7 +1480,7 @@ function sync_files($channel, $files) { fclose($fp); // Override remote hub thumbnails storage settings - if(! boolval(get_config('system','photo_storage_type', 1))) { + if(! boolval(Config::Get('system','photo_storage_type', 1))) { $p['os_storage'] = 0; $p['content'] = file_get_contents($stored_image); @unlink($stored_image); diff --git a/include/items.php b/include/items.php index a5a23650e..dc9e9a7d9 100644 --- a/include/items.php +++ b/include/items.php @@ -4,6 +4,7 @@ * @brief Items related functions. */ +use Zotlabs\Lib\Config; use Zotlabs\Lib\Crypto; use Zotlabs\Lib\Enotify; use Zotlabs\Lib\MarkdownSoap; @@ -35,10 +36,10 @@ require_once('include/permissions.php'); * @param boolean $include_groups * @return array containing the recipients */ -function collect_recipients($item, &$private_envelope,$include_groups = true) { +function collect_recipients($item, &$private_envelope, $include_groups = true) { $private_envelope = ((intval($item['item_private'])) ? true : false); - $recipients = array(); + $recipients = []; if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid']) { @@ -53,8 +54,15 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) { $allow_groups = []; } - $raw_recipients = array_unique(array_merge($allow_people, $allow_groups)); - $recipients = deliverable_abook_xchans($item['uid'], $raw_recipients); + $recipients = array_unique(array_merge($allow_people, $allow_groups)); + + if ($recipients) { + // deliverable_abook_xchans() will return all deliverable xchans + // if passed an empty array as 2nd argument (no filtering). + // Hence only call it if we do actually have any recipients. + $recipients = deliverable_abook_xchans($item['uid'], $recipients); + } + // if you specifically deny somebody but haven't allowed anybody, we'll allow everybody in your // address book minus the denied connections. The post is still private and can't be seen publicly @@ -1078,7 +1086,7 @@ function encode_item($item,$mirror = false,$zap_compat = false) { $x['type'] = 'activity'; $x['encoding'] = 'zot'; - $key = get_config('system','prvkey'); + $key = Config::Get('system','prvkey'); // If we're trying to backup an item so that it's recoverable or for export/imprt, // add all the attributes we need to recover it @@ -2696,7 +2704,7 @@ function tag_deliver($uid, $item_id) { logger('Post mentions: ' . print_r($terms,true), LOGGER_DATA); } - $max_forums = get_config('system','max_tagged_forums',2); + $max_forums = Config::Get('system','max_tagged_forums',2); $matched_forums = 0; @@ -2968,7 +2976,7 @@ function tgroup_check($uid, $item) { if(! $u) return false; - $max_forums = get_config('system','max_tagged_forums',2); + $max_forums = Config::Get('system','max_tagged_forums',2); $matched_forums = 0; $link = normalise_link($u[0]['xchan_url']); @@ -3073,7 +3081,7 @@ function i_am_mentioned($channel, $item, $check_groups = false) { } } } - $unless = intval(get_pconfig($channel['channel_id'], 'system', 'unless_mention_count', get_config('system', 'unless_mention_count', 20))); + $unless = intval(get_pconfig($channel['channel_id'], 'system', 'unless_mention_count', Config::Get('system', 'unless_mention_count', 20))); if ($unless && $terms && count($terms) > $unless) { $tagged = false; } @@ -3762,7 +3770,7 @@ function item_expire($uid,$days,$comment_days = 7) { $sql_extra = ((intval($expire_network_only)) ? " AND item_wall = 0 " : ""); - $expire_limit = get_config('system','expire_limit', 1000); + $expire_limit = Config::Get('system','expire_limit', 1000); $item_normal = item_normal(); diff --git a/include/language.php b/include/language.php index 1b2e7332e..538f67d90 100644 --- a/include/language.php +++ b/include/language.php @@ -10,6 +10,7 @@ use CommerceGuys\Intl\Language\LanguageRepository; use LanguageDetection\Language; +use Zotlabs\Lib\Config; /** * @brief Get the browser's submitted preferred languages. @@ -17,7 +18,7 @@ use LanguageDetection\Language; * This functions parses the HTTP_ACCEPT_LANGUAGE header sent by the browser and * extracts the preferred languages and their priority. * - * Get the language setting directly from system variables, bypassing get_config() + * Get the language setting directly from system variables, bypassing Config::Get() * as database may not yet be configured. * * If possible, we use the value from the browser. @@ -197,10 +198,10 @@ function load_translation_table($lang, $install = false) { * * @param string $s string that should get translated * @param string $ctx (optional) context to appear in po file - * @return translated string if exists, otherwise return $s + * @return string translated string if exists, otherwise return $s * */ -function t($s, $ctx = '') { +function t($s, $ctx = ''): string { $cs = $ctx ? '__ctx:' . $ctx . '__ ' . $s : $s; if (x(App::$strings, $cs)) { @@ -313,8 +314,8 @@ function detect_language($s) { return EMPTY_STR; } - $min_length = get_config('system', 'language_detect_min_length', LANGUAGE_DETECT_MIN_LENGTH); - $min_confidence = get_config('system', 'language_detect_min_confidence', LANGUAGE_DETECT_MIN_CONFIDENCE); + $min_length = Config::Get('system', 'language_detect_min_length', LANGUAGE_DETECT_MIN_LENGTH); + $min_confidence = Config::Get('system', 'language_detect_min_confidence', LANGUAGE_DETECT_MIN_CONFIDENCE); // embedded apps have long base64 strings which will trip up the detector. $naked_body = preg_replace('/\[app\](.*?)\[\/app\]/', '', $s); diff --git a/include/menu.php b/include/menu.php index 1f65f987d..2fcf88bca 100644 --- a/include/menu.php +++ b/include/menu.php @@ -166,7 +166,8 @@ function menu_create($arr) { if($r) return false; - $t = datetime_convert(); + $time_created = datetime_convert('UTC', 'UTC', empty($arr['menu_created']) ? 'now' : $arr['menu_created']); + $time_edited = empty($arr['menu_edited']) ? $time_created : datetime_convert('UTC', 'UTC', $arr['menu_edited']); $r = q("insert into menu ( menu_name, menu_desc, menu_flags, menu_channel_id, menu_created, menu_edited ) values( '%s', '%s', %d, %d, '%s', '%s' )", @@ -174,8 +175,8 @@ function menu_create($arr) { dbesc($menu_desc), intval($menu_flags), intval($menu_channel_id), - dbesc(datetime_convert('UTC','UTC',(($arr['menu_created']) ? $arr['menu_created'] : $t))), - dbesc(datetime_convert('UTC','UTC',(($arr['menu_edited']) ? $arr['menu_edited'] : $t))) + dbesc($time_created), + dbesc($time_edited) ); if(! $r) return false; diff --git a/include/nav.php b/include/nav.php index e4df7e4e5..a68d564a0 100644 --- a/include/nav.php +++ b/include/nav.php @@ -2,6 +2,7 @@ use \Zotlabs\Lib\Apps; use \Zotlabs\Lib\Chatroom; +use \Zotlabs\Lib\Config; require_once('include/security.php'); require_once('include/menu.php'); @@ -57,10 +58,10 @@ function nav($template = 'default') { * */ - $banner = get_config('system', 'banner'); + $banner = Config::Get('system', 'banner'); if ($banner === false) - $banner = get_config('system', 'sitename'); + $banner = Config::Get('system', 'sitename'); call_hooks('get_banner', $banner); @@ -175,15 +176,15 @@ function nav($template = 'default') { ]; } - if ((get_config('system', 'register_policy') == REGISTER_OPEN || get_config('system', 'register_policy') == REGISTER_APPROVE) && empty($_SESSION['authenticated'])) { + if ((Config::Get('system', 'register_policy') == REGISTER_OPEN || Config::Get('system', 'register_policy') == REGISTER_APPROVE) && empty($_SESSION['authenticated'])) { $nav['register'] = ['register', t('Register'), "", t('Create an account'), 'register_nav_btn']; } // TODO: update help content for various modules - if (false /* !get_config('system', 'hide_help') */) { + if (false /* !Config::Get('system', 'hide_help') */) { $help_url = z_root() . '/help?f=&cmd=' . App::$cmd; $context_help = ''; - $enable_context_help = ((intval(get_config('system', 'enable_context_help')) === 1 || get_config('system', 'enable_context_help') === false) ? true : false); + $enable_context_help = ((intval(Config::Get('system', 'enable_context_help')) === 1 || Config::Get('system', 'enable_context_help') === false) ? true : false); if ($enable_context_help === true) { require_once('include/help.php'); $context_help = load_context_help(); @@ -350,7 +351,7 @@ function nav($template = 'default') { '$pleasewait' => t('Please wait...'), '$nav_apps' => $nav_apps, '$navbar_apps' => $navbar_apps, - '$channel_menu' => get_pconfig(App::$profile_uid, 'system', 'channel_menu', get_config('system', 'channel_menu')), + '$channel_menu' => get_pconfig(App::$profile_uid, 'system', 'channel_menu', Config::Get('system', 'channel_menu')), '$channel_thumb' => ((App::$profile) ? App::$profile['thumb'] : ''), '$channel_apps' => $channel_apps, '$addapps' => t('Apps'), diff --git a/include/network.php b/include/network.php index a5c14f9d1..b3a3d715c 100644 --- a/include/network.php +++ b/include/network.php @@ -1,6 +1,7 @@ <?php use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Zotfinger; use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Queue; @@ -67,7 +68,7 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; zot)'); @curl_setopt($ch, CURLOPT_ENCODING, ''); - $ciphers = @get_config('system','curl_ssl_ciphers'); + $ciphers = @Config::Get('system','curl_ssl_ciphers'); if($ciphers) @curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, $ciphers); @@ -114,16 +115,16 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_TIMEOUT, intval($opts['timeout'])); } else { - $curl_time = intval(@get_config('system','curl_timeout')); - @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60)); + $curl_time = intval(@Config::Get('system','curl_timeout')); + @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== 0) ? $curl_time : 60)); } if(x($opts,'connecttimeout') && intval($opts['connecttimeout'])) { @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, intval($opts['connecttimeout'])); } else { - $curl_contime = intval(@get_config('system','curl_connecttimeout')); - @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (($curl_contime !== false) ? $curl_contime : 30)); + $curl_contime = intval(@Config::Get('system','curl_connecttimeout')); + @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (($curl_contime !== 0) ? $curl_contime : 30)); } if(x($opts,'http_auth')) { @@ -145,11 +146,11 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, ((x($opts,'novalidate') && intval($opts['novalidate'])) ? false : true)); - $prx = @get_config('system','proxy'); + $prx = @Config::Get('system','proxy'); if(strlen($prx)) { @curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); @curl_setopt($ch, CURLOPT_PROXY, $prx); - $prxusr = @get_config('system','proxyuser'); + $prxusr = @Config::Get('system','proxyuser'); if(strlen($prxusr)) @curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxusr); } @@ -263,7 +264,7 @@ function z_post_url($url, $params, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; zot)"); @curl_setopt($ch, CURLOPT_ENCODING, ''); - $ciphers = @get_config('system','curl_ssl_ciphers'); + $ciphers = @Config::Get('system','curl_ssl_ciphers'); if($ciphers) @curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, $ciphers); @@ -296,8 +297,8 @@ function z_post_url($url, $params, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_TIMEOUT, $opts['timeout']); } else { - $curl_time = intval(@get_config('system','curl_timeout')); - @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60)); + $curl_time = intval(@Config::Get('system','curl_timeout')); + @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== 0) ? $curl_time : 60)); } if(x($opts,'http_auth')) { @@ -318,11 +319,11 @@ function z_post_url($url, $params, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, ((x($opts,'novalidate') && intval($opts['novalidate'])) ? false : true)); - $prx = get_config('system','proxy'); + $prx = Config::Get('system','proxy'); if(strlen($prx)) { @curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); @curl_setopt($ch, CURLOPT_PROXY, $prx); - $prxusr = get_config('system','proxyuser'); + $prxusr = Config::Get('system','proxyuser'); if(strlen($prxusr)) @curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxusr); } @@ -555,12 +556,15 @@ function z_dns_check($h,$check_mx = 0) { return((@dns_get_record($h,$opts) || filter_var($h, FILTER_VALIDATE_IP)) ? true : false); } -function is_local_url($url) { - if (str_starts_with($url, z_root()) || str_starts_with($url, '/')) { - return true; - } - - return false; +/** + * Returns whether an URL is local to the site, or not. + * + * @param string $url The URL to check + * + * @return bool True if the URL is local, false otherwise. + */ +function is_local_url(string $url): bool { + return str_starts_with($url, z_root()) || str_starts_with($url, '/'); } /** @@ -603,7 +607,7 @@ function validate_url(&$url) { */ function validate_email(string $addr): bool { - if(get_config('system', 'disable_email_validation')) + if(Config::Get('system', 'disable_email_validation')) return true; $matches = array(); @@ -638,7 +642,7 @@ function allowed_url($url) { return false; } - $str_allowed = get_config('system', 'allowed_sites'); + $str_allowed = Config::Get('system', 'allowed_sites'); if(! $str_allowed) return true; @@ -682,8 +686,8 @@ function allowed_email($email) { if(! $domain) return false; - $str_allowed = get_config('system', 'allowed_email'); - $str_not_allowed = get_config('system', 'not_allowed_email'); + $str_allowed = Config::Get('system', 'allowed_email'); + $str_not_allowed = Config::Get('system', 'not_allowed_email'); if(! $str_allowed && ! $str_not_allowed) return true; @@ -1472,7 +1476,7 @@ function do_delivery($deliveries, $force = false) { /* $x = q("select count(outq_hash) as total from outq where outq_delivered = 0"); - if(intval($x[0]['total']) > intval(get_config('system','force_queue_threshold',3000)) && (! $force)) { + if(intval($x[0]['total']) > intval(Config::Get('system','force_queue_threshold',3000)) && (! $force)) { logger('immediate delivery deferred.', LOGGER_DEBUG, LOG_INFO); foreach($deliveries as $d) { Queue::update($d); @@ -1482,9 +1486,9 @@ function do_delivery($deliveries, $force = false) { */ - $interval = get_config('queueworker', 'queue_interval', 500000); + $interval = Config::Get('queueworker', 'queue_interval', 500000); - $deliveries_per_process = intval(get_config('system','delivery_batch_count')); + $deliveries_per_process = intval(Config::Get('system','delivery_batch_count')); if($deliveries_per_process <= 0) $deliveries_per_process = 1; @@ -1542,9 +1546,9 @@ function get_site_info() { $admin = false; } - $def_service_class = get_config('system','default_service_class'); + $def_service_class = Config::Get('system','default_service_class'); if($def_service_class) - $service_class = get_config('service_class',$def_service_class); + $service_class = Config::Get('service_class',$def_service_class); else $service_class = false; @@ -1555,9 +1559,9 @@ function get_site_info() { if(! isset($commit) || strlen($commit) > 16) $commit = ''; - $site_info = get_config('system','info'); - $site_name = get_config('system','sitename'); - if(! get_config('system','hidden_version_siteinfo')) { + $site_info = Config::Get('system','info'); + $site_name = Config::Get('system','sitename'); + if(! Config::Get('system','hidden_version_siteinfo')) { $version = Zotlabs\Lib\System::get_project_version(); $tag = Zotlabs\Lib\System::get_std_version(); @@ -1573,15 +1577,15 @@ function get_site_info() { } //Statistics - $channels_total_stat = intval(get_config('system','channels_total_stat')); - $channels_active_halfyear_stat = intval(get_config('system','channels_active_halfyear_stat')); - $channels_active_monthly_stat = intval(get_config('system','channels_active_monthly_stat')); - $local_posts_stat = intval(get_config('system','local_posts_stat')); - $local_comments_stat = intval(get_config('system','local_comments_stat')); - $hide_in_statistics = intval(get_config('system','hide_in_statistics')); - $site_expire = intval(get_config('system', 'default_expire_days')); - - load_config('feature_lock'); + $channels_total_stat = intval(Config::Get('system','channels_total_stat')); + $channels_active_halfyear_stat = intval(Config::Get('system','channels_active_halfyear_stat')); + $channels_active_monthly_stat = intval(Config::Get('system','channels_active_monthly_stat')); + $local_posts_stat = intval(Config::Get('system','local_posts_stat')); + $local_comments_stat = intval(Config::Get('system','local_comments_stat')); + $hide_in_statistics = intval(Config::Get('system','hide_in_statistics')); + $site_expire = intval(Config::Get('system', 'default_expire_days')); + + Config::Load('feature_lock'); $locked_features = array(); if(is_array(App::$config['feature_lock']) && count(App::$config['feature_lock'])) { foreach(App::$config['feature_lock'] as $k => $v) { @@ -1602,18 +1606,18 @@ function get_site_info() { 'server_role' => Zotlabs\Lib\System::get_server_role(), 'commit' => $commit, 'plugins' => $visible_plugins, - 'register_policy' => $register_policy[get_config('system','register_policy')], - 'invitation_only' => (bool) intval(get_config('system','invitation_only')), - 'directory_mode' => $directory_mode[get_config('system','directory_mode')], - 'directory_server' => get_config('system','directory_server'), - 'language' => get_config('system','language'), - 'rss_connections' => (bool) intval(get_config('system','feed_contacts')), + 'register_policy' => $register_policy[Config::Get('system','register_policy')], + 'invitation_only' => (bool) intval(Config::Get('system','invitation_only')), + 'directory_mode' => $directory_mode[Config::Get('system','directory_mode')], + 'directory_server' => Config::Get('system','directory_server'), + 'language' => Config::Get('system','language'), + 'rss_connections' => (bool) intval(Config::Get('system','feed_contacts')), 'expiration' => $site_expire, 'default_service_restrictions' => $service_class, 'locked_features' => $locked_features, 'admin' => $admin, 'dbdriver' => DBA::$dba->getdriver() . ' ' . ((ACTIVE_DBTYPE == DBTYPE_POSTGRES) ? 'postgres' : 'mysql'), - 'lastpoll' => get_config('system','lastpoll'), + 'lastpoll' => Config::Get('system','lastpoll'), 'info' => (($site_info) ? $site_info : ''), 'channels_total' => $channels_total_stat, 'hide_in_statistics' => $hide_in_statistics @@ -1651,7 +1655,7 @@ function check_siteallowed($url) { if(array_key_exists('allowed',$arr)) return $arr['allowed']; - $bl1 = get_config('system','whitelisted_sites'); + $bl1 = Config::Get('system','whitelisted_sites'); if(is_array($bl1) && $bl1) { foreach($bl1 as $bl) { if($bl1 === '*') @@ -1660,7 +1664,7 @@ function check_siteallowed($url) { return true; } } - $bl1 = get_config('system','blacklisted_sites'); + $bl1 = Config::Get('system','blacklisted_sites'); if(is_array($bl1) && $bl1) { foreach($bl1 as $bl) { if($bl1 === '*') @@ -1696,7 +1700,7 @@ function check_channelallowed($hash) { if(array_key_exists('allowed',$arr)) return $arr['allowed']; - $bl1 = get_config('system','whitelisted_channels'); + $bl1 = Config::Get('system','whitelisted_channels'); if(is_array($bl1) && $bl1) { foreach($bl1 as $bl) { if($bl1 === '*') @@ -1705,7 +1709,7 @@ function check_channelallowed($hash) { return true; } } - $bl1 = get_config('system','blacklisted_channels'); + $bl1 = Config::Get('system','blacklisted_channels'); if(is_array($bl1) && $bl1) { foreach($bl1 as $bl) { if($bl1 === '*') @@ -1810,17 +1814,17 @@ function network_to_name($s) { function z_mail($params) { if(! $params['fromEmail']) { - $params['fromEmail'] = get_config('system','from_email'); + $params['fromEmail'] = Config::Get('system','from_email'); if(! $params['fromEmail']) $params['fromEmail'] = 'Administrator' . '@' . App::get_hostname(); } if(! $params['fromName']) { - $params['fromName'] = get_config('system','from_email_name'); + $params['fromName'] = Config::Get('system','from_email_name'); if(! $params['fromName']) $params['fromName'] = Zotlabs\Lib\System::get_site_name(); } if(! $params['replyTo']) { - $params['replyTo'] = get_config('system','reply_address'); + $params['replyTo'] = Config::Get('system','reply_address'); if(! $params['replyTo']) $params['replyTo'] = 'noreply' . '@' . App::get_hostname(); } @@ -2145,9 +2149,9 @@ function get_request_string($url) { * * @param array $parsed_url An associative array as produced by `parse_url`. * - * @return The reassembled URL as a string. + * @return string The reassembled URL as a string. */ -function unparse_url($parsed_url) { +function unparse_url(array $parsed_url): string { $scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : ''; $host = isset($parsed_url['host']) ? $parsed_url['host'] : ''; $port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : ''; @@ -2157,5 +2161,5 @@ function unparse_url($parsed_url) { $path = isset($parsed_url['path']) ? $parsed_url['path'] : ''; $query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : ''; $fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : ''; - return "$scheme$user$pass$host$port$path$query$fragment"; + return $scheme . $user . $pass . $host . $port . $path . $query . $fragment; } diff --git a/include/oauth.php b/include/oauth.php index 845ec4558..3426f9ca5 100644 --- a/include/oauth.php +++ b/include/oauth.php @@ -1,11 +1,13 @@ <?php /** @file */ -/** +/** * OAuth server * Based on oauth2-php <http://code.google.com/p/oauth2-php/> - * + * */ +use Zotlabs\Lib\Config; + define('REQUEST_TOKEN_DURATION', 300); define('ACCESS_TOKEN_DURATION', 31536000); @@ -18,7 +20,7 @@ class ZotOAuth1DataStore extends OAuth1DataStore { function gen_token(){ return md5(base64_encode(pack('N6', mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand(), uniqid()))); } - + function lookup_consumer($consumer_key) { logger('consumer_key: ' . $consumer_key, LOGGER_DEBUG); @@ -72,7 +74,7 @@ class ZotOAuth1DataStore extends OAuth1DataStore { $key = $this->gen_token(); $sec = $this->gen_token(); - + if ($consumer->key){ $k = $consumer->key; } else { @@ -94,19 +96,19 @@ class ZotOAuth1DataStore extends OAuth1DataStore { function new_access_token($token, $consumer, $verifier = null) { logger(__function__.":".$token.", ". $consumer.", ". $verifier, LOGGER_DEBUG); - + // return a new access token attached to this consumer // for the user associated with this token if the request token // is authorized // should also invalidate the request token - + $ret=Null; - + // get user for this verifier - $uverifier = get_config("oauth", $verifier); + $uverifier = Config::Get("oauth", $verifier); logger(__function__.":".$verifier.",".$uverifier, LOGGER_DEBUG); if (is_null($verifier) || ($uverifier!==false)) { - + $key = $this->gen_token(); $sec = $this->gen_token(); @@ -119,16 +121,16 @@ class ZotOAuth1DataStore extends OAuth1DataStore { intval($uverifier)); if ($r) - $ret = new OAuth1Token($key,$sec); + $ret = new OAuth1Token($key,$sec); } - - + + q("DELETE FROM tokens WHERE id='%s'", $token->key); - - + + if (!is_null($ret) && $uverifier!==false) { - del_config("oauth", $verifier); - + Config::Delete("oauth", $verifier); + // $apps = get_pconfig($uverifier, "oauth", "apps"); // if ($apps===false) $apps=array(); // $apps[] = $consumer->key; @@ -145,7 +147,7 @@ class ZotOAuth1 extends OAuth1Server { $this->add_signature_method(new OAuth1SignatureMethod_PLAINTEXT()); $this->add_signature_method(new OAuth1SignatureMethod_HMAC_SHA1()); } - + function loginUser($uid){ logger("ZotOAuth1::loginUser $uid"); @@ -174,7 +176,7 @@ class ZotOAuth1 extends OAuth1Server { $_SESSION['allow_api'] = true; } } - + } /* @@ -195,13 +197,13 @@ class FKOAuth2 extends OAuth2 { dbesc($client_secret), dbesc($redirect_uri) ); - + return $r; } protected function checkClientCredentials($client_id, $client_secret = NULL) { $client_secret = $this->db_secret($client_secret); - + $r = q("SELECT pw FROM clients WHERE client_id = '%s'", dbesc($client_id)); @@ -223,21 +225,21 @@ class FKOAuth2 extends OAuth2 { protected function getAccessToken($oauth_token) { $r = q("SELECT client_id, expires, scope FROM tokens WHERE id = '%s'", dbesc($oauth_token)); - + if (count($r)) return $r[0]; return null; } - + protected function setAccessToken($oauth_token, $client_id, $expires, $scope = NULL) { $r = q("INSERT INTO tokens (id, client_id, expires, scope) VALUES ('%s', '%s', %d, '%s')", dbesc($oauth_token), dbesc($client_id), intval($expires), dbesc($scope)); - + return $r; } @@ -251,23 +253,23 @@ class FKOAuth2 extends OAuth2 { protected function getAuthCode($code) { $r = q("SELECT id, client_id, redirect_uri, expires, auth_scope FROM auth_codes WHERE id = '%s'", dbesc($code)); - + if (count($r)) return $r[0]; return null; } protected function setAuthCode($code, $client_id, $redirect_uri, $expires, $scope = NULL) { - $r = q("INSERT INTO auth_codes - (id, client_id, redirect_uri, expires, auth_scope) VALUES + $r = q("INSERT INTO auth_codes + (id, client_id, redirect_uri, expires, auth_scope) VALUES ('%s', '%s', '%s', %d, '%s')", dbesc($code), dbesc($client_id), dbesc($redirect_uri), intval($expires), dbesc($scope)); - return $r; - } - + return $r; + } + } */ diff --git a/include/oauth2.php b/include/oauth2.php index 3a71a651d..f7a279892 100644 --- a/include/oauth2.php +++ b/include/oauth2.php @@ -12,12 +12,12 @@ $oauth2_server->addGrantType(new OAuth2\GrantType\ClientCredentials($storage)); $oauth2_server->addGrantType(new OAuth2\GrantType\AuthorizationCode($storage)); - $keyStorage = new OAuth2\Storage\Memory( [ - 'keys' => [ - 'public_key' => get_config('system','pubkey'), - 'private_key' => get_config('system','prvkey') + $keyStorage = new OAuth2\Storage\Memory( [ + 'keys' => [ + 'public_key' => Config::Get('system','pubkey'), + 'private_key' => Config::Get('system','prvkey') ] ]); $oauth2_server->addStorage($keyStorage,'public_key'); -*/
\ No newline at end of file +*/ diff --git a/include/oembed.php b/include/oembed.php index a90c91641..f52f73225 100644 --- a/include/oembed.php +++ b/include/oembed.php @@ -1,7 +1,7 @@ <?php /** @file */ use Zotlabs\Lib\Cache; - +use Zotlabs\Lib\Config; function oembed_replacecb($matches){ @@ -28,7 +28,7 @@ function oembed_action($embedurl) { logger('oembed_action: ' . $embedurl, LOGGER_DEBUG, LOG_INFO); if(strpos($embedurl,'http://') === 0) { - if(intval(get_config('system','embed_sslonly'))) { + if(intval(Config::Get('system','embed_sslonly'))) { $action = 'block'; } } @@ -39,7 +39,7 @@ function oembed_action($embedurl) { // site white/black list - if(($x = get_config('system','embed_deny'))) { + if(($x = Config::Get('system','embed_deny'))) { if(($x) && (! is_array($x))) $x = explode("\n",$x); if($x) { @@ -55,7 +55,7 @@ function oembed_action($embedurl) { $found = false; - if(($x = get_config('system','embed_allow'))) { + if(($x = Config::Get('system','embed_allow'))) { if(($x) && (! is_array($x))) $x = explode("\n",$x); if($x) { @@ -139,16 +139,16 @@ function oembed_fetch_url($embedurl){ // we should try to cache this and avoid a lookup on each render $is_matrix = is_matrix_url($embedurl); - $zrl = ((get_config('system','oembed_zrl')) ? $is_matrix : false); + $zrl = ((Config::Get('system','oembed_zrl')) ? $is_matrix : false); $furl = ((local_channel() && $zrl) ? zid($embedurl) : $embedurl); - if($action !== 'block' && (! get_config('system','oembed_cache_disable'))) { + if($action !== 'block' && (! Config::Get('system','oembed_cache_disable'))) { $txt = Cache::get('[' . App::$videowidth . '] ' . $furl); } - if(strpos(strtolower($embedurl),'.pdf') !== false && get_config('system','inline_pdf')) { + if(strpos(strtolower($embedurl),'.pdf') !== false && Config::Get('system','inline_pdf')) { $action = 'allow'; $j = [ 'html' => '<object data="' . $embedurl . '" type="application/pdf" style="width: 100%; height: 300px;"></object>', @@ -164,7 +164,7 @@ function oembed_fetch_url($embedurl){ $txt = EMPTY_STR; if ($action !== 'block') { - $max_oembed_size = get_config('system', 'oembed_max_size', 1 * 1024 * 1024 /* 1MB */); + $max_oembed_size = Config::Get('system', 'oembed_max_size', 1 * 1024 * 1024 /* 1MB */); stream_context_set_default( [ @@ -259,7 +259,7 @@ function oembed_fetch_url($embedurl){ // save in cache - if(! get_config('system','oembed_cache_disable')) + if(! Config::Get('system','oembed_cache_disable')) Cache::set('[' . App::$videowidth . '] ' . $furl, $txt); } @@ -328,7 +328,7 @@ function oembed_format_object($j){ $jhtml = oembed_iframe($j['embedurl'],(isset($j['width']) ? $j['width'] : null), (isset($j['height']) ? $j['height'] : null)); - $ret="<span class='oembed " . $j['type'] . "'>"; + $ret="<span class='clearfix d-block oembed " . $j['type'] . "'>"; switch ($j['type']) { case "video": { if (isset($j['thumbnail_url'])) { @@ -351,7 +351,6 @@ function oembed_format_object($j){ } else { $ret=$jhtml; } - $ret.="<br>"; }; break; case "photo": { $ret.= "<img width='".$j['width']."' src='".$j['url']."'>"; @@ -386,15 +385,15 @@ function oembed_format_object($j){ // add link to source if not present in "rich" type if ( $j['type'] != 'rich' || !strpos($j['html'],$embedurl) ){ $embedlink = (isset($j['title']))?$j['title'] : $embedurl; - $ret .= '<br />' . "<a href='$embedurl' rel='oembed'>$embedlink</a>"; + $ret .= "<a href='$embedurl' rel='oembed'>$embedlink</a>"; $ret .= "<br />"; if (isset($j['author_name'])) $ret .= t(' by ') . $j['author_name']; if (isset($j['provider_name'])) $ret .= t(' on ') . $j['provider_name']; } else { // add <a> for html2bbcode conversion - $ret .= "<br /><a href='$embedurl' rel='oembed'>$embedurl</a>"; + $ret .= "<a href='$embedurl' rel='oembed'>$embedurl</a>"; } - $ret.="<br style='clear:left'></span>"; + $ret.="</span>"; // mb_convert_encoding() is deprecated // return mb_convert_encoding($ret, 'HTML-ENTITIES', mb_detect_encoding($ret)); @@ -414,8 +413,8 @@ function oembed_iframe($src,$width,$height) { } // try and leave some room for the description line. - $height = intval($height) + 80; - $width = intval($width) + 40; + $height = intval($height); + $width = intval($width); $s = z_root() . '/oembed/' . base64url_encode($src); @@ -429,7 +428,7 @@ function oembed_iframe($src,$width,$height) { function oembed_bbcode2html($text){ - $stopoembed = get_config("system","no_oembed"); + $stopoembed = Config::Get("system","no_oembed"); if ($stopoembed == true){ return preg_replace("/\[embed\](.+?)\[\/embed\]/is", "<!-- oembed $1 --><i>". t('Embedding disabled') ." : $1</i><!-- /oembed $1 -->" ,$text); } diff --git a/include/permissions.php b/include/permissions.php index 28f242712..be6fc8594 100644 --- a/include/permissions.php +++ b/include/permissions.php @@ -1,5 +1,7 @@ <?php +use Zotlabs\Lib\Config; + require_once('include/security.php'); /** @@ -105,7 +107,7 @@ function get_all_perms($uid, $observer_xchan, $check_siteblock = true, $default_ // system is blocked to anybody who is not authenticated - if(($check_siteblock) && (! $observer_xchan) && intval(get_config('system', 'block_public'))) { + if(($check_siteblock) && (! $observer_xchan) && intval(Config::Get('system', 'block_public'))) { $ret[$perm_name] = 0; continue; } @@ -291,7 +293,7 @@ function perm_is_allowed($uid, $observer_xchan, $permission, $check_siteblock = // system is blocked to anybody who is not authenticated - if(($check_siteblock) && (! $observer_xchan) && intval(get_config('system', 'block_public'))) + if(($check_siteblock) && (! $observer_xchan) && intval(Config::Get('system', 'block_public'))) return false; // Check if this $uid is actually the $observer_xchan @@ -496,7 +498,7 @@ function site_default_perms() { $global_perms = \Zotlabs\Access\Permissions::Perms(); foreach($global_perms as $perm => $v) { - $x = get_config('default_perms', $perm, $typical[$perm]); + $x = Config::Get('default_perms', $perm, $typical[$perm]); $ret[$perm] = $x; } diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php index 4394d3238..66a5d19f9 100644 --- a/include/photo/photo_driver.php +++ b/include/photo/photo_driver.php @@ -1,5 +1,6 @@ <?php +use Zotlabs\Lib\Config; use Zotlabs\Photo\PhotoDriver; use Zotlabs\Photo\PhotoGd; use Zotlabs\Photo\PhotoImagick; @@ -32,13 +33,13 @@ function photo_factory($data, $type = null) { return null; } - $ignore_imagick = get_config('system', 'ignore_imagick'); + $ignore_imagick = Config::Get('system', 'ignore_imagick'); if(class_exists('Imagick') && !$ignore_imagick) { $v = Imagick::getVersion(); preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $m); if(version_compare($m[1], '6.6.7') >= 0) { - $limits = get_config('system', 'imagick_limits', false); + $limits = Config::Get('system', 'imagick_limits', false); if ($limits) foreach ($limits as $k => $v) IMagick::setResourceLimit($k, $v); @@ -99,7 +100,7 @@ function guess_image_type($filename, $data = '') { } if(is_null($type)){ - $ignore_imagick = get_config('system', 'ignore_imagick'); + $ignore_imagick = Config::Get('system', 'ignore_imagick'); // Guessing from extension? Isn't that... dangerous? if(class_exists('Imagick') && ! $ignore_imagick) { $v = Imagick::getVersion(); diff --git a/include/photos.php b/include/photos.php index 5e993e15f..85c97d1fd 100644 --- a/include/photos.php +++ b/include/photos.php @@ -6,6 +6,7 @@ use Zotlabs\Access\PermissionLimits; use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; require_once('include/permissions.php'); require_once('include/items.php'); @@ -74,11 +75,11 @@ function photo_upload($channel, $observer, $args) { $os_storage = 0; - $max_thumb = get_config('system', 'max_thumbnail', 1600); + $max_thumb = Config::Get('system', 'max_thumbnail', 1600); if ($args['os_syspath'] && $args['getimagesize']) { if ($args['getimagesize'][0] > $max_thumb || $args['getimagesize'][1] > $max_thumb) { - $imagick_path = get_config('system', 'imagick_convert_path'); + $imagick_path = Config::Get('system', 'imagick_convert_path'); if ($imagick_path && @file_exists($imagick_path)) { $tmp_name = $args['os_syspath'] . '-001'; $newsize = photo_calculate_scale(array_merge($args['getimagesize'], ['max' => $max_thumb])); @@ -146,7 +147,7 @@ function photo_upload($channel, $observer, $args) { logger('Received file: ' . $filename . ' as ' . $src . ' (' . $type . ') ' . $filesize . ' bytes', LOGGER_DEBUG); - $maximagesize = get_config('system', 'maximagesize'); + $maximagesize = Config::Get('system', 'maximagesize'); if (($maximagesize) && ($filesize > $maximagesize)) { $ret['message'] = sprintf(t('Image exceeds website size limit of %lu bytes'), $maximagesize); @@ -219,7 +220,7 @@ function photo_upload($channel, $observer, $args) { @unlink($src); - $max_length = get_config('system', 'max_image_length'); + $max_length = Config::Get('system', 'max_image_length'); if (!$max_length) $max_length = MAX_IMAGE_LENGTH; if ($max_length > 0) diff --git a/include/plugin.php b/include/plugin.php index bbfeab988..62b643c3e 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -5,6 +5,7 @@ * @brief Some functions to handle addons and themes. */ +use Zotlabs\Lib\Config; /** * @brief Handle errors in plugin calls. @@ -25,7 +26,7 @@ function handleerrors_plugin($plugin, $notice, $log, $uninstall = false){ $idx = array_search($plugin, \App::$plugins); unset(\App::$plugins[$idx]); uninstall_plugin($plugin); - set_config("system", "addon", implode(", ", \App::$plugins)); + Config::Set("system", "addon", implode(", ", \App::$plugins)); } } @@ -187,7 +188,7 @@ function plugin_is_installed($name) { * @brief Reload all updated plugins. */ function reload_plugins() { - $plugins = get_config('system', 'addon'); + $plugins = Config::Get('system', 'addon'); if(strlen($plugins)) { $r = dbq("SELECT * FROM addon WHERE installed = 1"); if($r) @@ -266,7 +267,7 @@ function plugins_sync() { $installed = plugins_installed_list(); - $plugins = get_config('system', 'addon', ''); + $plugins = Config::Get('system', 'addon', ''); $plugins_arr = explode(',', $plugins); @@ -487,18 +488,19 @@ function call_hooks($name, &$data = null) { @include_once($hook[0]); } - if(preg_match('|^a:[0-9]+:{.*}$|s', $hook[1])) { - $hook[1] = unserialize($hook[1]); - } - elseif(strpos($hook[1],'::')) { - // We shouldn't need to do this, but it appears that PHP - // isn't able to directly execute a string variable with a class - // method in the manner we are attempting it, so we'll - // turn it into an array. - $hook[1] = explode('::',$hook[1]); + if(is_string($hook[1])) { + if (preg_match('|^a:[0-9]+:{.*}$|s', $hook[1])) { + $hook[1] = unserialize($hook[1]); + } + elseif(strpos($hook[1],'::')) { + // We shouldn't need to do this, but it appears that PHP + // isn't able to directly execute a string variable with a class + // method in the manner we are attempting it, so we'll + // turn it into an array. + $hook[1] = explode('::',$hook[1]); + } } - if(is_callable($hook[1])) { $func = $hook[1]; $func($data); @@ -719,7 +721,7 @@ function check_plugin_versions($info) { continue; if(strpos($test,'.')) { $conf = explode('.',$test); - if(get_config(trim($conf[0]),trim($conf[1]))) + if(Config::Get(trim($conf[0]),trim($conf[1]))) return true; else return false; diff --git a/include/security.php b/include/security.php index b3e45742e..545788bcd 100644 --- a/include/security.php +++ b/include/security.php @@ -5,8 +5,10 @@ * @brief Some security related functions. */ +use Zotlabs\Lib\Config; + /** - * @param int $user_record The account_id + * @param array $user_record The account record * @param array $channel * @param bool $login_initial default false * @param bool $interactive default false @@ -872,7 +874,7 @@ function stream_perms_xchans($perms = NULL) { */ function zarIsDuty($wd=NULL, $hhmm=NULL, $op='isOpen') { - $isduty = get_config('system', 'register_duty_jso'); + $isduty = Config::Get('system', 'register_duty_jso'); if (!$isduty) return (bool)false; @@ -906,7 +908,6 @@ function zarIsDuty($wd=NULL, $hhmm=NULL, $op='isOpen') { } } return $dutyis; - break; case 'nextOpen': /** @@ -951,7 +952,6 @@ function zarIsDuty($wd=NULL, $hhmm=NULL, $op='isOpen') { } } return $is1; // false or array - break; default: // diff --git a/include/socgraph.php b/include/socgraph.php index e5e8ddf74..336c1c0c3 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -1,6 +1,7 @@ <?php /** @file */ +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Libzotdir; use Zotlabs\Lib\Zotfinger; @@ -288,7 +289,7 @@ function suggestion_query($uid, $myxchan, $start = 0, $limit = 80) { function update_suggestions() { - $dirmode = get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL); + $dirmode = Config::Get('system', 'directory_mode', DIRECTORY_MODE_NORMAL); if($dirmode == DIRECTORY_MODE_STANDALONE) { poco_load('', z_root() . '/poco'); diff --git a/include/statistics_fns.php b/include/statistics_fns.php index 98b0efd41..5915c82a2 100644 --- a/include/statistics_fns.php +++ b/include/statistics_fns.php @@ -1,13 +1,15 @@ <?php /** @file */ +use Zotlabs\Lib\Config; + function update_channels_total_stat() { $r = q("select count(channel_id) as channels_total from channel left join account on account_id = channel_account_id where account_flags = 0 "); if($r) { $channels_total_stat = intval($r[0]['channels_total']); - set_config('system','channels_total_stat',$channels_total_stat); + Config::Set('system','channels_total_stat',$channels_total_stat); } else { - set_config('system','channels_total_stat',0); + Config::Set('system','channels_total_stat',0); } } @@ -17,10 +19,10 @@ function update_channels_active_halfyear_stat() { db_utcnow(), db_quoteinterval('6 MONTH') ); if($r) { - set_config('system','channels_active_halfyear_stat',count($r)); + Config::Set('system','channels_active_halfyear_stat',count($r)); } else { - set_config('system','channels_active_halfyear_stat','0'); + Config::Set('system','channels_active_halfyear_stat','0'); } } @@ -30,10 +32,10 @@ function update_channels_active_monthly_stat() { db_utcnow(), db_quoteinterval('1 MONTH') ); if($r) { - set_config('system','channels_active_monthly_stat',count($r)); + Config::Set('system','channels_active_monthly_stat',count($r)); } else { - set_config('system','channels_active_monthly_stat','0'); + Config::Set('system','channels_active_monthly_stat','0'); } } @@ -41,9 +43,9 @@ function update_local_posts_stat() { $posts = q("SELECT COUNT(*) AS local_posts FROM item WHERE item_wall = 1 and id = parent"); if (is_array($posts)) { $local_posts_stat = intval($posts[0]["local_posts"]); - set_config('system','local_posts_stat',$local_posts_stat); + Config::Set('system','local_posts_stat',$local_posts_stat); } else { - set_config('system','local_posts_stat',0); + Config::Set('system','local_posts_stat',0); } } @@ -54,5 +56,5 @@ function update_local_comments_stat() { else $local_posts = $posts[0]["local_posts"]; - set_config('system','local_comments_stat', $local_posts); -}
\ No newline at end of file + Config::Set('system','local_comments_stat', $local_posts); +} diff --git a/include/taxonomy.php b/include/taxonomy.php index dd56ab956..45287fa63 100644 --- a/include/taxonomy.php +++ b/include/taxonomy.php @@ -6,8 +6,10 @@ // To do this we need to escape these characters if they appear in our tag. use Zotlabs\Lib\Cache; +use Zotlabs\Lib\Config; use Zotlabs\Daemon\Master; + function file_tag_encode($s) { return str_replace(array('<','>','[',']'),array('%3c','%3e','%5b','%5d'),$s); } @@ -351,7 +353,7 @@ function pub_tagadelic($net, $site, $limit, $recent, $safemode, $type) { } if($safemode) { - $unsafetags = get_config('system','unsafepubtags', [ 'boobs', 'bot', 'rss', 'girl','girls', 'nsfw', 'sexy', 'nude' ]); + $unsafetags = Config::Get('system','unsafepubtags', [ 'boobs', 'bot', 'rss', 'girl','girls', 'nsfw', 'sexy', 'nude' ]); if($unsafetags) { $sql_extra .= " and not term.term in ( " . stringify_array($unsafetags,true) . ") "; } diff --git a/include/text.php b/include/text.php index 713911af2..b03e2d1a9 100644 --- a/include/text.php +++ b/include/text.php @@ -9,6 +9,7 @@ use Michelf\MarkdownExtra; use Ramsey\Uuid\Uuid; use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Crypto; use Zotlabs\Lib\SvgSanitizer; use Zotlabs\Lib\Libzot; @@ -741,9 +742,9 @@ function logger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) { $loglevel = LOGGER_ALL; } else { - $debugging = get_config('system', 'debugging'); - $loglevel = intval(get_config('system', 'loglevel')); - $logfile = get_config('system', 'logfile'); + $debugging = Config::Get('system', 'debugging'); + $loglevel = intval(Config::Get('system', 'loglevel')); + $logfile = Config::Get('system', 'logfile'); } if((! $debugging) || (! $logfile) || ($level > $loglevel)) @@ -846,9 +847,9 @@ function dlogger($msg, $level = 0) { if(App::$module == 'setup') return; - $debugging = get_config('system','debugging'); - $loglevel = intval(get_config('system','loglevel')); - $logfile = get_config('system','dlogfile'); + $debugging = Config::Get('system','debugging'); + $loglevel = intval(Config::Get('system','loglevel')); + $logfile = Config::Get('system','dlogfile'); if((! $debugging) || (! $logfile) || ($level > $loglevel)) return; @@ -1253,7 +1254,7 @@ function sslify($s) { // The downside is that http: media files will likely be blocked by your browser // Complain to your browser maker - $allow = get_config('system','sslify_everything'); + $allow = Config::Get('system','sslify_everything'); $pattern = (($allow) ? "/\<(.*?)src=[\"|'](http\:.*?)[\"|'](.*?)\>/" : "/\<img(.*?)src=[\"|'](http\:.*?)[\"|'](.*?)\>/" ); $matches = null; @@ -1407,7 +1408,7 @@ function list_smilies($default_only = false) { */ function smilies($s, $sample = false) { - if(intval(get_config('system', 'no_smilies')) + if(intval(Config::Get('system', 'no_smilies')) || (local_channel() && intval(get_pconfig(local_channel(), 'system', 'no_smilies')))) return $s; @@ -2081,10 +2082,15 @@ function prepare_text($text, $content_type = 'text/bbcode', $opts = false) { default: require_once('include/bbcode.php'); - if(stristr($text, '[nosmile]')) - $s = bbcode($text, ((is_array($opts)) ? $opts : [] )); - else - $s = smilies(bbcode($text, ((is_array($opts)) ? $opts : [] ))); + // events are handled in format_event_obj() + if (empty($opts['is_event_item'])) { + if(stristr($text, '[nosmile]')) { + $s = bbcode($text, ((is_array($opts)) ? $opts : [] )); + } + else { + $s = smilies(bbcode($text, ((is_array($opts)) ? $opts : [] ))); + } + } $s = zidify_links($s); @@ -2113,7 +2119,7 @@ function create_export_photo_body(&$item) { * @return string */ function feed_hublinks() { - $hub = get_config('system', 'huburl'); + $hub = Config::Get('system', 'huburl'); $hubxml = ''; if(strlen($hub)) { @@ -2496,7 +2502,7 @@ function check_webbie($arr) { // These names conflict with the CalDAV server $taken = [ 'principals', 'addressbooks', 'calendars' ]; - $reservechan = get_config('system','reserved_channels'); + $reservechan = Config::Get('system','reserved_channels'); if(strlen($reservechan)) { $taken = array_merge($taken,explode(',', $reservechan)); } diff --git a/include/zid.php b/include/zid.php index b38457d99..159a3b834 100644 --- a/include/zid.php +++ b/include/zid.php @@ -1,5 +1,6 @@ <?php +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Verify; @@ -37,10 +38,16 @@ function is_matrix_url($url) { * @return string */ function zid($s, $address = '') { - if (!$s || strpos($s,'zid=')) + if (!$s || strpos($s,'zid=')) { return $s; + } $m = parse_url($s); + + if (!is_array($m)) { + return $s; + } + $fragment = ((array_key_exists('fragment',$m) && $m['fragment']) ? $m['fragment'] : false); if($fragment !== false) $s = str_replace('#' . $fragment,'',$s); @@ -406,7 +413,7 @@ function owt_init($token) { App::set_observer($hubloc); require_once('include/security.php'); App::set_groups(init_groups_visitor($_SESSION['visitor_id'])); - if(! get_config('system', 'hide_owa_greeting')) + if(! Config::Get('system', 'hide_owa_greeting')) info(sprintf( t('OpenWebAuth: %1$s welcomes %2$s'),App::get_hostname(), $hubloc['xchan_name'])); logger('OpenWebAuth: auth success from ' . $hubloc['xchan_addr']); diff --git a/library/jgrowl/.gitignore b/library/jgrowl/.gitignore deleted file mode 100644 index 385e49ef1..000000000 --- a/library/jgrowl/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.DS_Store -node_modules/ -jGrowl.iml -jGrowl.ipr -jGrowl.iws diff --git a/library/jgrowl/Gruntfile.js b/library/jgrowl/Gruntfile.js deleted file mode 100644 index fed0fceee..000000000 --- a/library/jgrowl/Gruntfile.js +++ /dev/null @@ -1,61 +0,0 @@ -module.exports = function(grunt) { - - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - uglify: { - options: { - sourceMap: true, - sourceMapName: 'jquery.jgrowl.map' - }, - jgrowl: { - files: { - 'jquery.jgrowl.min.js': ['jquery.jgrowl.js'] - } - } - }, - less: { - jgrowl: { - files: { - "jquery.jgrowl.css": "less/jgrowl.less" - } - } - }, - cssmin: { - jgrowl: { - expand: true, - src: 'jquery.jgrowl.css', - ext: '.jgrowl.min.css' - } - }, - jshint: { - files: ['Gruntfile.js', 'jquery.jgrowl.js'], - options: { - // options here to override JSHint defaults - globals: { - jQuery: true, - console: true, - module: true, - document: true - } - } - }, - watch: { - scripts: { - files: ['jquery.jgrowl.js', 'less/*'], - tasks: ['jshint', 'less', 'cssmin', 'uglify'], - options: { - spawn: false - } - } - } - }); - - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-cssmin'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-contrib-less'); - - grunt.registerTask('test', ['jshint']); - grunt.registerTask('default', ['jshint', 'uglify', 'less', 'cssmin']); -}; diff --git a/library/jgrowl/LICENSE b/library/jgrowl/LICENSE deleted file mode 100644 index e70a54a58..000000000 --- a/library/jgrowl/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -Copyright (c) 2012 Stan Lemon - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/library/jgrowl/README.md b/library/jgrowl/README.md deleted file mode 100644 index 7dfd85637..000000000 --- a/library/jgrowl/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# jGrowl -jGrowl is a jQuery plugin that raises unobtrusive messages within the browser, similar to the way that OS X's Growl Framework works. The idea is simple, deliver notifications to the end user in a noticeable way that doesn't obstruct the work flow and yet keeps the user informed. - -## Installation -jGrowl can be added to your project using package managers like bower and npm or directly into your html using cdnjs, as well as the good old fashioned copy-paste into your project directory. - -Use cdnjs: - -```html -<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.4.1/jquery.jgrowl.min.css" /> -<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.4.1/jquery.jgrowl.min.js"></script> -``` - -Install with bower - -``` -bower install jgrowl -``` - -Install with npm - -``` -npm install jgrowl -``` - -```js -// Sample 1 -$.jGrowl("Hello world!"); -// Sample 2 -$.jGrowl("Stick this!", { sticky: true }); -// Sample 3 -$.jGrowl("A message with a header", { header: 'Important' }); -// Sample 4 -$.jGrowl("A message that will live a little longer.", { life: 10000 }); -// Sample 5 -$.jGrowl("A message with a beforeOpen callback and a different opening animation.", { - beforeClose: function(e,m) { - alert('About to close this notification!'); - }, - animateOpen: { - height: 'show' - } -}); -``` - -## Configuration Options -| Option | Default | Description | -|------------------|--------------------------------------|------------------------------------------------------------| -| pool | 0 | Limit the number of messages appearing at a given time to the number in the pool. | -| header | empty | Optional header to prefix the message, this is often helpful for associating messages to each other. | -| group | empty | A css class to be applied to notifications when they are created, useful for 'grouping' notifications by a css selector. | -| sticky | false | When set to true a message will stick to the screen until it is intentionally closed by the user. | -| position | top-right | Designates a class which is applied to the jGrowl container and controls its position on the screen. By Default there are five options available, top-left, top-right, bottom-left, bottom-right, center. This must be changed in the defaults before the startup method is called. | -| appendTo | body | The element where our jGrowl messages are appended to. The default is `body` but feel free to define another one. | -| glue | after | Designates whether a jGrowl notification should be appended to the container after all notifications, or whether it should be prepended to the container before all notifications. Options are after or before. | -| theme | default | A CSS class designating custom styling for this particular message, intended for use with jQuery UI. | -| themeState | highlight | A CSS class designating custom styling for this particular message and its state, intended for use with jQuery UI. | -| corners | 10px | If the corners jQuery plugin is include this option specifies the curvature radius to be used for the notifications as they are created. | -| check | 250 | The frequency that jGrowl should check for messages to be scrubbed from the screen.This must be changed in the defaults before the startup method is called. | -| life | 3000 | The lifespan of a non-sticky message on the screen. | -| closeDuration | normal | The animation speed used to close a notification. | -| openDuration | normal | The animation speed used to open a notification. | -| easing | swing | The easing method to be used with the animation for opening and closing a notification. | -| closer | true | Whether or not the close-all button should be used when more then one notification appears on the screen. Optionally this property can be set to a function which will be used as a callback when the close all button is clicked. This must be changed in the defaults before the startup method is called. | -| closeTemplate | × | This content is used for the individual notification close links that are added to the corner of a notification. This must be changed in the defaults before the startup method is called. | -| closerTemplate | <div>[ close all ]</div> | This content is used for the close-all link that is added to the bottom of a jGrowl container when it contains more than one notification. This must be changed in the defaults before the startup method is called. | -| log | function(e,m,o) {} | Callback to be used before anything is done with the notification. This is intended to be used if the user would like to have some type of logging mechanism for all notifications passed to jGrowl. This callback receives the notification's DOM context, the notification's message and its option object. | -| beforeOpen | function(e,m,o) {} | Callback to be used before a new notification is opened. This callback receives the notification's DOM context, the notification's message and its option object. | -| afterOpen | function(e,m,o) {} | Callback to be used after a new notification is opened. This callback receives the notification's DOM context, the notification's message and its option object. | -| open | function(e,m,o) {} | Callback to be used when a new notification is opened. This callback receives the notification's DOM context, the notifications message and its option object. | -| beforeClose | function(e,m,o) {} | Callback to be used before a new notification is closed. This callback receives the notification's DOM context, the notification's message and its option object. | -| close | function(e,m,o) {} | Callback to be used when a new notification is closed. This callback receives the notification's DOM context, the notification's message and its option object. | -| click | function(e,m,o) {} | Callback to be used when a notification is clicked. This callback receives the notification's DOM context, the notification's message and its option object. | -| animateOpen | { opacity: 'show' } | The animation properties to use when opening a new notification (default to fadeOut). | -| animateClose | { opacity: 'hide' } | The animation properties to use when closing a new notification (defaults to fadeIn). | diff --git a/library/jgrowl/bower.json b/library/jgrowl/bower.json deleted file mode 100644 index 15cfc754b..000000000 --- a/library/jgrowl/bower.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "jGrowl", - "version": "1.4.5", - "homepage": "https://github.com/stanlemon/jGrowl", - "authors": [ - "Stan Lemon <stosh1985@gmail.com>" - ], - "description": "jGrowl is an unobtrusive notification system for web applications.", - "main": [ - "jquery.jgrowl.css", - "jquery.jgrowl.js" - ], - "keywords": [ - "growl", - "jgrowl", - "jquery", - "toaster", - "notification", - "message" - ], - "license": "MIT", - "dependencies": { - "jquery": ">=1.4" - }, - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/library/jgrowl/examples/appendTo.html b/library/jgrowl/examples/appendTo.html deleted file mode 100644 index 3eb0f4d27..000000000 --- a/library/jgrowl/examples/appendTo.html +++ /dev/null @@ -1,103 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml" debug="true"> - <head> - <title>jGrowl Examples</title> - <link rel="stylesheet" href="../jquery.jgrowl.css" type="text/css"/> - <style type="text/css"> - html, - body { - font-family: "Helvetica neue", Helvetica, Arial, sans-serif; - padding: 0; - margin: 0; - } - - h1, h2, h3, h4, h5 { - margin-top: 2px; - margin-bottom: 2px; - } - - .jGrowl .manilla { - background-color: #FFF1C2; - color: navy; - } - - .jGrowl .flora { - background: #E6F7D4 url(flora-notification.png) no-repeat; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - opacity: 1; - filter: alpha(opacity = 100); - width: 270px; - height: 90px; - padding: 0px; - overflow: hidden; - border-color: #5ab500; - } - - .jGrowl .flora .message { - padding: 5px; - color: #000; - } - - .jGrowl .flora .header { - background: url(flora-header.png) no-repeat; - padding: 5px; - } - - .jGrowl .flora .close { - background: url(flora-close.png) no-repeat; - padding: 5px; - color: transparent; - padding: 0px; - margin: 5px; - width: 17px; - } - - #dummyNav { - position: fixed; - background: green; - width: 100%; - height: 50px; - } - - </style> - <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script> - <script type="text/javascript" src="../jquery.jgrowl.js"></script> - <script type="text/javascript"> - - // In case you don't have firebug... - if(typeof console === "undefined") { - console = { log: function() { } }; - } - - (function($){ - - $(function(){ - - $.jGrowl.defaults.closerTemplate = "<div>[ xxxxx ]</div>"; - $.jGrowl.defaults.appendTo = "div#dummyNav"; - - $.jGrowl("This message is sticky and clickable", { - sticky: true, - click: function(msg) { - alert("You clicked me"); - } - }); - - $.jGrowl("This message is sticky and clickable"); - $.jGrowl("This message is sticky and clickable"); - $.jGrowl("This message is sticky and clickable"); - $.jGrowl("This message is sticky and clickable"); - $.jGrowl("This message is sticky and clickable"); - $.jGrowl("This message is sticky and clickable"); - }); - })(jQuery); - - </script> - </head> - <body> - <div id="dummyNav">I'm the dummy navigation</div> - - <h1>Append To Another DOM-Object</h1> - </body> -</html> diff --git a/library/jgrowl/examples/bootstrap.html b/library/jgrowl/examples/bootstrap.html deleted file mode 100644 index 6e069a3b9..000000000 --- a/library/jgrowl/examples/bootstrap.html +++ /dev/null @@ -1,91 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="description" content=""> - <meta name="author" content=""> - - <title>jGrowl and Bootstrap</title> - - <link rel="stylesheet" href="../jquery.jgrowl.css" type="text/css"/> - <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> - - <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> - <!--[if lt IE 9]> - <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> - <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> - <![endif]--> - - <style> - body { - padding-top: 50px; - } - </style> - </head> - - <body> - <div id="jGrowl-container1" class="jGrowl top-right"></div> - - <div class="navbar navbar-inverse navbar-fixed-top" role="navigation"> - <div class="container"> - <div class="navbar-header"> - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> - <span class="sr-only">Toggle navigation</span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="navbar-brand" href="#">jGrowl</a> - </div> - <div class="collapse navbar-collapse"> - <ul class="nav navbar-nav"> - <li class="active"><a href="#">Home</a></li> - <li><a href="#about">About</a></li> - <li><a href="#contact">Contact</a></li> - </ul> - </div><!--/.nav-collapse --> - </div> - </div> - - <div class="container"> - - <div> - <h1>jGrowl and Bootstrap</h1> - <p class="lead">This is a Bootstrap starter template with jGrowl integrated. As you can see it's extremely easy to make jGrowl look and feel like part of Bootstrap.</p> - </div> - <div id="jGrowl-container2" class="jGrowl"></div> - </div><!-- /.container --> - - - <!-- Bootstrap core JavaScript - ================================================== --> - <!-- Placed at the end of the document so the pages load faster --> - <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> - <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script> - <script type="text/javascript" src="../jquery.jgrowl.js"></script> - <script type="text/javascript"> - (function($){ - $(function(){ - $.jGrowl.defaults.closerTemplate = '<div class="alert alert-info">Close All</div>'; - - var alertTypes = ['success', 'info', 'warning', 'danger']; - - for (var i=0; i<10; i++) { - setTimeout(function(){ - var alertType = alertTypes[Math.floor(Math.random()*alertTypes.length)]; - - $('#jGrowl-container1').jGrowl({ - header: alertType.substring(0, 1).toUpperCase() + alertType.substring(1) + ' Notification', - message: 'Hello world ', - group: 'alert-' + alertType, - life: 5000 - }); - }, i*2000); - } - }); - })(jQuery); - </script> - </body> -</html> diff --git a/library/jgrowl/examples/jgrowl.html b/library/jgrowl/examples/jgrowl.html deleted file mode 100644 index e10fdd6cb..000000000 --- a/library/jgrowl/examples/jgrowl.html +++ /dev/null @@ -1,171 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml" debug="true"> - <head> - <title>jGrowl Examples</title> - <link rel="stylesheet" href="../jquery.jgrowl.css" type="text/css"/> - <style type="text/css"> - body { - font-family: "Helvetica neue", Helvetica, Arial, sans-serif; - } - - h1, h2, h3, h4, h5 { - margin-top: 2px; - margin-bottom: 2px; - } - - .jGrowl .manilla { - background-color: #FFF1C2; - color: navy; - } - - .jGrowl .flora { - background: #E6F7D4 url(flora-notification.png) no-repeat; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - opacity: 1; - filter: alpha(opacity = 100); - width: 270px; - height: 90px; - padding: 0px; - overflow: hidden; - border-color: #5ab500; - } - - .jGrowl .flora .message { - padding: 5px; - color: #000; - } - - .jGrowl .flora .header { - background: url(flora-header.png) no-repeat; - padding: 5px; - } - - .jGrowl .flora .close { - background: url(flora-close.png) no-repeat; - padding: 5px; - color: transparent; - padding: 0px; - margin: 5px; - width: 17px; - } - - #random { - padding: 20px; - width: 1500px; - background-color: #ff7070; - } - - #logs { - margin-top: 30px; - background-color: #efefef; - border: 1px solid #aaa; - padding: 10px; - } - - </style> - <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script> - <script type="text/javascript" src="../jquery.jgrowl.js"></script> - <script type="text/javascript"> - - // In case you don't have firebug... - if(typeof console === "undefined") { - console = { log: function() { } }; - } - - (function($){ - - $(function(){ - - $.jGrowl.defaults.pool = 5; - - $.jGrowl.defaults.closerTemplate = '<div>hide all notifications</div>'; - - // This value can be true, false or a function to be used as a callback when the closer is clciked - $.jGrowl.defaults.closer = function() { - console.log("Closing everything!", this); - }; - - // A callback for logging notifications. - $.jGrowl.defaults.log = function(e,m,o) { - $('#logs').append("<div><strong>#" + $(e).attr('id') + "</strong> <em>" + (new Date()).getTime() + "</em>: " + m + " (" + o.theme + ")</div>") - } - - $.jGrowl("Sticky notifications don't have an end of life", { sticky: true }); - $.jGrowl("Custom theme, custom animations, header, longer life and a whole bunch of callbacks...", { - header: 'Header', - life: 5000, - theme: 'manilla', - speed: 'slow', - beforeOpen: function(e,m,o) { - console.log("I am going to be opened!", this); - }, - open: function(e,m,o) { - console.log("I have been opened!", this); - }, - beforeClose: function(e,m,o) { - console.log("I am going to be closed!", this); - }, - close: function(e,m,o) { - console.log("I have been closed!", this); - }, - animateOpen: { - height: "show", - width: "show" - }, - animateClose: { - height: "hide", - width: "show" - } - }); - - $.jGrowl("This message will not open because we have a callback that returns false.", { - beforeOpen: function() { - console.log("Going to open a notification, but not really..."); - }, - open: function() { - return false; - } - }); - - $.jGrowl("This message will not close because we have a callback that returns false.", { - beforeClose: function() { - return false; - } - }); - - $('#test1').jGrowl("Testing a custom container.", { - closer: false, - sticky: true, - glue: 'before' - }); - - $('#test1').jGrowl("This will be prepended before the last message.", { - glue: 'before' - }); - - $.jGrowl("This message is sticky and clickable", { - sticky: true, - click: function(msg) { - alert("You clicked me"); - } - }); - }); - })(jQuery); - - </script> - </head> - <body> - <h1>jGrowl Tests</h1> - - <p><a href="javascript:void(0);" onclick="$.jGrowl('One more message...');">Create a new message.</a></p> - - <p><a href="javascript:void(0);" onclick="$('#test1').jGrowl('shutdown');">Shutdown bottom-left container.</a></p> - - <div id="random">An extra wide node, watch as the jGrowl containers stay put in the corners of the screen..</div> - - <div id="logs"><h3>Log:</h3></div> - - <div id="test1" class="bottom-left"></div> - </body> -</html> diff --git a/library/jgrowl/jgrowl.jquery.json b/library/jgrowl/jgrowl.jquery.json deleted file mode 100644 index c5f0756c9..000000000 --- a/library/jgrowl/jgrowl.jquery.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "jgrowl", - "filename": "jquery.jgrowl.min.js", - "title": "jGrowl", - "description": "jGrowl is a jQuery plugin that raises unobtrusive messages within the browser, similar to the way that OS X's Growl Framework works. The idea is simple, deliver notifications to the end user in a noticeable way that doesn't obstruct the work flow and yet keeps the user informed.", - "keywords": [ - "growl", - "jgrowl", - "jquery", - "toaster", - "notification", - "message" - ], - "version": "1.4.3", - "author": { - "name": "Stan Lemon", - "email": "stosh1985@gmail.com", - "url": "http://stanlemon.net" - }, - "maintainers": [ - { - "name": "Stan Lemon", - "email": "stosh1985@gmail.com", - "url": "http://stanlemon.net" - } - ], - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/stanlemon/jGrowl/blob/master/LICENSE" - } - ], - "bugs": "https://github.com/stanlemon/jGrowl/issues", - "homepage": "https://github.com/stanlemon/jGrowl", - "docs": "https://github.com/stanlemon/jGrowl", - "download": "https://github.com/stanlemon/jGrowl/archive/master.zip", - "dependencies": { - "jquery": ">=1.4" - } -} diff --git a/library/jgrowl/jquery.jgrowl.css b/library/jgrowl/jquery.jgrowl.css deleted file mode 100644 index 4a00b60f7..000000000 --- a/library/jgrowl/jquery.jgrowl.css +++ /dev/null @@ -1,100 +0,0 @@ -.jGrowl { - z-index: 9999; - color: #ffffff; - font-size: 12px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - position: fixed; -} -.jGrowl.top-left { - left: 0px; - top: 0px; -} -.jGrowl.top-right { - right: 0px; - top: 0px; -} -.jGrowl.bottom-left { - left: 0px; - bottom: 0px; -} -.jGrowl.bottom-right { - right: 0px; - bottom: 0px; -} -.jGrowl.center { - top: 0px; - width: 50%; - left: 25%; -} -.jGrowl.center .jGrowl-notification, -.jGrowl.center .jGrowl-closer { - margin-left: auto; - margin-right: auto; -} -.jGrowl-notification { - background-color: #000000; - opacity: 0.9; - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=(0.9*100)); - -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=(0.9*100)); - zoom: 1; - width: 250px; - padding: 10px; - margin: 10px; - text-align: left; - display: none; - border-radius: 5px; - min-height: 40px; -} -.jGrowl-notification .ui-state-highlight, -.jGrowl-notification .ui-widget-content .ui-state-highlight, -.jGrowl-notification .ui-widget-header .ui-state-highlight { - border: 1px solid #000; - background: #000; - color: #fff; -} -.jGrowl-notification .jGrowl-header { - font-weight: bold; - font-size: .85em; -} -.jGrowl-notification .jGrowl-close { - background-color: transparent; - color: inherit; - border: none; - z-index: 99; - float: right; - font-weight: bold; - font-size: 1em; - cursor: pointer; -} -.jGrowl-closer { - background-color: #000000; - opacity: 0.9; - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=(0.9*100)); - -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=(0.9*100)); - zoom: 1; - width: 250px; - padding: 10px; - margin: 10px; - text-align: left; - display: none; - border-radius: 5px; - padding-top: 4px; - padding-bottom: 4px; - cursor: pointer; - font-size: .9em; - font-weight: bold; - text-align: center; -} -.jGrowl-closer .ui-state-highlight, -.jGrowl-closer .ui-widget-content .ui-state-highlight, -.jGrowl-closer .ui-widget-header .ui-state-highlight { - border: 1px solid #000; - background: #000; - color: #fff; -} -/** Hide jGrowl when printing **/ -@media print { - .jGrowl { - display: none; - } -} diff --git a/library/jgrowl/jquery.jgrowl.js b/library/jgrowl/jquery.jgrowl.js deleted file mode 100644 index d5444d438..000000000 --- a/library/jgrowl/jquery.jgrowl.js +++ /dev/null @@ -1,399 +0,0 @@ -/** - * jGrowl 1.4.5 - * - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. - * - * Written by Stan Lemon <stosh1985@gmail.com> - * Last updated: 2015.02.01 - * - * jGrowl is a jQuery plugin implementing unobtrusive userland notifications. These - * notifications function similarly to the Growl Framework available for - * Mac OS X (http://growl.info). - * - * To Do: - * - Move library settings to containers and allow them to be changed per container - * - * Changes in 1.4.5 - * - Fixed arguement list for click callback, thanks @timotheeg - * - * Changes in 1.4.4 - * - Revert word-break changes, thanks @curtisgibby - * - * Changes in 1.4.3 - * - Fixed opactiy in LESS for older version of IE - * - * Changes in 1.4.2 - * - Added word-break to less/css - * - * Changes in 1.4.1 - * - Added appendTo option - * - jQuery compatibility updates - * - Add check for closing a notification before it opens - * - * Changes in 1.4.0 - * - Removed IE6 support - * - Added LESS support - * - * Changes in 1.3.0 - * - Added non-vendor border-radius to stylesheet - * - Added grunt for generating minified js and css - * - Added npm package info - * - Added bower package info - * - Updates for jshint - * - * Changes in 1.2.13 - * - Fixed clearing interval when the container shuts down - * - * Changes in 1.2.12 - * - Added compressed versions using UglifyJS and Sqwish - * - Improved README with configuration options explanation - * - Added a source map - * - * Changes in 1.2.11 - * - Fix artifacts left behind by the shutdown method and text-cleanup - * - * Changes in 1.2.10 - * - Fix beforeClose to be called in click event - * - * Changes in 1.2.9 - * - Fixed BC break in jQuery 2.0 beta - * - * Changes in 1.2.8 - * - Fixes for jQuery 1.9 and the MSIE6 check, note that with jQuery 2.0 support - * jGrowl intends to drop support for IE6 altogether - * - * Changes in 1.2.6 - * - Fixed js error when a notification is opening and closing at the same time - * - * Changes in 1.2.5 - * - Changed wrapper jGrowl's options usage to "o" instead of $.jGrowl.defaults - * - Added themeState option to control 'highlight' or 'error' for jQuery UI - * - Ammended some CSS to provide default positioning for nested usage. - * - Changed some CSS to be prefixed with jGrowl- to prevent namespacing issues - * - Added two new options - openDuration and closeDuration to allow - * better control of notification open and close speeds, respectively - * Patch contributed by Jesse Vincet. - * - Added afterOpen callback. Patch contributed by Russel Branca. - * - * Changes in 1.2.4 - * - Fixed IE bug with the close-all button - * - Fixed IE bug with the filter CSS attribute (special thanks to gotwic) - * - Update IE opacity CSS - * - Changed font sizes to use "em", and only set the base style - * - * Changes in 1.2.3 - * - The callbacks no longer use the container as context, instead they use the actual notification - * - The callbacks now receive the container as a parameter after the options parameter - * - beforeOpen and beforeClose now check the return value, if it's false - the notification does - * not continue. The open callback will also halt execution if it returns false. - * - Fixed bug where containers would get confused - * - Expanded the pause functionality to pause an entire container. - * - * Changes in 1.2.2 - * - Notification can now be theme rolled for jQuery UI, special thanks to Jeff Chan! - * - * Changes in 1.2.1 - * - Fixed instance where the interval would fire the close method multiple times. - * - Added CSS to hide from print media - * - Fixed issue with closer button when div { position: relative } is set - * - Fixed leaking issue with multiple containers. Special thanks to Matthew Hanlon! - * - * Changes in 1.2.0 - * - Added message pooling to limit the number of messages appearing at a given time. - * - Closing a notification is now bound to the notification object and triggered by the close button. - * - * Changes in 1.1.2 - * - Added iPhone styled example - * - Fixed possible IE7 bug when determining if the ie6 class shoudl be applied. - * - Added template for the close button, so that it's content could be customized. - * - * Changes in 1.1.1 - * - Fixed CSS styling bug for ie6 caused by a mispelling - * - Changes height restriction on default notifications to min-height - * - Added skinned examples using a variety of images - * - Added the ability to customize the content of the [close all] box - * - Added jTweet, an example of using jGrowl + Twitter - * - * Changes in 1.1.0 - * - Multiple container and instances. - * - Standard $.jGrowl() now wraps $.fn.jGrowl() by first establishing a generic jGrowl container. - * - Instance methods of a jGrowl container can be called by $.fn.jGrowl(methodName) - * - Added glue preferenced, which allows notifications to be inserted before or after nodes in the container - * - Added new log callback which is called before anything is done for the notification - * - Corner's attribute are now applied on an individual notification basis. - * - * Changes in 1.0.4 - * - Various CSS fixes so that jGrowl renders correctly in IE6. - * - * Changes in 1.0.3 - * - Fixed bug with options persisting across notifications - * - Fixed theme application bug - * - Simplified some selectors and manipulations. - * - Added beforeOpen and beforeClose callbacks - * - Reorganized some lines of code to be more readable - * - Removed unnecessary this.defaults context - * - If corners plugin is present, it's now customizable. - * - Customizable open animation. - * - Customizable close animation. - * - Customizable animation easing. - * - Added customizable positioning (top-left, top-right, bottom-left, bottom-right, center) - * - * Changes in 1.0.2 - * - All CSS styling is now external. - * - Added a theme parameter which specifies a secondary class for styling, such - * that notifications can be customized in appearance on a per message basis. - * - Notification life span is now customizable on a per message basis. - * - Added the ability to disable the global closer, enabled by default. - * - Added callbacks for when a notification is opened or closed. - * - Added callback for the global closer. - * - Customizable animation speed. - * - jGrowl now set itself up and tears itself down. - * - * Changes in 1.0.1: - * - Removed dependency on metadata plugin in favor of .data() - * - Namespaced all events - */ -(function($) { - /** jGrowl Wrapper - Establish a base jGrowl Container for compatibility with older releases. **/ - $.jGrowl = function( m , o ) { - // To maintain compatibility with older version that only supported one instance we'll create the base container. - if ( $('#jGrowl').length === 0 ) - $('<div id="jGrowl"></div>').addClass( (o && o.position) ? o.position : $.jGrowl.defaults.position ).appendTo( (o && o.appendTo) ? o.appendTo : $.jGrowl.defaults.appendTo ); - - // Create a notification on the container. - $('#jGrowl').jGrowl(m,o); - }; - - - /** Raise jGrowl Notification on a jGrowl Container **/ - $.fn.jGrowl = function( m , o ) { - // Short hand for passing in just an object to this method - if ( o === undefined && $.isPlainObject(m) ) { - o = m; - m = o.message; - } - - if ( $.isFunction(this.each) ) { - var args = arguments; - - return this.each(function() { - /** Create a jGrowl Instance on the Container if it does not exist **/ - if ( $(this).data('jGrowl.instance') === undefined ) { - $(this).data('jGrowl.instance', $.extend( new $.fn.jGrowl(), { notifications: [], element: null, interval: null } )); - $(this).data('jGrowl.instance').startup( this ); - } - - /** Optionally call jGrowl instance methods, or just raise a normal notification **/ - if ( $.isFunction($(this).data('jGrowl.instance')[m]) ) { - $(this).data('jGrowl.instance')[m].apply( $(this).data('jGrowl.instance') , $.makeArray(args).slice(1) ); - } else { - $(this).data('jGrowl.instance').create( m , o ); - } - }); - } - }; - - $.extend( $.fn.jGrowl.prototype , { - - /** Default JGrowl Settings **/ - defaults: { - pool: 0, - header: '', - group: '', - sticky: false, - position: 'top-right', - appendTo: 'body', - glue: 'after', - theme: 'default', - themeState: 'highlight', - corners: '10px', - check: 250, - life: 3000, - closeDuration: 'normal', - openDuration: 'normal', - easing: 'swing', - closer: true, - closeTemplate: '×', - closerTemplate: '<div>[ close all ]</div>', - log: function() {}, - beforeOpen: function() {}, - afterOpen: function() {}, - open: function() {}, - beforeClose: function() {}, - close: function() {}, - click: function() {}, - animateOpen: { - opacity: 'show' - }, - animateClose: { - opacity: 'hide' - } - }, - - notifications: [], - - /** jGrowl Container Node **/ - element: null, - - /** Interval Function **/ - interval: null, - - /** Create a Notification **/ - create: function( message , options ) { - var o = $.extend({}, this.defaults, options); - - /* To keep backward compatibility with 1.24 and earlier, honor 'speed' if the user has set it */ - if (typeof o.speed !== 'undefined') { - o.openDuration = o.speed; - o.closeDuration = o.speed; - } - - this.notifications.push({ message: message , options: o }); - - o.log.apply( this.element , [this.element,message,o] ); - }, - - render: function( n ) { - var self = this; - var message = n.message; - var o = n.options; - - // Support for jQuery theme-states, if this is not used it displays a widget header - o.themeState = (o.themeState === '') ? '' : 'ui-state-' + o.themeState; - - var notification = $('<div/>') - .addClass('jGrowl-notification alert ' + o.themeState + ' ui-corner-all' + ((o.group !== undefined && o.group !== '') ? ' ' + o.group : '')) - .append($('<button/>').addClass('jGrowl-close').html(o.closeTemplate)) - .append($('<div/>').addClass('jGrowl-header').html(o.header)) - .append($('<div/>').addClass('jGrowl-message').html(message)) - .data("jGrowl", o).addClass(o.theme).children('.jGrowl-close').bind("click.jGrowl", function() { - $(this).parent().trigger('jGrowl.beforeClose'); - return false; - }) - .parent(); - - - /** Notification Actions **/ - $(notification).bind("mouseover.jGrowl", function() { - $('.jGrowl-notification', self.element).data("jGrowl.pause", true); - }).bind("mouseout.jGrowl", function() { - $('.jGrowl-notification', self.element).data("jGrowl.pause", false); - }).bind('jGrowl.beforeOpen', function() { - if ( o.beforeOpen.apply( notification , [notification,message,o,self.element] ) !== false ) { - $(this).trigger('jGrowl.open'); - } - }).bind('jGrowl.open', function() { - if ( o.open.apply( notification , [notification,message,o,self.element] ) !== false ) { - if ( o.glue == 'after' ) { - $('.jGrowl-notification:last', self.element).after(notification); - } else { - $('.jGrowl-notification:first', self.element).before(notification); - } - - $(this).animate(o.animateOpen, o.openDuration, o.easing, function() { - // Fixes some anti-aliasing issues with IE filters. - if ($.support.opacity === false) - this.style.removeAttribute('filter'); - - if ( $(this).data("jGrowl") !== null && typeof $(this).data("jGrowl") !== 'undefined') // Happens when a notification is closing before it's open. - $(this).data("jGrowl").created = new Date(); - - $(this).trigger('jGrowl.afterOpen'); - }); - } - }).bind('jGrowl.afterOpen', function() { - o.afterOpen.apply( notification , [notification,message,o,self.element] ); - }).bind('click', function() { - o.click.apply( notification, [notification,message,o,self.element] ); - }).bind('jGrowl.beforeClose', function() { - if ( o.beforeClose.apply( notification , [notification,message,o,self.element] ) !== false ) - $(this).trigger('jGrowl.close'); - }).bind('jGrowl.close', function() { - // Pause the notification, lest during the course of animation another close event gets called. - $(this).data('jGrowl.pause', true); - $(this).animate(o.animateClose, o.closeDuration, o.easing, function() { - if ( $.isFunction(o.close) ) { - if ( o.close.apply( notification , [notification,message,o,self.element] ) !== false ) - $(this).remove(); - } else { - $(this).remove(); - } - }); - }).trigger('jGrowl.beforeOpen'); - - /** Optional Corners Plugin **/ - if ( o.corners !== '' && $.fn.corner !== undefined ) $(notification).corner( o.corners ); - - /** Add a Global Closer if more than one notification exists **/ - if ($('.jGrowl-notification:parent', self.element).length > 1 && - $('.jGrowl-closer', self.element).length === 0 && this.defaults.closer !== false ) { - $(this.defaults.closerTemplate).addClass('jGrowl-closer ' + this.defaults.themeState + ' ui-corner-all').addClass(this.defaults.theme) - .appendTo(self.element).animate(this.defaults.animateOpen, this.defaults.speed, this.defaults.easing) - .bind("click.jGrowl", function() { - $(this).siblings().trigger("jGrowl.beforeClose"); - - if ( $.isFunction( self.defaults.closer ) ) { - self.defaults.closer.apply( $(this).parent()[0] , [$(this).parent()[0]] ); - } - }); - } - }, - - /** Update the jGrowl Container, removing old jGrowl notifications **/ - update: function() { - $(this.element).find('.jGrowl-notification:parent').each( function() { - if ($(this).data("jGrowl") !== undefined && $(this).data("jGrowl").created !== undefined && - ($(this).data("jGrowl").created.getTime() + parseInt($(this).data("jGrowl").life, 10)) < (new Date()).getTime() && - $(this).data("jGrowl").sticky !== true && - ($(this).data("jGrowl.pause") === undefined || $(this).data("jGrowl.pause") !== true) ) { - - // Pause the notification, lest during the course of animation another close event gets called. - $(this).trigger('jGrowl.beforeClose'); - } - }); - - if (this.notifications.length > 0 && - (this.defaults.pool === 0 || $(this.element).find('.jGrowl-notification:parent').length < this.defaults.pool) ) - this.render( this.notifications.shift() ); - - if ($(this.element).find('.jGrowl-notification:parent').length < 2 ) { - $(this.element).find('.jGrowl-closer').animate(this.defaults.animateClose, this.defaults.speed, this.defaults.easing, function() { - $(this).remove(); - }); - } - }, - - /** Setup the jGrowl Notification Container **/ - startup: function(e) { - this.element = $(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>'); - this.interval = setInterval( function() { - // some error in chage ^^ - var instance = $(e).data('jGrowl.instance'); - if (undefined !== instance) { - instance.update(); - } - }, parseInt(this.defaults.check, 10)); - }, - - /** Shutdown jGrowl, removing it and clearing the interval **/ - shutdown: function() { - $(this.element).removeClass('jGrowl') - .find('.jGrowl-notification').trigger('jGrowl.close') - .parent().empty() - ; - - clearInterval(this.interval); - }, - - close: function() { - $(this.element).find('.jGrowl-notification').each(function(){ - $(this).trigger('jGrowl.beforeClose'); - }); - } - }); - - /** Reference the Defaults Object for compatibility with older versions of jGrowl **/ - $.jGrowl.defaults = $.fn.jGrowl.prototype.defaults; - -})(jQuery); diff --git a/library/jgrowl/jquery.jgrowl.map b/library/jgrowl/jquery.jgrowl.map deleted file mode 100644 index a04b1e347..000000000 --- a/library/jgrowl/jquery.jgrowl.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jquery.jgrowl.min.js","sources":["jquery.jgrowl.js"],"names":["$","jGrowl","m","o","length","addClass","position","defaults","appendTo","fn","undefined","isPlainObject","message","isFunction","this","each","args","arguments","data","extend","notifications","element","interval","startup","apply","makeArray","slice","create","prototype","pool","header","group","sticky","glue","theme","themeState","corners","check","life","closeDuration","openDuration","easing","closer","closeTemplate","closerTemplate","log","beforeOpen","afterOpen","open","beforeClose","close","click","animateOpen","opacity","animateClose","options","speed","push","render","n","self","notification","append","html","children","bind","parent","trigger","after","before","animate","support","style","removeAttribute","created","Date","remove","corner","siblings","update","find","getTime","parseInt","shift","e","setInterval","instance","shutdown","removeClass","empty","clearInterval","jQuery"],"mappings":"CAsJA,SAAUA,GAETA,EAAEC,OAAS,SAAUC,EAAIC,GAEK,IAAxBH,EAAE,WAAWI,QACjBJ,EAAE,2BAA2BK,SAAWF,GAAKA,EAAEG,SAAYH,EAAEG,SAAWN,EAAEC,OAAOM,SAASD,UAAWE,SAAWL,GAAKA,EAAEK,SAAYL,EAAEK,SAAWR,EAAEC,OAAOM,SAASC,UAGnKR,EAAE,WAAWC,OAAOC,EAAEC,IAKvBH,EAAES,GAAGR,OAAS,SAAUC,EAAIC,GAO3B,GALWO,SAANP,GAAmBH,EAAEW,cAAcT,KACvCC,EAAID,EACJA,EAAIC,EAAES,SAGFZ,EAAEa,WAAWC,KAAKC,MAAQ,CAC9B,GAAIC,GAAOC,SAEX,OAAOH,MAAKC,KAAK,WAEyBL,SAApCV,EAAEc,MAAMI,KAAK,qBACjBlB,EAAEc,MAAMI,KAAK,kBAAmBlB,EAAEmB,OAAQ,GAAInB,GAAES,GAAGR,QAAYmB,iBAAmBC,QAAS,KAAMC,SAAU,QAC3GtB,EAAEc,MAAMI,KAAK,mBAAmBK,QAAST,OAIrCd,EAAEa,WAAWb,EAAEc,MAAMI,KAAK,mBAAmBhB,IACjDF,EAAEc,MAAMI,KAAK,mBAAmBhB,GAAGsB,MAAOxB,EAAEc,MAAMI,KAAK,mBAAqBlB,EAAEyB,UAAUT,GAAMU,MAAM,IAEpG1B,EAAEc,MAAMI,KAAK,mBAAmBS,OAAQzB,EAAIC,OAMhDH,EAAEmB,OAAQnB,EAAES,GAAGR,OAAO2B,WAGrBrB,UACCsB,KAAS,EACTC,OAAW,GACXC,MAAU,GACVC,QAAW,EACX1B,SAAY,YACZE,SAAY,OACZyB,KAAS,QACTC,MAAU,UACVC,WAAc,YACdC,QAAW,OACXC,MAAU,IACVC,KAAS,IACTC,cAAgB,SAChBC,aAAe,SACfC,OAAW,QACXC,QAAW,EACXC,cAAgB,UAChBC,eAAiB,2BACjBC,IAAQ,aACRC,WAAc,aACdC,UAAa,aACbC,KAAS,aACTC,YAAc,aACdC,MAAU,aACVC,MAAU,aACVC,aACCC,QAAU,QAEXC,cACCD,QAAU,SAIZjC,iBAGAC,QAAY,KAGZC,SAAa,KAGbK,OAAQ,SAAUf,EAAU2C,GAC3B,GAAIpD,GAAIH,EAAEmB,UAAWL,KAAKP,SAAUgD,EAGb,oBAAZpD,GAAEqD,QACZrD,EAAEqC,aAAerC,EAAEqD,MACnBrD,EAAEoC,cAAgBpC,EAAEqD,OAGrB1C,KAAKM,cAAcqC,MAAO7C,QAASA,EAAU2C,QAASpD,IAEtDA,EAAE0C,IAAIrB,MAAOV,KAAKO,SAAWP,KAAKO,QAAQT,EAAQT,KAGnDuD,OAAQ,SAAUC,GACjB,GAAIC,GAAO9C,KACPF,EAAU+C,EAAE/C,QACZT,EAAIwD,EAAEJ,OAGVpD,GAAEgC,WAA+B,KAAjBhC,EAAEgC,WAAqB,GAAK,YAAchC,EAAEgC,UAE5D,IAAI0B,GAAe7D,EAAE,UACnBK,SAAS,6BAA+BF,EAAEgC,WAAa,kBAAiCzB,SAAZP,EAAE4B,OAAmC,KAAZ5B,EAAE4B,MAAgB,IAAM5B,EAAE4B,MAAQ,KACvI+B,OAAO9D,EAAE,aAAaK,SAAS,gBAAgB0D,KAAK5D,EAAEwC,gBACtDmB,OAAO9D,EAAE,UAAUK,SAAS,iBAAiB0D,KAAK5D,EAAE2B,SACpDgC,OAAO9D,EAAE,UAAUK,SAAS,kBAAkB0D,KAAKnD,IACnDM,KAAK,SAAUf,GAAGE,SAASF,EAAE+B,OAAO8B,SAAS,iBAAiBC,KAAK,eAAgB,WAEnF,MADAjE,GAAEc,MAAMoD,SAASC,QAAQ,uBAClB,IAEPD,QAIFlE,GAAE6D,GAAcI,KAAK,mBAAoB,WACxCjE,EAAE,uBAAwB4D,EAAKvC,SAASH,KAAK,gBAAgB,KAC3D+C,KAAK,kBAAmB,WAC1BjE,EAAE,uBAAwB4D,EAAKvC,SAASH,KAAK,gBAAgB,KAC3D+C,KAAK,oBAAqB,WACvB9D,EAAE2C,WAAWtB,MAAOqC,GAAgBA,EAAajD,EAAQT,EAAEyD,EAAKvC,aAAe,GACnFrB,EAAEc,MAAMqD,QAAQ,iBAEfF,KAAK,cAAe,WACjB9D,EAAE6C,KAAKxB,MAAOqC,GAAgBA,EAAajD,EAAQT,EAAEyD,EAAKvC,aAAe,IAC9D,SAAVlB,EAAE8B,KACNjC,EAAE,4BAA6B4D,EAAKvC,SAAS+C,MAAMP,GAEnD7D,EAAE,6BAA8B4D,EAAKvC,SAASgD,OAAOR,GAGtD7D,EAAEc,MAAMwD,QAAQnE,EAAEiD,YAAajD,EAAEqC,aAAcrC,EAAEsC,OAAQ,WAEpDzC,EAAEuE,QAAQlB,WAAY,GACzBvC,KAAK0D,MAAMC,gBAAgB,UAEI,OAA3BzE,EAAEc,MAAMI,KAAK,WAAwD,mBAA3BlB,GAAEc,MAAMI,KAAK,YAC3DlB,EAAEc,MAAMI,KAAK,UAAUwD,QAAU,GAAIC,OAEtC3E,EAAEc,MAAMqD,QAAQ,yBAGhBF,KAAK,mBAAoB,WAC3B9D,EAAE4C,UAAUvB,MAAOqC,GAAgBA,EAAajD,EAAQT,EAAEyD,EAAKvC,YAC7D4C,KAAK,QAAS,WAChB9D,EAAEgD,MAAM3B,MAAOqC,GAAeA,EAAajD,EAAQT,EAAEyD,EAAKvC,YACxD4C,KAAK,qBAAsB,WACxB9D,EAAE8C,YAAYzB,MAAOqC,GAAgBA,EAAajD,EAAQT,EAAEyD,EAAKvC,aAAe,GACpFrB,EAAEc,MAAMqD,QAAQ,kBACfF,KAAK,eAAgB,WAEvBjE,EAAEc,MAAMI,KAAK,gBAAgB,GAC7BlB,EAAEc,MAAMwD,QAAQnE,EAAEmD,aAAcnD,EAAEoC,cAAepC,EAAEsC,OAAQ,WACrDzC,EAAEa,WAAWV,EAAE+C,OACd/C,EAAE+C,MAAM1B,MAAOqC,GAAgBA,EAAajD,EAAQT,EAAEyD,EAAKvC,aAAe,GAC9ErB,EAAEc,MAAM8D,SAET5E,EAAEc,MAAM8D,aAGRT,QAAQ,qBAGQ,KAAdhE,EAAEiC,SAAkC1B,SAAhBV,EAAES,GAAGoE,QAAuB7E,EAAE6D,GAAcgB,OAAQ1E,EAAEiC,SAG3EpC,EAAE,8BAA+B4D,EAAKvC,SAASjB,OAAS,GACd,IAA7CJ,EAAE,iBAAkB4D,EAAKvC,SAASjB,QAAgBU,KAAKP,SAASmC,UAAW,GAC3E1C,EAAEc,KAAKP,SAASqC,gBAAgBvC,SAAS,iBAAmBS,KAAKP,SAAS4B,WAAa,kBAAkB9B,SAASS,KAAKP,SAAS2B,OAC9H1B,SAASoD,EAAKvC,SAASiD,QAAQxD,KAAKP,SAAS6C,YAAatC,KAAKP,SAASiD,MAAO1C,KAAKP,SAASkC,QAC7FwB,KAAK,eAAgB,WACrBjE,EAAEc,MAAMgE,WAAWX,QAAQ,sBAEtBnE,EAAEa,WAAY+C,EAAKrD,SAASmC,SAChCkB,EAAKrD,SAASmC,OAAOlB,MAAOxB,EAAEc,MAAMoD,SAAS,IAAMlE,EAAEc,MAAMoD,SAAS,QAOzEa,OAAQ,WACP/E,EAAEc,KAAKO,SAAS2D,KAAK,+BAA+BjE,KAAM,WAC1BL,SAA3BV,EAAEc,MAAMI,KAAK,WAA8DR,SAAnCV,EAAEc,MAAMI,KAAK,UAAUwD,SACjE1E,EAAEc,MAAMI,KAAK,UAAUwD,QAAQO,UAAYC,SAASlF,EAAEc,MAAMI,KAAK,UAAUoB,KAAM,KAAQ,GAAKqC,OAAQM,WACvGjF,EAAEc,MAAMI,KAAK,UAAUc,UAAW,IACAtB,SAAjCV,EAAEc,MAAMI,KAAK,iBAAiClB,EAAEc,MAAMI,KAAK,mBAAoB,IAGhFlB,EAAEc,MAAMqD,QAAQ,wBAIdrD,KAAKM,cAAchB,OAAS,IACP,IAAvBU,KAAKP,SAASsB,MAAc7B,EAAEc,KAAKO,SAAS2D,KAAK,+BAA+B5E,OAASU,KAAKP,SAASsB,OACxGf,KAAK4C,OAAQ5C,KAAKM,cAAc+D,SAE7BnF,EAAEc,KAAKO,SAAS2D,KAAK,+BAA+B5E,OAAS,GAChEJ,EAAEc,KAAKO,SAAS2D,KAAK,kBAAkBV,QAAQxD,KAAKP,SAAS+C,aAAcxC,KAAKP,SAASiD,MAAO1C,KAAKP,SAASkC,OAAQ,WACrHzC,EAAEc,MAAM8D,YAMXrD,QAAS,SAAS6D,GACjBtE,KAAKO,QAAUrB,EAAEoF,GAAG/E,SAAS,UAAUyD,OAAO,2CAC9ChD,KAAKQ,SAAW+D,YAAa,WAE5B,GAAIC,GAAWtF,EAAEoF,GAAGlE,KAAK,kBACrBR,UAAc4E,GACjBA,EAASP,UAERG,SAASpE,KAAKP,SAAS8B,MAAO,MAIlCkD,SAAU,WACTvF,EAAEc,KAAKO,SAASmE,YAAY,UAC1BR,KAAK,wBAAwBb,QAAQ,gBACrCD,SAASuB,QAGXC,cAAc5E,KAAKQ,WAGpB4B,MAAO,WACNlD,EAAEc,KAAKO,SAAS2D,KAAK,wBAAwBjE,KAAK,WACjDf,EAAEc,MAAMqD,QAAQ,2BAMnBnE,EAAEC,OAAOM,SAAWP,EAAES,GAAGR,OAAO2B,UAAUrB,UAExCoF"}
\ No newline at end of file diff --git a/library/jgrowl/jquery.jgrowl.min.css b/library/jgrowl/jquery.jgrowl.min.css deleted file mode 100644 index a12f907e5..000000000 --- a/library/jgrowl/jquery.jgrowl.min.css +++ /dev/null @@ -1 +0,0 @@ -.jGrowl{z-index:9999;color:#fff;font-size:12px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;position:fixed}.jGrowl.top-left{left:0;top:0}.jGrowl.top-right{right:0;top:0}.jGrowl.bottom-left{left:0;bottom:0}.jGrowl.bottom-right{right:0;bottom:0}.jGrowl.center{top:0;width:50%;left:25%}.jGrowl.center .jGrowl-closer,.jGrowl.center .jGrowl-notification{margin-left:auto;margin-right:auto}.jGrowl-notification{background-color:#000;opacity:.9;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=(0.9*100));-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=(0.9*100));zoom:1;width:250px;padding:10px;margin:10px;text-align:left;display:none;border-radius:5px;min-height:40px}.jGrowl-notification .ui-state-highlight,.jGrowl-notification .ui-widget-content .ui-state-highlight,.jGrowl-notification .ui-widget-header .ui-state-highlight{border:1px solid #000;background:#000;color:#fff}.jGrowl-notification .jGrowl-header{font-weight:700;font-size:.85em}.jGrowl-notification .jGrowl-close{background-color:transparent;color:inherit;border:none;z-index:99;float:right;font-weight:700;font-size:1em;cursor:pointer}.jGrowl-closer{background-color:#000;opacity:.9;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=(0.9*100));-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=(0.9*100));zoom:1;width:250px;padding:10px;margin:10px;display:none;border-radius:5px;padding-top:4px;padding-bottom:4px;cursor:pointer;font-size:.9em;font-weight:700;text-align:center}.jGrowl-closer .ui-state-highlight,.jGrowl-closer .ui-widget-content .ui-state-highlight,.jGrowl-closer .ui-widget-header .ui-state-highlight{border:1px solid #000;background:#000;color:#fff}@media print{.jGrowl{display:none}}
\ No newline at end of file diff --git a/library/jgrowl/jquery.jgrowl.min.js b/library/jgrowl/jquery.jgrowl.min.js deleted file mode 100644 index 418c3db79..000000000 --- a/library/jgrowl/jquery.jgrowl.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(a){a.jGrowl=function(b,c){0===a("#jGrowl").length&&a('<div id="jGrowl"></div>').addClass(c&&c.position?c.position:a.jGrowl.defaults.position).appendTo(c&&c.appendTo?c.appendTo:a.jGrowl.defaults.appendTo),a("#jGrowl").jGrowl(b,c)},a.fn.jGrowl=function(b,c){if(void 0===c&&a.isPlainObject(b)&&(c=b,b=c.message),a.isFunction(this.each)){var d=arguments;return this.each(function(){void 0===a(this).data("jGrowl.instance")&&(a(this).data("jGrowl.instance",a.extend(new a.fn.jGrowl,{notifications:[],element:null,interval:null})),a(this).data("jGrowl.instance").startup(this)),a.isFunction(a(this).data("jGrowl.instance")[b])?a(this).data("jGrowl.instance")[b].apply(a(this).data("jGrowl.instance"),a.makeArray(d).slice(1)):a(this).data("jGrowl.instance").create(b,c)})}},a.extend(a.fn.jGrowl.prototype,{defaults:{pool:0,header:"",group:"",sticky:!1,position:"top-right",appendTo:"body",glue:"after",theme:"default",themeState:"highlight",corners:"10px",check:250,life:3e3,closeDuration:"normal",openDuration:"normal",easing:"swing",closer:!0,closeTemplate:"×",closerTemplate:"<div>[ close all ]</div>",log:function(){},beforeOpen:function(){},afterOpen:function(){},open:function(){},beforeClose:function(){},close:function(){},click:function(){},animateOpen:{opacity:"show"},animateClose:{opacity:"hide"}},notifications:[],element:null,interval:null,create:function(b,c){var d=a.extend({},this.defaults,c);"undefined"!=typeof d.speed&&(d.openDuration=d.speed,d.closeDuration=d.speed),this.notifications.push({message:b,options:d}),d.log.apply(this.element,[this.element,b,d])},render:function(b){var c=this,d=b.message,e=b.options;e.themeState=""===e.themeState?"":"ui-state-"+e.themeState;var f=a("<div/>").addClass("jGrowl-notification alert "+e.themeState+" ui-corner-all"+(void 0!==e.group&&""!==e.group?" "+e.group:"")).append(a("<button/>").addClass("jGrowl-close").html(e.closeTemplate)).append(a("<div/>").addClass("jGrowl-header").html(e.header)).append(a("<div/>").addClass("jGrowl-message").html(d)).data("jGrowl",e).addClass(e.theme).children(".jGrowl-close").bind("click.jGrowl",function(){return a(this).parent().trigger("jGrowl.beforeClose"),!1}).parent();a(f).bind("mouseover.jGrowl",function(){a(".jGrowl-notification",c.element).data("jGrowl.pause",!0)}).bind("mouseout.jGrowl",function(){a(".jGrowl-notification",c.element).data("jGrowl.pause",!1)}).bind("jGrowl.beforeOpen",function(){e.beforeOpen.apply(f,[f,d,e,c.element])!==!1&&a(this).trigger("jGrowl.open")}).bind("jGrowl.open",function(){e.open.apply(f,[f,d,e,c.element])!==!1&&("after"==e.glue?a(".jGrowl-notification:last",c.element).after(f):a(".jGrowl-notification:first",c.element).before(f),a(this).animate(e.animateOpen,e.openDuration,e.easing,function(){a.support.opacity===!1&&this.style.removeAttribute("filter"),null!==a(this).data("jGrowl")&&"undefined"!=typeof a(this).data("jGrowl")&&(a(this).data("jGrowl").created=new Date),a(this).trigger("jGrowl.afterOpen")}))}).bind("jGrowl.afterOpen",function(){e.afterOpen.apply(f,[f,d,e,c.element])}).bind("click",function(){e.click.apply(f,[f,d,e,c.element])}).bind("jGrowl.beforeClose",function(){e.beforeClose.apply(f,[f,d,e,c.element])!==!1&&a(this).trigger("jGrowl.close")}).bind("jGrowl.close",function(){a(this).data("jGrowl.pause",!0),a(this).animate(e.animateClose,e.closeDuration,e.easing,function(){a.isFunction(e.close)?e.close.apply(f,[f,d,e,c.element])!==!1&&a(this).remove():a(this).remove()})}).trigger("jGrowl.beforeOpen"),""!==e.corners&&void 0!==a.fn.corner&&a(f).corner(e.corners),a(".jGrowl-notification:parent",c.element).length>1&&0===a(".jGrowl-closer",c.element).length&&this.defaults.closer!==!1&&a(this.defaults.closerTemplate).addClass("jGrowl-closer "+this.defaults.themeState+" ui-corner-all").addClass(this.defaults.theme).appendTo(c.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){a(this).siblings().trigger("jGrowl.beforeClose"),a.isFunction(c.defaults.closer)&&c.defaults.closer.apply(a(this).parent()[0],[a(this).parent()[0]])})},update:function(){a(this.element).find(".jGrowl-notification:parent").each(function(){void 0!==a(this).data("jGrowl")&&void 0!==a(this).data("jGrowl").created&&a(this).data("jGrowl").created.getTime()+parseInt(a(this).data("jGrowl").life,10)<(new Date).getTime()&&a(this).data("jGrowl").sticky!==!0&&(void 0===a(this).data("jGrowl.pause")||a(this).data("jGrowl.pause")!==!0)&&a(this).trigger("jGrowl.beforeClose")}),this.notifications.length>0&&(0===this.defaults.pool||a(this.element).find(".jGrowl-notification:parent").length<this.defaults.pool)&&this.render(this.notifications.shift()),a(this.element).find(".jGrowl-notification:parent").length<2&&a(this.element).find(".jGrowl-closer").animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){a(this).remove()})},startup:function(b){this.element=a(b).addClass("jGrowl").append('<div class="jGrowl-notification"></div>'),this.interval=setInterval(function(){var c=a(b).data("jGrowl.instance");void 0!==c&&c.update()},parseInt(this.defaults.check,10))},shutdown:function(){a(this.element).removeClass("jGrowl").find(".jGrowl-notification").trigger("jGrowl.close").parent().empty(),clearInterval(this.interval)},close:function(){a(this.element).find(".jGrowl-notification").each(function(){a(this).trigger("jGrowl.beforeClose")})}}),a.jGrowl.defaults=a.fn.jGrowl.prototype.defaults}(jQuery); -//# sourceMappingURL=jquery.jgrowl.map
\ No newline at end of file diff --git a/library/jgrowl/less/jgrowl.core.less b/library/jgrowl/less/jgrowl.core.less deleted file mode 100644 index e3f8d4873..000000000 --- a/library/jgrowl/less/jgrowl.core.less +++ /dev/null @@ -1,101 +0,0 @@ - -.jGrowl { - z-index: 9999; - color: @jgrowl-color; - font-size: @jgrowl-fontSize; - font-family: @jgrowl-fontFamily; - position: fixed; - - &.top-left { - left: 0px; - top: 0px; - } - - &.top-right { - right: 0px; - top: 0px; - } - - &.bottom-left { - left: 0px; - bottom: 0px; - } - - &.bottom-right { - right: 0px; - bottom: 0px; - } - - &.center { - top: 0px; - width: 50%; - left: 25%; - - .jGrowl-notification, - .jGrowl-closer { - margin-left: auto; - margin-right: auto; - } - } -} - -.notification() { - background-color: @jgrowl-backgroundColor; - opacity: @jgrowl-opacity; - // These are for older versions of Internet Explorer that don't support opacity - filter: e(%("progid:DXImageTransform.Microsoft.Alpha(Opacity=(%d*100))",@jgrowl-opacity)); - -ms-filter: e(%("progid:DXImageTransform.Microsoft.Alpha(Opacity=(%d*100))",@jgrowl-opacity)); - zoom: 1; - width: @jgrowl-width; - padding: 10px; - margin: 10px; - text-align: left; - display: none; - border-radius: @jgrowl-borderRadius; - - .ui-state-highlight, - .ui-widget-content .ui-state-highlight, - .ui-widget-header .ui-state-highlight { - border: 1px solid #000; - background: #000; - color: #fff; - } -} - -.jGrowl-notification { - .notification; - min-height: @jgrowl-height; - - .jGrowl-header { - font-weight: bold; - font-size: .85em; - } - - .jGrowl-close { - background-color: transparent; - color: inherit; - border: none; - z-index: 99; - float: right; - font-weight: bold; - font-size: 1em; - cursor: pointer; - } -} - -.jGrowl-closer { - .notification; - padding-top: 4px; - padding-bottom: 4px; - cursor: pointer; - font-size: .9em; - font-weight: bold; - text-align: center; -} - -/** Hide jGrowl when printing **/ -@media print { - .jGrowl { - display: none; - } -} diff --git a/library/jgrowl/less/jgrowl.less b/library/jgrowl/less/jgrowl.less deleted file mode 100644 index d55478820..000000000 --- a/library/jgrowl/less/jgrowl.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "jgrowl.variables.less"; -@import "jgrowl.core.less";
\ No newline at end of file diff --git a/library/jgrowl/less/jgrowl.variables.less b/library/jgrowl/less/jgrowl.variables.less deleted file mode 100644 index ec025cb39..000000000 --- a/library/jgrowl/less/jgrowl.variables.less +++ /dev/null @@ -1,8 +0,0 @@ -@jgrowl-width: 250px; -@jgrowl-height: 40px; -@jgrowl-backgroundColor: #000; -@jgrowl-color: #fff; -@jgrowl-fontSize: 12px; -@jgrowl-fontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif; -@jgrowl-opacity: .90; -@jgrowl-borderRadius: 5px;
\ No newline at end of file diff --git a/library/jgrowl/package.json b/library/jgrowl/package.json deleted file mode 100644 index 8e523ed84..000000000 --- a/library/jgrowl/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "jgrowl", - "version": "1.4.5", - "author": { - "name" : "Stan Lemon", - "email" : "stosh1985@gmail.com", - "url" : "http://stanlemon.net" - }, - "src": "jquery.jgrowl.js", - "style": "jquery.jgrowl.css", - "repository" : { - "type" : "git", - "url" : "http://github.com/stanlemon/jGrowl.git" - }, - "devDependencies": { - "grunt": "~0.4.2", - "grunt-contrib-jshint": "~0.6.3", - "grunt-contrib-uglify": "~0.4.0", - "grunt-contrib-cssmin": "~0.9.0", - "grunt-contrib-less": "~0.11.0", - "grunt-contrib-watch": "~0.6.1" - } -} diff --git a/tests/phpunit.xml b/tests/phpunit.xml index a92dd530f..3531cd05c 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -1,11 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<phpunit - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - bootstrap="../boot.php" - colors="true" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" - > - +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="../boot.php" colors="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd" cacheDirectory=".phpunit.cache"> <php> <includePath>..</includePath> <!-- env name="HZ_TEST_DB_HOST" value=""/--> @@ -24,10 +18,7 @@ <directory suffix="Test.php" prefix="API">./unit/</directory> </testsuite> </testsuites> - <coverage - processUncoveredFiles="false" - cacheDirectory=".cache/phpunit" - > + <source> <include> <directory suffix=".php">../Zotlabs/</directory> <directory suffix=".php">../include/</directory> @@ -35,5 +26,5 @@ <exclude> <directory suffix=".php">../Zotlabs/Update/</directory> </exclude> - </coverage> + </source> </phpunit> diff --git a/tests/unit/Access/AccessListTest.php b/tests/unit/Access/AccessListTest.php index 635f09930..feb9efebd 100644 --- a/tests/unit/Access/AccessListTest.php +++ b/tests/unit/Access/AccessListTest.php @@ -185,7 +185,7 @@ class AccessListTest extends UnitTestCase { $this->assertTrue($accessListPrivate->is_private()); } - public function isprivateProvider() { + public static function isprivateProvider() { return [ 'all set' => [[ 'channel_allow_cid' => '<acid>', diff --git a/tests/unit/Access/PermissionRolesTest.php b/tests/unit/Access/PermissionRolesTest.php index 3d3cbbae5..ccd6df205 100644 --- a/tests/unit/Access/PermissionRolesTest.php +++ b/tests/unit/Access/PermissionRolesTest.php @@ -23,6 +23,7 @@ namespace Zotlabs\Tests\Unit\Access; +use PHPUnit\Framwork\Attributes\IgnoreDeprecations; use Zotlabs\Tests\Unit\UnitTestCase; use Zotlabs\Access\PermissionRoles; use phpmock\phpunit\PHPMock; @@ -35,6 +36,7 @@ use DMS\PHPUnitExtensions\ArraySubset\Assert; * * @covers Zotlabs\Access\PermissionRoles */ +#[IgnoreDeprecations] class PermissionRolesTest extends UnitTestCase { use PHPMock; diff --git a/tests/unit/Access/PermissionsTest.php b/tests/unit/Access/PermissionsTest.php index 3ab567ad0..f9cb25b64 100644 --- a/tests/unit/Access/PermissionsTest.php +++ b/tests/unit/Access/PermissionsTest.php @@ -63,14 +63,6 @@ class PermissionsTest extends UnitTestCase { // There are 17 default perms $permsCount = 17; - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->exactly(2*$permsCount))->willReturnCallback( - function ($string) { - return $string; - } - ); - // static method Perms() $perms = Permissions::Perms(); @@ -97,14 +89,6 @@ class PermissionsTest extends UnitTestCase { // There are 17 default perms $permsCount = 17; - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->exactly(2*$permsCount))->willReturnCallback( - function ($string) { - return $string; - } - ); - $perms = Permissions::Perms('view_'); $this->assertEquals($permsCount, count($perms)); @@ -125,9 +109,6 @@ class PermissionsTest extends UnitTestCase { * @param array $expected The expected result perms array */ public function testFilledPerms($permarr, $expected) { - // Create a stub for global function t() - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $this->assertEquals($expected, Permissions::FilledPerms($permarr)); } /** @@ -135,7 +116,7 @@ class PermissionsTest extends UnitTestCase { * * \e array Indexed array which is passed as parameter to FilledPerms() * * \e array Expected associative result array with filled perms */ - public function FilledPermsProvider() { + public static function FilledPermsProvider() { return [ 'Empty param array' => [ [], @@ -209,13 +190,6 @@ class PermissionsTest extends UnitTestCase { * @uses ::call_hooks */ public function testFilledPermsNull() { - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->atLeastOnce()); - // Create a stub for global function bt() with expectations - $bt = $this->getFunctionMock('Zotlabs\Access', 'btlogger'); - $bt->expects($this->once())->with($this->equalTo('FilledPerms: null')); - $result = [ 'view_stream' => 0, 'send_stream' => 0, @@ -253,7 +227,7 @@ class PermissionsTest extends UnitTestCase { * * \e array Array with perms to test * * \e array Expected result array */ - public function OPermsProvider() { + public static function OPermsProvider() { return [ 'empty' => [ [], @@ -286,7 +260,7 @@ class PermissionsTest extends UnitTestCase { * * \e array 2nd array with perms * * \e boolean expected result for the perms comparison */ - public function permsCompareProvider() { + public static function permsCompareProvider() { return [ 'equal' => [ ['perm1' => 1, 'perm2' => 0], diff --git a/tests/unit/AntiXSSTest.php b/tests/unit/AntiXSSTest.php index 1de9d54cd..642224f60 100644 --- a/tests/unit/AntiXSSTest.php +++ b/tests/unit/AntiXSSTest.php @@ -31,7 +31,7 @@ class AntiXSSTest extends TestCase { $this->assertEquals($expected, escape_url($url)); } - public function urlTestProvider() : array { + public static function urlTestProvider() : array { return [ [ "https://example.com/settings/calendar/?f=&rpath=https://example.com/cdav/calendar'><script>alert('boom')</script>", diff --git a/tests/unit/CallHooksTest.php b/tests/unit/CallHooksTest.php new file mode 100644 index 000000000..0170f31d0 --- /dev/null +++ b/tests/unit/CallHooksTest.php @@ -0,0 +1,65 @@ +<?php +/** + * Unit tests for the `call_hooks` function, located in include/plugin.php. + * + * SPDX-FileCopyrightText: 2024 Hubzilla Community + * SPDX-FileContributor: Harald Eilertsen + * + * SPDX-License-Identifier: MIT + */ + +namespace Zotlabs\Tests\Unit; + +use PHPUnit\Framework\Attributes\BackupStaticProperties; +use App; + +#[BackupStaticProperties(App::class)] +class CallHooksTest extends UnitTestCase { + + /** + * Test using a freestanding function as callback. + * + * @SuppressWarnings(PHPMD.EvalExpression) + */ + public function test_freestanding_function_as_string(): void { + eval('function hook_test_function(array &$args): void { $args["called"] = true; }'); + insert_hook('test_hook', 'hook_test_function'); + $this->assertHookInvoked(); + } + + public function test_static_class_function_as_string(): void { + insert_hook('test_hook', 'Zotlabs\Tests\Unit\CallHooksTest::static_test_hook'); + $this->assertHookInvoked(); + } + + public function test_static_class_function_as_array(): void { + insert_hook('test_hook', ['Zotlabs\Tests\Unit\CallHooksTest', 'static_test_hook']); + $this->assertHookInvoked(); + } + + public function test_static_class_function_as_serialized_array(): void { + insert_hook('test_hook', serialize(['Zotlabs\Tests\Unit\CallHooksTest', 'static_test_hook'])); + $this->assertHookInvoked(); + } + + public function test_instance_function_as_array(): void { + insert_hook('test_hook', [$this, 'instance_test_hook']); + $this->assertHookInvoked(); + } + + + public function assertHookInvoked(): void { + $test_hook_args = ['called' => false]; + call_hooks('test_hook', $test_hook_args); + + $this->assertTrue($test_hook_args['called']); + } + + public function instance_test_hook(array &$args): void { + $args['called'] = true; + } + public static function static_test_hook(array &$args): void { + $args['called'] = true; + } +} + diff --git a/tests/unit/CreateIdentityTest.php b/tests/unit/CreateIdentityTest.php new file mode 100644 index 000000000..a5e0f278a --- /dev/null +++ b/tests/unit/CreateIdentityTest.php @@ -0,0 +1,65 @@ +<?php +/** + * Unit tests for the `create_identity` function. + * + * SPDX-FileCopyrightText: 2024 Hubzilla Community + * SPDX-FileContributor: Harald Eilertsen + * + * SPDX-License-Identifier: MIT + */ + +namespace Zotlabs\Tests\Unit; + +class CreateIdentityTest extends UnitTestCase { + + private bool $queueworker_started = false; + + public function test_empty_args() { + insert_hook('proc_run', [$this, 'proc_run_hook']); + $result = create_identity([]); + $this->assertEquals( + ['success' => false, 'message' => 'No account identifier'], + $result); + + $this->assertFalse($this->queueworker_started); + } + + public function test_create_new_channel_with_valid_account_id(): void { + insert_hook('proc_run', [$this, 'proc_run_hook']); + $result = create_identity([ + 'account_id' => $this->fixtures['account'][0]['account_id'], + 'nickname' => 'testuser', + 'name' => 'Olga Testuser', + ]); + + $this->assertTrue($result['success']); + $this->assertTrue($this->queueworker_started); + } + + public function test_create_new_channel_with_nnexistant_account_id(): void { + insert_hook('proc_run', [$this, 'proc_run_hook']); + $result = create_identity([ + 'account_id' => 666, + 'nickname' => 'testuser', + 'name' => 'Olga Testuser', + ]); + + /* + * We would expect this fo fail, but... + * + * The create_identity function will happily create a new channel with an + * non-existent account_id. The New_channel module will perform a check + * to ensure that only valid (and logged in) accounts can create a new channel. + * + * This is a bit weak, but for now we let it pass... + */ + $this->assertTrue($result['success']); + $this->assertTrue($this->queueworker_started); + } + + public function proc_run_hook(array &$args): void { + $args['run_cmd'] = false; + $this->queueworker_started = + $args['args'] === ['php', 'Zotlabs/Daemon/Master.php', 'Queueworker']; + } +} diff --git a/tests/unit/Lib/ActivityTest.php b/tests/unit/Lib/ActivityTest.php index c9ce79d8c..0e2703f2b 100644 --- a/tests/unit/Lib/ActivityTest.php +++ b/tests/unit/Lib/ActivityTest.php @@ -19,7 +19,7 @@ class ActivityTest extends UnitTestCase { /** * Dataprovider for test_get_textfield. */ - private function get_textfield_provider(): array { + public static function get_textfield_provider(): array { return [ 'get content field' => [ ['content' => 'Some content'], diff --git a/tests/unit/Lib/PermissionDescriptionTest.php b/tests/unit/Lib/PermissionDescriptionTest.php index fdd676f61..1e4b5292c 100644 --- a/tests/unit/Lib/PermissionDescriptionTest.php +++ b/tests/unit/Lib/PermissionDescriptionTest.php @@ -46,16 +46,6 @@ class PermissionDescriptionTest extends UnitTestCase { } public function testFromStandalonePermission() { - // Create a stub for global function t() - $t = $this->getFunctionMock('Zotlabs\Lib', 't'); - $t->expects($this->atLeastOnce())->willReturnCallback( - function ($string) { - return $string; - } - ); - // Create a mock for global function logger() - $this->getFunctionMock('Zotlabs\Lib', 'logger'); - $permDescUnknown = PermissionDescription::fromStandalonePermission(-1); $permDescSelf = PermissionDescription::fromStandalonePermission(0); @@ -113,16 +103,6 @@ class PermissionDescriptionTest extends UnitTestCase { } public function testGetPermissionDescription() { - // Create a stub for global function t() - $t = $this->getFunctionMock('Zotlabs\Lib', 't'); - $t->expects($this->atLeastOnce())->willReturnCallback( - function ($string) { - return $string; - } - ); - // Create a mock for global function logger() - $this->getFunctionMock('Zotlabs\Lib', 'logger'); - // Create a stub for the PermissionDescription class $stub = $this->createMock(PermissionDescription::class); $stub->method('get_permission_description') diff --git a/tests/unit/Lib/ZotlibTest.php b/tests/unit/Lib/ZotlibTest.php new file mode 100644 index 000000000..0ab89dc2f --- /dev/null +++ b/tests/unit/Lib/ZotlibTest.php @@ -0,0 +1,38 @@ +<?php +namespace Zotlabs\Tests\Unit\Lib; + +use Zotlabs\Tests\Unit\UnitTestCase; + +class ZotlibTest extends UnitTestCase { + /** + * Test the `get_rpost_path` function. + * + * @dataProvider get_rpost_path_provider + */ + public function test_get_rpost_path(string $expected, string $xchan_url) : void { + $observer = [ 'xchan_url' => $xchan_url ]; + + $this->assertEquals($expected, \Zotlabs\Lib\Libzot::get_rpost_path($observer)); + } + + public static function get_rpost_path_provider() : array { + return [ + 'xchan_url without port' => [ + 'https://example.com/rpost?f=', + 'https://example.com' + ], + 'xchan_url with port' => [ + 'https://example.com:666/rpost?f=', + 'https://example.com:666' + ], + 'xchan_url ignores path and args' => [ + 'https://example.com/rpost?f=', + 'https://example.com/path?arg1=balle' + ], + 'xchan_url with no scheme should default to https' => [ + 'https://example.com/rpost?f=', + 'example.com', + ], + ]; + } +} diff --git a/tests/unit/Module/HelpTest.php b/tests/unit/Module/HelpTest.php new file mode 100644 index 000000000..c345d5e52 --- /dev/null +++ b/tests/unit/Module/HelpTest.php @@ -0,0 +1,179 @@ +<?php +/** + * SPDX-FileCopyrightText: 2024 Harald Eilertsen + * SPDX-FileCopyrightText: 2024 Hubzilla Community + * + * SPDX-License-Identifier: MIT + */ + +class HelpTest extends \Zotlabs\Tests\Unit\Module\TestCase { + + use \phpmock\phpunit\PHPMock; + + /** + * Define the stubs to make sure they work later in the test. + * + * @see https://php-mock.github.io/php-mock-phpunit/api/class-phpmock.phpunit.PHPMock.html#_defineFunctionMock + * + * @beforeClass + */ + public static function define_stubs(): void { + self::defineFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); + self::defineFunctionMock('Zotlabs\Module', 'file_get_contents'); + } + + /** + * Test getting a help page when the underlying file exists. + * + * @testWith + * ["md"] + * ["bb"] + * ["html"] + */ + public function test_get_request_when_help_file_exists(string $ext): void { + // Stub file exists, to only retur true for the file with the current + // extension + $fe_stub = $this->getFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); + $fe_stub + ->expects($this->any()) + ->willReturnCallback( + fn (string $path) => $path === "doc/en/about/help_topic.{$ext}" + ); + + // Use a value map to make the `file_get_contents` stub return the + // correct content for the file types. + $file_content_map = [ + [ 'doc/en/about/help_topic.md', "### Help heading\n\$Projectname help content" ], + [ 'doc/en/about/help_topic.bb', "[h3]Help heading[/h3]\n\n\$Projectname help content" ], + [ 'doc/en/about/help_topic.html', "<h3>Help heading</h3><p>\$Projectname help content</p>" ], + ]; + + // Stub `file_get_contents` to plant our own content. + $fgc_stub = $this->getFunctionMock('Zotlabs\Module', 'file_get_contents'); + $fgc_stub + ->expects($this->once()) + ->willReturnMap($file_content_map); + + + $this->get("help/about/help_topic"); + + // Check that markdown content was correctly rendered + $this->assertPageContains('<h3>Help heading</h3>'); + + // Check that `$Projectname` has been translated properly + $this->assertPageContains('Hubzilla help content'); + + // Check that heading has been set + $this->assertPageContains('Hubzilla Documentation: About'); + + // Check that page title has been set + $this->assertTrue(isset(\App::$page['title']), 'Page title not set'); + $this->assertStringContainsString('Help', \App::$page['title']); + $this->assertStringContainsStringIgnoringCase('Help Topic', \App::$page['title']); + + // Check that nav selection has been set + $this->assertTrue(isset(\App::$nav_sel['raw_name']), 'Nav selection raw name not set'); + $this->assertEquals('Help', \App::$nav_sel['raw_name']); + + $this->assertTrue(isset(\App::$nav_sel['name']), 'Navselection name not set'); + $this->assertEquals('Help', \App::$nav_sel['name']); + } + + public function test_get_request_should_return_404_when_help_file_does_not_exist(): void { + // Stub file exists, to only retur true for the file with the current + // extension + $fe_stub = $this->getFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); + $fe_stub + ->expects($this->any()) + ->willReturn(false); + + // Make sure `file_get_contents` is never called by the code. + $fgc_stub = $this->getFunctionMock('Zotlabs\Module', 'file_get_contents'); + $fgc_stub->expects($this->never()); + + $this->get("help/this_topic_does_not_exist"); + + $this->assertPageContains('not found'); + } + + public function test_get_request_without_args_redirects_to_about_page(): void { + $this->stub_goaway(); + $this->expectException(\Zotlabs\Tests\Unit\Module\RedirectException::class); + $this->expectExceptionMessage('about/about'); + + $this->get('help'); + } + + public function test_find_help_file_returns_first_match(): void { + // Stub file exists, to always return true + $fe_stub = $this->getFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); + $fe_stub + ->expects($this->once()) + ->willReturn(true); + + // Stub `file_get_contents` to plant our own content. + $fgc_stub = $this->getFunctionMock('Zotlabs\Module', 'file_get_contents'); + $fgc_stub + ->expects($this->once()) + ->with('doc/en/first.md') + ->willReturn('found'); + + $this->get('help/first'); + } + + public function test_includes(): void { + // Stub `file_get_contents` to plant our own content. + $fgc_stub = $this->getFunctionMock('Zotlabs\Module', 'file_get_contents'); + $fgc_stub + ->expects($this->any()) + ->willReturnCallback( + function (string $path): string { + if ($path === 'doc/en/sub.md') { + return "### This is the included file."; + } else { + return "### Main topic\n\n#include doc/en/sub.md;"; + } + } + ); + + // Stub file exists, to always return true + $fe_stub = $this->getFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); + $fe_stub + ->expects($this->any()) + ->willReturn(true); + + $this->get('help/main'); + + $this->assertPageContains('<h3>This is the included file.</h3>'); + } + + public function test_include_file_of_different_type_than_main_file(): void { + // Stub `file_get_contents` to plant our own content. + $fgc_stub = $this->getFunctionMock('Zotlabs\Module', 'file_get_contents'); + $fgc_stub + ->expects($this->any()) + ->willReturnCallback( + function (string $path): string { + if ($path === 'doc/en/sub.md') { + return "### This is the included file."; + } else { + return "[h3]Main topic[/h3]\n\n#include doc/en/sub.md;"; + } + } + ); + + // Stub file exists, only return true for main.bb and sub.md + $fe_stub = $this->getFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); + $fe_stub + ->expects($this->any()) + ->willReturnCallback( + fn (string $path) => ( + $path === 'doc/en/main.bb' || $path === 'doc/en/sub.md' + ) + ); + + $this->get('help/main'); + + $this->assertPageContains('<h3>This is the included file.</h3>'); + } +} diff --git a/tests/unit/Module/RbmarkTest.php b/tests/unit/Module/RbmarkTest.php new file mode 100644 index 000000000..594e7369b --- /dev/null +++ b/tests/unit/Module/RbmarkTest.php @@ -0,0 +1,80 @@ +<?php +/** + * Unit/integration tests for the Rbmark module. + * + * SPDX-FileCopyrightText: 2024 Hubzilla Community + * + * SPDX-License-Identifier: MIT + */ + +class RbmarkTest extends \Zotlabs\Tests\Unit\Module\TestCase { + public function test_unauthenticated_get_request_return_login_form(): void { + $lc_stub = $this->getFunctionMock('Zotlabs\Module', 'local_channel'); + $lc_stub + ->expects($this->once()) + ->willReturn(false); + + $this->get('rbmark', ['url' => 'https://bookmarked.url']); + + $this->assertPageContains('value="login" />'); + + // also check that the original query is saved in the session + $this->assertEquals('https://bookmarked.url', $_SESSION['bookmark']['url']); + $this->assertEquals('rbmark', $_SESSION['bookmark']['q']); + } + + public function test_authenticated_get_request_returns_save_bookmark_form(): void { + $lc_stub = $this->getFunctionMock('Zotlabs\Module', 'local_channel'); + $lc_stub + ->expects($this->once()) + ->willReturn(42); + + $this->get('rbmark', [ + 'url' => 'https://bookmarked.url', + 'title' => 'My bookmark', + ]); + + $this->assertPageContains('<form action="rbmark" method="post"'); + $this->assertPageContains('URL of bookmark'); + $this->assertPageContains('value="https://bookmarked.url"'); + $this->assertPageContains('value="My bookmark"'); + } + + public function test_that_params_are_escaped_in_save_bookmark_form(): void { + $lc_stub = $this->getFunctionMock('Zotlabs\Module', 'local_channel'); + $lc_stub + ->expects($this->once()) + ->willReturn(42); + + $this->get('rbmark', [ + 'url' => 'https://bookmarked.url" onload="alert(/boom/)', + 'title' => 'My bookmark"><script alert(/boom/);</script>', + ]); + + $this->assertPageContains('value="https://bookmarked.url" onload="alert(/boom/)'); + $this->assertPageContains('value="My bookmark"><script alert(/boom/);</script>'); + } + + public function test_that_existing_bookmark_folders_are_listed(): void { + $lc_stub = $this->getFunctionMock('Zotlabs\Module', 'local_channel'); + $lc_stub + ->expects($this->once()) + ->willReturn(42); + + $menu_id = menu_create([ + 'menu_name' => 'My bookmarks', + 'menu_desc' => 'A collection of my bookmarks', + 'menu_flags' => MENU_BOOKMARK, + 'menu_channel_id' => 42, + ]); + + $this->get('rbmark', [ + 'url' => 'https://bookmarked.url', + 'title' => 'My bookmark', + ]); + + $this->assertPageContains( + "<option value=\"{$menu_id}\" >My bookmarks</option>" + ); + } +} diff --git a/tests/unit/Module/RpostTest.php b/tests/unit/Module/RpostTest.php new file mode 100644 index 000000000..ad94f2f06 --- /dev/null +++ b/tests/unit/Module/RpostTest.php @@ -0,0 +1,81 @@ +<?php +/** + * Tests for Rpost module. + * + * SPDX-FileCopyrightText: 2024 Hubzilla Community + * SPDX-FileContributor: Harald Eilertsen + * + * SPDX-License-Identifier: MIT + */ + +class RpostTest extends \Zotlabs\Tests\Unit\Module\TestCase { + + /** + * Basic test of a get request with no args as an authenticated user. + */ + public function test_get_with_no_args(): void { + $this->get_authenticated(); + + $this->assertPageContains('<form id="profile-jot-form"'); + $this->assertPageContains('<input type="hidden" name="profile_uid" value="42"'); + } + + /** + * Display login form if session is not authenticated. + */ + public function test_display_login_form_if_not_logged_in(): void { + $lc_mock = $this->getFunctionMock('Zotlabs\Module', 'local_channel') + ->expects($this->any()) + ->willReturn(false); + + $this->get('rpost'); + + $this->assertPageContains('<form action="https://hubzilla.test/rpost" id="main_login"'); + } + + public function test_populates_form_from_query_params(): void { + $this->get_authenticated([ + 'title' => 'This is my title', + 'body' => 'The body of the post', + 'source' => 'The temple of the Dagon', + ]); + + $this->assertPageContains('value="This is my title"'); + $this->assertPageContains('>The body of the post</textarea>'); + $this->assertPageContains('value="The temple of the Dagon"'); + } + + public function test_convert_body_from_html_to_bbcode(): void { + $this->get_authenticated([ + 'body' => "<h1>Awesome page</h1>\r\n<p>Awesome content!</p>", + 'type' => 'html', + ]); + + $this->assertPageContains(">[h1]Awesome page[/h1]\n\nAwesome content!</textarea>"); + } + + /** + * Private helper method to perform an authenticated GET request. + * + * @param array $query An associative array of query parameters. + */ + private function get_authenticated(array $query = []): void { + // Mock `local_chanel()` to emulate a valid logged in channel + $lc_mock = $this->getFunctionMock('Zotlabs\Module', 'local_channel') + ->expects($this->any()) + ->willReturn(42); + + // Set basic access controls to keep AccessList happy. + \App::$channel = [ + 'channel_id' => 42, + 'channel_location' => null, + 'channel_address' => '', + 'channel_allow_cid' => '', + 'channel_allow_gid' => '', + 'channel_deny_cid' => '', + 'channel_deny_gid' => '', + ]; + + $this->get('rpost', $query); + } +} diff --git a/tests/unit/Module/SetupTest.php b/tests/unit/Module/SetupTest.php new file mode 100644 index 000000000..3575dd477 --- /dev/null +++ b/tests/unit/Module/SetupTest.php @@ -0,0 +1,76 @@ +<?php +/** + * SPDX-FileCopyrightText: 2024 Harald Eilertsen + * SPDX-FileCopyrightText: 2024 Hubzilla Community + * + * SPDX-License-Identifier: MIT + */ + +namespace Zotlabs\Tests\Unit\Module; + +/** + * SetupModuleTest + * + * The Setup module should only be available during site installation. This is + * determined by whether there are any accounts present in the database, or + * not. + * + * This is a complex module, so expect the tests to grow as more of it will be + * covered. + */ +class SetupTest extends TestCase { + + public function test_that_setup_is_available_if_no_accounts_in_db(): void { + $this->with_no_accounts_in_db(); + $this->get('setup'); + + $this->assertEquals('setup', \App::$page['page_title']); + + // Assert that result _don't_ match "Permission denied" + $this->assertThat( + \App::$page['content'], + $this->logicalNot( + $this->matchesRegularExpression('/Permission denied/') + ) + ); + } + + public function test_that_setup_is_not_available_if_accounts_in_db(): void { + // The fixtures loaded by default add a couple of accounts. + $this->get('setup'); + + $this->assertEquals('setup', \App::$page['page_title']); + $this->assertMatchesRegularExpression('/Permission denied/', \App::$page['content']); + } + + public function test_that_setup_testrewrite_returns_ok(): void { + // We need to stub the `killme` function, as it is called directly from + // the code under test. + $this->stub_killme(); + + $output = ''; + + // Turn on output buffering, as code under test echoes + // directly to the output + ob_start(); + try { + $this->get('setup/testrewrite'); + } catch (\Zotlabs\Tests\Unit\Module\KillmeException) { + $output = ob_get_contents(); + } + + $this->assertEquals('ok', $output); + + ob_end_clean(); + } + + /** + * Delete all accounts from the database. + * + * This is currently needed because we automatically import the database + * fixtures on test start, which contains a couple of accounts already. + */ + private function with_no_accounts_in_db(): void { + q('DELETE FROM account;'); + } +} diff --git a/tests/unit/Module/TestCase.php b/tests/unit/Module/TestCase.php new file mode 100644 index 000000000..e92bc7083 --- /dev/null +++ b/tests/unit/Module/TestCase.php @@ -0,0 +1,192 @@ +<?php +/** + * This file contains the base class for module test cases. + * + * SPDX-FileCopyrightText: 2024 Hubzilla Community + * SPDX-FileContributor: Harald Eilertsen + * + * SPDX-License-Identifier: MIT + */ + +namespace Zotlabs\Tests\Unit\Module; + +use Zotlabs\Tests\Unit\UnitTestCase; +use App; + +/** + * Base class for writing module tests. + * + * This test class adds a number of helper methods to the base from + * the UnitTestCase class, useful when testing Modules (Controllers) + * that handle incoming requests. + */ +class TestCase extends UnitTestCase { + + // Import PHPMock methods into this class + use \phpmock\phpunit\PHPMock; + + /** + * Emulate a GET request. + * + * @param string $uri The URI to request. Typically this will be the module + * name, followed by any req args separated by slashes. + * @param array $query Assciative array of query args, with the parameters + * as keys. + */ + protected function get(string $uri, array $query = []): void { + $_GET['q'] = $uri; + + if (!empty($query)) { + $_GET = array_merge($_GET, $query); + } + + $_SERVER['REQUEST_METHOD'] = 'GET'; + $_SERVER['SERVER_PROTOCOL'] = 'HTTP/1.1'; + $_SERVER['QUERY_STRING'] = "q={$uri}"; + // phpcs:disable Generic.PHP.DisallowRequestSuperglobal.Found + $_REQUEST = $_GET; + // phpcs::enable + + \App::init(); + \App::$page['content'] = ''; + + $router = new \Zotlabs\Web\Router(); + $router->Dispatch(); + } + + /** + * Helper to simplify asserting contents in the rendered page. + * + * @param string $needle The expected string to find. + */ + protected function assertPageContains(string $needle): void { + $this->assertStringContainsString($needle, App::$page['content']); + } + + /** + * Stub out the `killme` function. + * + * Useful for testing modules that call this function directly. + * + * Instead of calling exit, the stub will throw a `KillmeException`, + * that can be caught by the test code to regain control after request + * processing is terminated. + * + * **Example:** + * + * public function test_something(): void { + * $this->stub_killme(); + * + * try { + * killme(); + * } catch (KillmeException $e) { + * $this->assertSomething(...); + * } + * } + * + * It's also possible to use the builting PHPUnit expecations to verify + * that the function was called. + * + * public function test_something(): void { + * $this->stub_killme(); + * $this->expectException(KillmeException::class); + * + * killme(); + * } + * + * This is useful if you only want to check that processing was terminated + * with the `killme()` function. + * + * @throws KillmeException + */ + protected function stub_killme(): void { + $killme_stub = $this->getFunctionMock('Zotlabs\Module', 'killme'); + $killme_stub + ->expects($this->once()) + ->willReturnCallback( + function () { + throw new KillmeException(); + } + ); + } + + /** + * Stub out the `goaway` function. + * + * Useful for testing modules that calls this function directly. + * + * Instead of calling `killme()`, the stub will throw a RedirectException + * with the target URL as the exception message. This allows the test code + * to regain control after request processing is terminated. + * + * **Example:** + * + * public function test_redirect(): void { + * $this->stub_goaway(); + * + * try { + * goaway('https://example.com/some_uri'); + * } catch (RedirectException $e) { + * $this->assertEquals('https://example.com/some_uri', $e->getMessage()); + * $this->assertSomethingElse(...); + * } + * } + * It's also possible to use the builting PHPUnit expecations to verify + * that the function was called. + * + * public function test_something(): void { + * $this->stub_goaway(); + * $this->expectException(RedirectException::class); + * $this->expectExceptionMessage('https://example.com/some_uri'); + * + * goaway('https://example.com/some_uri'); + * } + * + * This is useful if you only want to check that the request was redirected. + * + * @throws RedirectException + */ + protected function stub_goaway(): void { + $goaway_stub = $this->getFunctionMock('Zotlabs\Module', 'goaway'); + $goaway_stub + ->expects($this->once()) + ->willReturnCallback( + function (string $uri) { + throw new RedirectException($uri); + } + ); + } + + /** + * Shorthand function to expect a redirect to a given URL. + * + * **Example:** + * + * public function test_redirect(): void { + * $this->expectRedirectTo('https://example.com/some_uri'); + * goaway('https://example.com/some_uri'); + * } + */ + protected function expectRedirectTo(string $destination): void { + $this->stub_goaway(); + $this->expectException(RedirectException::class); + $this->expectExceptionMessage($destination); + } +} + +/** + * Exception class for killme stub + */ +class KillmeException extends \Exception {} + +/** + * Exception class for goaway stub. + * + * Takes the goaway uri as an arg, and makes it available to the catch + * site via the `getMessage()` method. + */ +class RedirectException extends \Exception { + function __construct(string $uri) { + parent::__construct($uri); + } +} diff --git a/tests/unit/Photo/PhotoGdTest.php b/tests/unit/Photo/PhotoGdTest.php index 1324043c4..7ef07864c 100644 --- a/tests/unit/Photo/PhotoGdTest.php +++ b/tests/unit/Photo/PhotoGdTest.php @@ -130,21 +130,8 @@ class PhotoGdTest extends UnitTestCase { * Tests PhotoGd->imageString() */ public function testImagestringReturnsABinaryString() { - // Create a stub for global function get_config() - // get_config('system', 'png_quality') - // get_config('system', 'jpeg_quality'); - $gc = $this->getFunctionMock('Zotlabs\Photo', 'get_config'); - $gc->expects($this->once())->willReturnCallback( - function() { - switch($this->photoGd->getType()){ - case 'image/png': - return 7; - case 'image/jpeg': - default: - return 70; - } - } - ); + // Init config with a known value for the test + \Zotlabs\Lib\Config::Set('system', 'png_quality', 7); $this->assertIsString($this->photoGd->imageString()); } diff --git a/tests/unit/UnitTestCase.php b/tests/unit/UnitTestCase.php index a4ea94b13..afc309205 100644 --- a/tests/unit/UnitTestCase.php +++ b/tests/unit/UnitTestCase.php @@ -22,8 +22,8 @@ namespace Zotlabs\Tests\Unit; +use PHPUnit\Framework\Attributes\{Before, After}; use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestResult; /* * Make sure global constants and the global App object is available to the @@ -31,49 +31,78 @@ use PHPUnit\Framework\TestResult; */ require_once __DIR__ . '/../../boot.php'; require_once 'include/dba/dba_driver.php' ; +require_once 'include/dba/dba_transaction.php'; /** - * @brief Base class for our Unit Tests. + * Base class for our Unit Tests. * - * Empty class at the moment, but you should extend this class for unit test - * cases, so we could and for sure we will need to implement basic behaviour - * for all of our unit tests. + * Base class for Hubzilla unit/integration tests. This extends the base + * TestCase class from PHPUnit by connecting to a test database, and making the + * database connection available to the code under test via the normal Hubzilla + * mechanisms, i.e the \DBA::$dba global variable. * - * @author Klaus Weidenbach + * It also automatically loads database fixtures from yaml files in the + * tests/unit/includes/dba/_files directory. And wraps each test run in it's + * own database transaction. */ class UnitTestCase extends TestCase { protected array $fixtures = array(); + protected ?\DbaTransaction $db_transacton = null; /** - * Override the PHPUnit\Framework\TestCase::run method, so we can - * wrap it in a database transaction. + * Connect to the test db, load fixtures and global config. * - * @SuppressWarnings(PHPMD.UnusedLocalVariable) + * This function is executed before every test. + * + * The transaction is rolled back in the `cleanup_test_db()` function + * that's executed after every test. */ - public function run(TestResult $result = null): TestResult { - // $myclass = get_class($this); - // logger("[*] Running test: {$myclass}::{$this->getName(true)}", LOGGER_DEBUG); - + #[Before] + protected function setup_test_db(): void { if (! \DBA::$dba) { - //logger('[*] Connecting to test db...'); $this->connect_to_test_db(); } // The $transactuion variable is needed to hold the transaction until the // function returns. - $transaction = new \DbaTransaction(\DBA::$dba); + $this->db_transaction = new \DbaTransaction(\DBA::$dba); $this->loadFixtures(); // Make sure app config is reset and loaded from fixtures \App::$config = array(); \Zotlabs\Lib\Config::Load('system'); + } - $result = parent::run($result); - - return $result; + /** + * Roll back test database to it's original state, cleaning up + * any changes from the test. + * + * This function is executes after evert tests. + */ + #[After] + protected function cleanup_test_db(): void { + // Setting the transaction to `null`, runs the destructor + // which rolls backk the transacton. + $this->db_transaction = null; } + /** + * Connect to the test database, + * + * By default it will connect to a MySQL database with the following settings: + * + * - HZ_TEST_DB_HOST: db + * - HZ_TEST_DB_PORT: default + * - HZ_TEST_DB_USER: test_user + * - HZ_TEST_DB_PASS: hubzilla + * - HZ_TEST_DB_DATABASE: hubzilla_test_db + * - HZ_TEST_DB_TYPE: mysql (can also be "postgres") + * - HZ_TEST_DB_CHARSET: UTF8 + * + * All of these settings can be overridden by the test runner by setting ENV vars + * named as above with the values you want to override. + */ protected function connect_to_test_db() : void { if ( !\DBA::$dba ) { \DBA::dba_factory( @@ -101,6 +130,14 @@ class UnitTestCase extends TestCase { } } + /** + * Return the database type from a string. + * + * @param string $type The database type, can be either mysql or postgres. + * + * @return The database type constant matching the passed in type, or DBTYPE_MYSQL + * if $type is empty or invalid. + */ private static function dbtype(string $type): int { if (trim(strtolower($type)) === 'postgres') { return DBTYPE_POSTGRES; @@ -109,6 +146,9 @@ class UnitTestCase extends TestCase { } } + /** + * Load database fixtures from the fixture path. + */ private function loadFixtures() : void { $files = glob(__DIR__ . '/includes/dba/_files/*.yml'); if ($files === false || empty($files)) { @@ -117,6 +157,21 @@ class UnitTestCase extends TestCase { array_walk($files, fn($file) => $this->loadFixture($file)); } + /** + * Load database fixtures from a specific file. + * + * The file must be a yaml file named the same as the table in the database + * it should populate. + * + * The file also need to have a root key with the same name as the table. + * Under which it contains an array of rows that should be inserted into + * the db table. + * + * @param string $file The path and filename of the fixture to load. + * The path name is relative to the current working + * directory of the process, which should normally + * be the Hubzilla root directory. + */ private function loadFixture($file) : void { $table_name = basename($file, '.yml'); $this->fixtures[$table_name] = yaml_parse_file($file)[$table_name]; diff --git a/tests/unit/Web/HttpSigTest.php b/tests/unit/Web/HttpSigTest.php index 0a22b543a..d705be4ff 100644 --- a/tests/unit/Web/HttpSigTest.php +++ b/tests/unit/Web/HttpSigTest.php @@ -46,7 +46,7 @@ class HttpSigTest extends UnitTestCase { HTTPSig::generate_digest_header($text) ); } - public function generate_digestProvider() { + public static function generate_digestProvider() { return [ 'empty body text' => [ '', @@ -84,9 +84,8 @@ class HttpSigTest extends UnitTestCase { } function testDecrypt_sigheaderUseSitePrivateKey() { - // Create a stub for global function get_config() with expectation - $t = $this->getFunctionMock('Zotlabs\Web', 'get_config'); - $t->expects($this->once())->willReturn('system.prvkey'); + // Initialize config with a known value for test + \Zotlabs\Lib\Config::Set('system', 'prvkey', 'system.prvkey'); $header = 'Header: iv="value_iv" key="value_key" alg="value_alg" data="value_data"'; $result = [ diff --git a/tests/unit/Widget/HelpindexTest.php b/tests/unit/Widget/HelpindexTest.php new file mode 100644 index 000000000..26aa34104 --- /dev/null +++ b/tests/unit/Widget/HelpindexTest.php @@ -0,0 +1,80 @@ +<?php +/** + * Tests for the Helpindex widget. + * + * SPDX-FileCopyrightText: 2024 Harald Eilertsen + * SPDX-FileCopyrightText: 2024 Hubzilla Community + * + * SPDX-License-Identifier: MIT + */ + +/** + * Test class for testing the Helpindex widget. + */ +class HelpindexTest extends \Zotlabs\Tests\Unit\Module\TestCase { + + use \phpmock\phpunit\PHPMock; + + /** + * Define the stubs to make sure they work later in the test. + * + * @see https://php-mock.github.io/php-mock-phpunit/api/class-phpmock.phpunit.PHPMock.html#_defineFunctionMock + * + * @beforeClass + */ + public static function define_stubs(): void { + self::defineFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); + self::defineFunctionMock('Zotlabs\Widget', 'file_get_contents'); + } + + public function test_loading_toc(): void { + // Stub `file_get_contents` to plant our own content. + $fgc_stub = $this->getFunctionMock('Zotlabs\Widget', 'file_get_contents'); + $fgc_stub + ->expects($this->once()) + ->with($this->equalTo('doc/en/toc.html')) + ->willReturn('toc'); + + // Stub `file_exists` to only return true for the english toc file + $fe_stub = $this->getFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); + $fe_stub + ->expects($this->any()) + ->willReturnCallback(fn (string $path) => $path === 'doc/en/toc.html' ); + + $this->render_widget(); + $this->assertOutputContains('toc'); + //$this->assertOutputContains('Help Content'); + } + + public function test_that_result_is_empty_when_toc_not_present(): void { + // Ensure `file_get_contents` is not called during the test. + $fgc_stub = $this->getFunctionMock('Zotlabs\Widget', 'file_get_contents'); + $fgc_stub->expects($this->never()); + + // Stub `file_exists` to always return false to simulate that we + // can't find the toc file. + $fe_stub = $this->getFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); + $fe_stub + ->expects($this->any()) + ->willReturn(false); + + $this->render_widget(); + } + + /** + * Initializes the app and calls the widget code. + */ + private function render_widget(): void { + $_GET['q'] = 'help/en/about/about'; + $_SERVER['REQUEST_METHOD'] = 'GET'; + + \App::init(); + + $widget = new \Zotlabs\Widget\Helpindex(); + $this->output = $widget->widget([]); + } + + private function assertOutputContains(string $needle): void { + $this->assertStringContainsString($needle, $this->output); + } +} diff --git a/tests/unit/includes/AccountTest.php b/tests/unit/includes/AccountTest.php index af5bcd3c1..3978f9d04 100644 --- a/tests/unit/includes/AccountTest.php +++ b/tests/unit/includes/AccountTest.php @@ -19,7 +19,7 @@ class AccountTest extends Zotlabs\Tests\Unit\UnitTestCase { $this->assertEquals($expected, check_account_email($email)); } - function check_account_email_provider() : array { + public static function check_account_email_provider() : array { return [ // Empty and valid emails return the same result ['', ['error' => false, 'message' => '']], diff --git a/tests/unit/includes/AuthTest.php b/tests/unit/includes/AuthTest.php new file mode 100644 index 000000000..fa9726fe8 --- /dev/null +++ b/tests/unit/includes/AuthTest.php @@ -0,0 +1,81 @@ +<?php +/** + * Tests for the authentication code used in Hubzilla. + * + * SPDX-FileCopyrightText: 2024 Hubzilla Community + * SPDX-FileContributor: Harald Eilertsen + * + * SPDX-License-Identifier: MIT + */ + +namespace Zotlabs\Tests\Unit\Includes; + +use App; +use Zotlabs\Lib\AConfig; +use Zotlabs\Tests\Unit\UnitTestCase; +use PHPUnit\Framework\Attributes\{DataProvider, RunTestsInSeparateProcesses}; + +/** + * Test class containing the test for the Hubzilla authentication code. + * + * Since the main authentication code is executed in the global scope on + * inclusion of the `includes/auth.php` file, we need to run each test in a + * separate process to make sure we can excersize the code as we need. + */ +#[RunTestsInSeparateProcesses] +class AuthTest extends UnitTestCase { + + /** + * Check that mfa status is not checked for certain modules. + * + * This causes issues with things like WebDAV and CardDAV, as there's + * currently no way for these modules to signal that a TOTP code is needed + * back to the connecting client. + */ + #[DataProvider('modules_excluded_from_mfa')] + public function test_mfa_is_not_checked_for_excluded_modules(string $module, array $args): void { + $account_id = $this->fixtures['account']['0']['account_id']; + + $_SESSION = [ + 'authenticated' => true, + 'account_id' => $account_id, + + // Trick the code to not warn that $_SESSION['uid'] is not set, + // but also not trigger the code that tries to change to the + // given channel. *Remove when code is fixed!* + 'uid' => 0, + ]; + + $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; + + App::$session = $this->create_session_stub(); + App::$module = $module; + App::$argv = $args; + App::$argc = count($args); + + // Enable multi factor authentication for this account + AConfig::Set($account_id, 'system', 'mfa_enabled', true); + + require 'include/auth.php'; + + $this->assertEquals(1, $_SESSION['authenticated']); + } + + /** + * Data provider for testing modules excluded from mfa + * @SuppressWarnings(PHPMD.UnusedPrivateMethod) + */ + public static function modules_excluded_from_mfa(): array { + return [ + ['totp_check', []], + ['cdav', []], + ['cdav', ['calendar']], + ['cdav', ['addressbook']], + ['dav', []], + ]; + } + + private function create_session_stub(): \Zotlabs\Web\Session { + return $this->createStub('Zotlabs\Web\Session'); + } +} diff --git a/tests/unit/includes/BBCodeTest.php b/tests/unit/includes/BBCodeTest.php index a8aa8ee2b..daa66bf72 100644 --- a/tests/unit/includes/BBCodeTest.php +++ b/tests/unit/includes/BBCodeTest.php @@ -101,7 +101,7 @@ class BBCodeTest extends UnitTestCase { * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) */ - private function bbcode_to_html_provider(): array { + public static function bbcode_to_html_provider(): array { return [ 'code block' => [ "[code]\ntestvar = \"this is a test\"\necho \"the message is \$testvar\"\n[/code]", @@ -134,6 +134,10 @@ class BBCodeTest extends UnitTestCase { 'list with linebreaks \r\n in text' => [ "some text\r\n[list]\r\n[*] item1\r\nsome text[*] item2\r\nsome text[/list]\r\nsome more text", 'some text<br /><ul class="listbullet"><li> item1<br />some text<li> item2<br />some text</ul>some more text' + ], + 'del tag' => [ + 'some [s]strike through[/s] text', + 'some <del>strike through</del> text' ] ]; } @@ -149,7 +153,7 @@ class BBCodeTest extends UnitTestCase { * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) */ - private function bbcode_observer_provider(): array { + public static function bbcode_observer_provider(): array { return [ 'authenticated observer' => [ '[observer=1]This should be visible[/observer][observer=0]but not this[/observer]', @@ -201,7 +205,7 @@ class BBCodeTest extends UnitTestCase { * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) */ - private function html2bbcode_provider(): array { + public static function html2bbcode_provider(): array { return [ 'paragraph over multiple lines' => [ "<p>A paragraph over\nmultiple lines\nshould be unwrapped</p>", @@ -230,6 +234,38 @@ class BBCodeTest extends UnitTestCase { 'html reshares from streams' => [ '<div><div><a href="https://example.com"><img src="https://example.com/image.jpg" alt="image/photo"></a> shared something</div>something</div>', '[url=https://example.com][img=https://example.com/image.jpg]image/photo[/img][/url] shared something' . "\n" . 'something' + ], + 'list' => [ + '<ul><li>list 1</li><li>list 2</li><li>list 3</li></ul>', + '[list][*]list 1[*]list 2[*]list 3[/list]' + ], + 'list with paragraph' => [ + '<ul><li><p>list 1</p></li><li><p>list 2</p></li><li><p>list 3</p></li></ul>', + '[list][*]list 1[*]list 2[*]list 3[/list]' + ], + 'nested list' => [ + '<ul><li>list 1</li><li>list 2</li><li>list 3</li><ul><li>list 1</li><li>list 2</li><li>list 3</li></ul></ul>', + '[list][*]list 1[*]list 2[*]list 3[list][*]list 1[*]list 2[*]list 3[/list][/list]' + ], + 'double nested list' => [ + '<ul><li>list 1</li><li>list 2</li><li>list 3</li><ul><li>list 1</li><li>list 2</li><li>list 3</li><ul><li>list 1</li><li>list 2</li><li>list 3</li></ul></ul></ul>', + '[list][*]list 1[*]list 2[*]list 3[list][*]list 1[*]list 2[*]list 3[list][*]list 1[*]list 2[*]list 3[/list][/list][/list]' + ], + 'list without closing li' => [ + '<ul><li>list 1<li>list 2<li>list 3</ul>', + '[list][*]list 1[*]list 2[*]list 3[/list]' + ], + 'nested list without closing li' => [ + '<ul><li>list 1<li>list 2<li>list 3<ul><li>list 1<li>list 2<li>list 3</ul></ul>', + '[list][*]list 1[*]list 2[*]list 3[list][*]list 1[*]list 2[*]list 3[/list][/list]' + ], + 'double nested list without closing li' => [ + '<ul><li>list 1<li>list 2<li>list 3<ul><li>list 1<li>list 2<li>list 3<ul><li>list 1<li>list 2<li>list 3</ul></ul></ul>', + '[list][*]list 1[*]list 2[*]list 3[list][*]list 1[*]list 2[*]list 3[list][*]list 1[*]list 2[*]list 3[/list][/list][/list]' + ], + 'del tag' => [ + 'some <del>strike through</del> text', + 'some [s]strike through[/s] text' ] ]; } diff --git a/tests/unit/includes/FeedutilsTest.php b/tests/unit/includes/FeedutilsTest.php index bda0bf425..05bff06a3 100644 --- a/tests/unit/includes/FeedutilsTest.php +++ b/tests/unit/includes/FeedutilsTest.php @@ -47,7 +47,7 @@ class FeedutilsTest extends UnitTestCase { public function test_atom_author() { $this->assertEquals('', atom_author('', 'nick', 'name', 'uri', 72, 72, 'png', 'photourl')); - $a = '<tag> + $expected = '<tag> <id>uri</id> <name>nick</name> <uri>uri</uri> @@ -57,7 +57,10 @@ class FeedutilsTest extends UnitTestCase { <poco:displayName>name</poco:displayName> </tag>'; - $this->assertXmlStringEqualsXmlString($a, atom_author('tag', 'nick', 'name', 'uri', 72, 72, 'png', 'http://photourl')); + $this->assertAtomAuthorMatches( + $expected, + atom_author('tag', 'nick', 'name', 'uri', 72, 72, 'png', 'http://photourl') + ); } /** @@ -86,6 +89,63 @@ class FeedutilsTest extends UnitTestCase { <poco:displayName>Chan</poco:displayName> </tag>'; - $this->assertXmlStringEqualsXmlString($a, atom_render_author('tag', $xchan)); + $this->assertAtomAuthorMatches($a, atom_render_author('tag', $xchan)); + } + + /** + * Helper method to assert that the generated author tag matches + * what we expect. + * + * Calling `assertXmlStringEqualsXmlString` directly on the fragments + * does not work anymore in PHPUnit >= 10.x, as t will throw an XMLException + * because of undefined namespaces. + * + * To overcome that we wrap the generated tags in the proper template, + * and compare the fully generated XML from the template instead. + * + * @param string $expected The expected author XML fragment. + * @param string $actual The actually generated authr XML fragment. + */ + private function assertAtomAuthorMatches(string $expected, string $actual): void { + + // Make sure the template engine is initialized before we try to render + // the template. + // + // This may be problematic, as it will compile the template into the same + // directory as the site. Assuming that nobody is crazy enough to run the + // test suite in a production server, it should probably be fine for now. + $smarty = new \Zotlabs\Render\SmartyTemplate(); + \App::register_template_engine(get_class($smarty)); + + $feed_template = get_markup_template('atom_feed.tpl'); + $expected_xml = replace_macros($feed_template, [ + '$version' => 42, + '$generator' => 'Hubzilla test', + '$generator_uri' => 'https://hubzilla.test', + '$feed_id' => 'test_channel', + '$feed_title' => 'Test channel', + '$feed_updated' => 'Sometime', + '$author' => $expected, + '$owner' => $expected, + '$profile_page' => xmlify('https://hubzilla.test/channel/test'), + ]); + + $expected_xml .= '</feed>'; + + $actual_xml = replace_macros($feed_template, [ + '$version' => 42, + '$generator' => 'Hubzilla test', + '$generator_uri' => 'https://hubzilla.test', + '$feed_id' => 'test_channel', + '$feed_title' => 'Test channel', + '$feed_updated' => 'Sometime', + '$author' => $actual, + '$owner' => $actual, + '$profile_page' => xmlify('https://hubzilla.test/channel/test'), + ]); + + $actual_xml .= '</feed>'; + + $this->assertXmlStringEqualsXmlString($expected_xml, $actual_xml); } } diff --git a/tests/unit/includes/LanguageTest.php b/tests/unit/includes/LanguageTest.php index 9525c783d..8f62e71e2 100644 --- a/tests/unit/includes/LanguageTest.php +++ b/tests/unit/includes/LanguageTest.php @@ -33,54 +33,6 @@ use Text_LanguageDetect; * @author Klaus Weidenbach */ class LanguageTest extends UnitTestCase { - //use PHPMock; - - /** - * @dataProvider languageExamplesProvider - * @coversNothing - */ - public function testDetectLanguage($text, $langCode, $confidence) { - - // php-mock can not mock global functions which is called by a global function. - // If the calling function is in a namespace it would work. - //$gc = $this->getFunctionMock(__NAMESPACE__, 'get_config'); - //$gc->expects($this->once())->willReturn(10) - //$cg = $this->getFunctionMock('Zotlabs\Lib\Config', 'Get'); - //$cg->expects($this->once())->willReturn(10); - //$this->assertEquals($langCode, detect_language($text)); - - - // Can not unit test detect_language(), therefore test the used library - // only for now to find regressions on library updates. - $l = new Text_LanguageDetect; - // return 2-letter ISO 639-1 (en) language code - $l->setNameMode(2); - $lng = $l->detectConfidence($text); - - $this->assertEquals($langCode, $lng['language']); - $this->assertEquals($confidence, round($lng['confidence'], 6)); - } - - public function languageExamplesProvider() { - return [ - 'English' => [ - 'English is a West Germanic language that was first spoken in early medieval England and is now a global lingua franca.[4][5] Named after the Angles, one of the Germanic tribes that migrated to England, it ultimately derives its name from the Anglia (Angeln) peninsula in the Baltic Sea. It is closely related to the Frisian languages, but its vocabulary has been significantly influenced by other Germanic languages, particularly Norse (a North Germanic language), as well as by Latin and Romance languages, especially French.', - 'en', - 0.078422 - ], - 'German' => [ - 'Deutschland ist ein Bundesstaat in Mitteleuropa. Er besteht aus 16 Ländern und ist als freiheitlich-demokratischer und sozialer Rechtsstaat verfasst. Die Bundesrepublik Deutschland stellt die jüngste Ausprägung des deutschen Nationalstaates dar. Mit rund 82,8 Millionen Einwohnern (31. Dezember 2016) zählt Deutschland zu den dicht besiedelten Flächenstaaten.', - 'de', - 0.134339 - ], - 'Norwegian' => [ - 'Kongeriket Norge er et nordisk, europeisk land og en selvstendig stat vest på Den skandinaviske halvøy. Landet er langt og smalt, og kysten strekker seg langs Nord-Atlanteren, hvor også Norges kjente fjorder befinner seg. Totalt dekker det relativt tynt befolkede landet 385 000 kvadratkilometer med litt over fem millioner innbyggere (2016).', - 'no', - 0.007076 - ] - ]; - } - /** * @covers ::get_language_name @@ -94,7 +46,7 @@ class LanguageTest extends UnitTestCase { } } - public function getLanguageNameProvider() { + public static function getLanguageNameProvider() { return [ 'empty language code' => [ '', diff --git a/tests/unit/includes/MarkdownTest.php b/tests/unit/includes/MarkdownTest.php index 960c15139..310130bf1 100644 --- a/tests/unit/includes/MarkdownTest.php +++ b/tests/unit/includes/MarkdownTest.php @@ -39,7 +39,7 @@ class MarkdownTest extends UnitTestCase { $this->assertEquals($expected, markdown_to_bb($src)); } - private function markdown_to_bbcode_provider(): array { + public static function markdown_to_bbcode_provider(): array { return [ 'empty text' => [ '', @@ -104,7 +104,7 @@ class MarkdownTest extends UnitTestCase { $this->assertEquals($markdown, html2markdown($html)); } - public function html2markdownProvider(): array { + public static function html2markdownProvider(): array { return [ 'empty text' => [ '', diff --git a/tests/unit/includes/NetworkTest.php b/tests/unit/includes/NetworkTest.php index 9fb00e9d3..a41075f25 100644 --- a/tests/unit/includes/NetworkTest.php +++ b/tests/unit/includes/NetworkTest.php @@ -7,12 +7,6 @@ class NetworkTest extends Zotlabs\Tests\Unit\UnitTestCase { - public function setUp() : void { - parent::setUp(); - - \App::set_baseurl("https://mytest.org"); - } - /** * @dataProvider localUrlTestProvider */ @@ -20,10 +14,10 @@ class NetworkTest extends Zotlabs\Tests\Unit\UnitTestCase { $this->assertEquals($expected, is_local_url($url)); } - public function localUrlTestProvider() : array { + public static function localUrlTestProvider() : array { return [ [ '/some/path', true ], - [ 'https://mytest.org/some/path', true ], + [ 'https://hubzilla.test/some/path', true ], [ 'https://other.site/some/path', false ], ]; } @@ -47,7 +41,7 @@ class NetworkTest extends Zotlabs\Tests\Unit\UnitTestCase { $this->assertTrue(validate_email($email)); } - function validate_email_provider() : array { + public static function validate_email_provider() : array { return [ // First some invalid email addresses ['', false], diff --git a/tests/unit/includes/TextTest.php b/tests/unit/includes/TextTest.php index b76b15dcf..1e80d71d8 100644 --- a/tests/unit/includes/TextTest.php +++ b/tests/unit/includes/TextTest.php @@ -85,7 +85,7 @@ empty line above'; public function testNotags($string, $expected) { $this->assertEquals($expected, notags($string)); } - public function notagsProvider() { + public static function notagsProvider() { return [ 'empty string' => ['', ''], 'simple tag' => ['<value>', '[value]'], @@ -102,7 +102,7 @@ empty line above'; sanitise_acl($string); $this->assertEquals($expected, $string); } - public function sanitise_aclProvider() { + public static function sanitise_aclProvider() { return [ 'text' => ['value', '<value>'], 'text with angle bracket' => ['<value>', '<[value]>'], diff --git a/tests/unit/includes/dba/TransactionTest.php b/tests/unit/includes/dba/TransactionTest.php index 99e3f459d..0b986c6aa 100644 --- a/tests/unit/includes/dba/TransactionTest.php +++ b/tests/unit/includes/dba/TransactionTest.php @@ -24,8 +24,8 @@ require_once 'tests/fakes/fake_dba.php'; require_once 'include/dba/dba_transaction.php'; -use \PHPUnit\Framework\TestCase; -use \Zotlabs\Tests\Fakes\FakeDba; +use PHPUnit\Framework\TestCase; +use Zotlabs\Tests\Fakes\FakeDba; /** * Test database transactions. @@ -39,7 +39,7 @@ class DbaTransactionTest extends TestCase { private $pdo_stub; public function setUp(): void { - $this->pdo_stub = $this->createStub(PDO::class); + $this->pdo_stub = $this->createMock(PDO::class); } diff --git a/tests/unit/includes/dba/_files/account.yml b/tests/unit/includes/dba/_files/account.yml index 344bdb799..88e59056e 100644 --- a/tests/unit/includes/dba/_files/account.yml +++ b/tests/unit/includes/dba/_files/account.yml @@ -3,7 +3,9 @@ account: account_id: 42 account_email: "hubzilla@example.com" account_language: "no" + account_flags: 0 - account_id: 43 account_email: "hubzilla@example.org" account_language: "de" + account_flags: 1 diff --git a/tests/unit/includes/dba/_files/config.yml b/tests/unit/includes/dba/_files/config.yml index e93486857..ac3c8acb0 100644 --- a/tests/unit/includes/dba/_files/config.yml +++ b/tests/unit/includes/dba/_files/config.yml @@ -2,6 +2,10 @@ config: - cat: system + k: baseurl + v: https://hubzilla.test + - + cat: system k: do_not_check_dns v: true - diff --git a/util/addons b/util/addons index 7bd70984e..f700dfcf7 100755 --- a/util/addons +++ b/util/addons @@ -19,7 +19,9 @@ require_once('include/cli_startup.php'); cli_startup(); - $plugs = get_config('system', 'addon'); +use Zotlabs\Lib\Config; + + $plugs = Config::Get('system', 'addon'); $plugins_arr = array(); if($plugs) @@ -42,7 +44,7 @@ cli_startup(); if ($idz !== false) { unset(App::$plugins[$idz]); uninstall_plugin($id); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); } } $info['disabled'] = 1-intval($x); @@ -65,7 +67,7 @@ if($argc == 2 && $argv[1] === 'list') { echo $p[0] . "\n"; } } - } + } killme(); } @@ -89,7 +91,7 @@ if($argc == 3 && $argv[1] === 'list' && $argv[2] === 'all') { foreach($plugins as $p) { echo $p[0] . (($p[1]) ? $p[1] : (($p[2]['disabled']) ? '!' : '')) . "\n"; } - } + } killme(); } @@ -107,12 +109,12 @@ if($argc == 3 && $argv[1] === 'install') { else { App::$plugins[] = $p[0]; install_plugin($p[0]); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); echo $p[0] . ' installed.' . "\n"; } } } - } + } killme(); } @@ -136,12 +138,12 @@ if($argc == 3 && $argv[1] === 'uninstall') { if ($idx !== false) unset(App::$plugins[$idx]); uninstall_plugin($p[0]); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); echo $p[0] . ' uninstalled.' . "\n"; } } } - } + } // force uninstall of addon which no longer exists @@ -150,7 +152,7 @@ if($argc == 3 && $argv[1] === 'uninstall') { if ($idx !== false) unset(App::$plugins[$idx]); uninstall_plugin($argv[2]); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); echo $argv[2] . ' uninstalled.' . "\n"; } diff --git a/util/config b/util/config index cfe4500b5..c0f51b3fb 100755 --- a/util/config +++ b/util/config @@ -12,13 +12,14 @@ require_once('include/cli_startup.php'); cli_startup(); +use Zotlabs\Lib\Config; $helpArgs = getopt('h', array('help')); if (count($helpArgs) === 1) { echo <<<'EndOfOutput' Gets, sets, or lists site-wide configuration settings. -Usage: util/config +Usage: util/config util/config <family> util/config <family> <key> util/config <family> <key> <value> @@ -36,8 +37,8 @@ Usage: util/config Set config entry for specified family and key to value and display result Notes: - Setting config entries which are manually set in .htconfig.php may result - in conflict between database settings and the manual startup settings. + Setting config entries which are manually set in .htconfig.php may result + in conflict between database settings and the manual startup settings. For channel-specific configuration settings, use util/pconfig @@ -55,16 +56,16 @@ if($argc > 1 && strpos($argv[1],'.')) { } if($argc > 3) { - set_config($argv[1],$argv[2],$argv[3]); - echo "config[{$argv[1]}][{$argv[2]}] = " . printable_config(get_config($argv[1],$argv[2])) . "\n"; + Config::Set($argv[1],$argv[2],$argv[3]); + echo "config[{$argv[1]}][{$argv[2]}] = " . printable_config(Config::Get($argv[1],$argv[2])) . "\n"; } if($argc == 3) { - echo "config[{$argv[1]}][{$argv[2]}] = " . printable_config(get_config($argv[1],$argv[2])) . "\n"; + echo "config[{$argv[1]}][{$argv[2]}] = " . printable_config(Config::Get($argv[1],$argv[2])) . "\n"; } if($argc == 2) { - load_config($argv[1]); + Config::Load($argv[1]); foreach(App::$config[$argv[1]] as $k => $x) { echo "config[{$argv[1]}][{$k}] = " . $x . "\n"; } @@ -89,4 +90,4 @@ function printable_config($x) { } else return $x; -}
\ No newline at end of file +} diff --git a/util/db_update.php b/util/db_update.php index 8fc7c7616..d74dc6ca3 100755 --- a/util/db_update.php +++ b/util/db_update.php @@ -9,7 +9,9 @@ require_once('boot.php'); require_once('include/cli_startup.php'); cli_startup(); -$build = get_config('system','db_version'); +use Zotlabs\Lib\Config; + +$build = Config::Get('system','db_version'); echo "Old DB VERSION: " . $build . "\n"; echo "New DB VERSION: " . DB_UPDATE_VERSION . "\n"; diff --git a/util/hmessages.po b/util/hmessages.po index 6ffa2e7f8..4e9ac503d 100644 --- a/util/hmessages.po +++ b/util/hmessages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 9.0RC\n" +"Project-Id-Version: 9.2RC1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-15 18:45+0000\n" +"POT-Creation-Date: 2024-06-27 07:40+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -21,12 +21,12 @@ msgstr "" msgid "Source channel not found." msgstr "" -#: ../../view/theme/redbasic/php/config.php:18 ../../include/text.php:3514 +#: ../../view/theme/redbasic/php/config.php:18 ../../include/text.php:3520 #: ../../addon/cart/submodules/orderoptions.php:335 #: ../../addon/cart/submodules/orderoptions.php:359 #: ../../addon/cart/submodules/orderoptions.php:435 #: ../../addon/cart/submodules/orderoptions.php:459 -#: ../../Zotlabs/Module/Admin/Site.php:231 +#: ../../Zotlabs/Module/Admin/Site.php:232 msgid "Default" msgstr "" @@ -36,9 +36,8 @@ msgid "Focus (Hubzilla default)" msgstr "" #: ../../view/theme/redbasic/php/config.php:188 ../../include/js_strings.php:23 -#: ../../addon/irc/irc.php:45 ../../addon/smileybutton/Mod_Smileybutton.php:53 -#: ../../addon/socialauth/Mod_SocialAuth.php:341 -#: ../../addon/hubwall/hubwall.php:95 +#: ../../addon/irc/irc.php:45 ../../addon/socialauth/Mod_SocialAuth.php:341 +#: ../../addon/hubwall/hubwall.php:96 #: ../../addon/openclipatar/openclipatar.php:54 #: ../../addon/hzfiles/hzfiles.php:86 ../../addon/piwik/piwik.php:95 #: ../../addon/redphotos/redphotos.php:136 @@ -79,7 +78,7 @@ msgstr "" #: ../../addon/rtof/Mod_Rtof.php:70 ../../addon/nofed/Mod_Nofed.php:51 #: ../../addon/photocache/Mod_Photocache.php:63 #: ../../addon/likebanner/likebanner.php:57 -#: ../../Zotlabs/Lib/ThreadItem.php:862 ../../Zotlabs/Storage/Browser.php:385 +#: ../../Zotlabs/Lib/ThreadItem.php:862 ../../Zotlabs/Storage/Browser.php:386 #: ../../Zotlabs/Module/Oauth.php:109 ../../Zotlabs/Module/Import_items.php:125 #: ../../Zotlabs/Module/Thing.php:357 ../../Zotlabs/Module/Thing.php:409 #: ../../Zotlabs/Module/Tokens.php:294 ../../Zotlabs/Module/Pdledit.php:137 @@ -91,44 +90,44 @@ msgstr "" #: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Defperms.php:262 #: ../../Zotlabs/Module/Locs.php:125 #: ../../Zotlabs/Module/Admin/Accounts.php:309 -#: ../../Zotlabs/Module/Admin/Themes.php:173 -#: ../../Zotlabs/Module/Admin/Addons.php:445 +#: ../../Zotlabs/Module/Admin/Themes.php:174 +#: ../../Zotlabs/Module/Admin/Addons.php:446 #: ../../Zotlabs/Module/Admin/Features.php:66 -#: ../../Zotlabs/Module/Admin/Profs.php:178 -#: ../../Zotlabs/Module/Admin/Channels.php:147 +#: ../../Zotlabs/Module/Admin/Profs.php:179 +#: ../../Zotlabs/Module/Admin/Channels.php:169 #: ../../Zotlabs/Module/Admin/Account_edit.php:73 -#: ../../Zotlabs/Module/Admin/Logs.php:84 -#: ../../Zotlabs/Module/Admin/Site.php:401 -#: ../../Zotlabs/Module/Admin/Security.php:129 +#: ../../Zotlabs/Module/Admin/Logs.php:85 +#: ../../Zotlabs/Module/Admin/Site.php:402 +#: ../../Zotlabs/Module/Admin/Security.php:130 #: ../../Zotlabs/Module/Affinity.php:84 ../../Zotlabs/Module/Permcats.php:257 -#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Group.php:150 -#: ../../Zotlabs/Module/Group.php:159 ../../Zotlabs/Module/Invite.php:563 +#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Group.php:151 +#: ../../Zotlabs/Module/Group.php:160 ../../Zotlabs/Module/Invite.php:564 #: ../../Zotlabs/Module/Mitem.php:259 ../../Zotlabs/Module/Photos.php:1056 #: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1208 #: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:160 -#: ../../Zotlabs/Module/Profiles.php:735 ../../Zotlabs/Module/Chat.php:208 -#: ../../Zotlabs/Module/Chat.php:247 ../../Zotlabs/Module/Regate.php:407 -#: ../../Zotlabs/Module/Setup.php:316 ../../Zotlabs/Module/Setup.php:356 +#: ../../Zotlabs/Module/Profiles.php:738 ../../Zotlabs/Module/Chat.php:208 +#: ../../Zotlabs/Module/Chat.php:247 ../../Zotlabs/Module/Regate.php:408 +#: ../../Zotlabs/Module/Setup.php:319 ../../Zotlabs/Module/Setup.php:359 #: ../../Zotlabs/Module/Editpost.php:88 ../../Zotlabs/Module/Oauth2.php:114 -#: ../../Zotlabs/Module/Settings/Display.php:187 +#: ../../Zotlabs/Module/Settings/Display.php:188 #: ../../Zotlabs/Module/Settings/Network.php:62 #: ../../Zotlabs/Module/Settings/Channel_home.php:91 -#: ../../Zotlabs/Module/Settings/Account.php:107 +#: ../../Zotlabs/Module/Settings/Account.php:109 #: ../../Zotlabs/Module/Settings/Editor.php:42 #: ../../Zotlabs/Module/Settings/Features.php:48 #: ../../Zotlabs/Module/Settings/Directory.php:42 #: ../../Zotlabs/Module/Settings/Manage.php:43 -#: ../../Zotlabs/Module/Settings/Privacy.php:122 +#: ../../Zotlabs/Module/Settings/Privacy.php:123 #: ../../Zotlabs/Module/Settings/Events.php:42 #: ../../Zotlabs/Module/Settings/Photos.php:42 #: ../../Zotlabs/Module/Settings/Conversation.php:49 -#: ../../Zotlabs/Module/Settings/Channel.php:229 +#: ../../Zotlabs/Module/Settings/Channel.php:230 #: ../../Zotlabs/Module/Settings/Profiles.php:52 #: ../../Zotlabs/Module/Settings/Connections.php:42 #: ../../Zotlabs/Module/Settings/Calendar.php:42 #: ../../Zotlabs/Module/Settings/Multifactor.php:85 -#: ../../Zotlabs/Module/Email_validation.php:40 -#: ../../Zotlabs/Module/Import.php:611 +#: ../../Zotlabs/Module/Email_validation.php:41 +#: ../../Zotlabs/Module/Import.php:616 msgid "Submit" msgstr "" @@ -184,8 +183,7 @@ msgstr "" #: ../../view/theme/redbasic/php/config.php:202 #: ../../view/theme/redbasic/php/config.php:203 #: ../../view/theme/redbasic/php/config.php:215 -#: ../../include/conversation.php:1265 -#: ../../addon/smileybutton/Mod_Smileybutton.php:42 +#: ../../include/conversation.php:1267 #: ../../addon/socialauth/Mod_SocialAuth.php:218 #: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/redred/Mod_Redred.php:61 #: ../../addon/libertree/Mod_Libertree.php:57 @@ -225,39 +223,39 @@ msgstr "" #: ../../addon/content_import/Mod_content_import.php:135 #: ../../addon/content_import/Mod_content_import.php:136 #: ../../addon/rtof/Mod_Rtof.php:47 ../../addon/nofed/Mod_Nofed.php:40 -#: ../../boot.php:1751 ../../Zotlabs/Lib/Libzotdir.php:165 -#: ../../Zotlabs/Lib/Libzotdir.php:166 ../../Zotlabs/Lib/Libzotdir.php:168 -#: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:310 -#: ../../Zotlabs/Storage/Browser.php:311 ../../Zotlabs/Storage/Browser.php:392 -#: ../../Zotlabs/Storage/Browser.php:394 ../../Zotlabs/Storage/Browser.php:558 +#: ../../boot.php:1765 ../../Zotlabs/Lib/Libzotdir.php:166 +#: ../../Zotlabs/Lib/Libzotdir.php:167 ../../Zotlabs/Lib/Libzotdir.php:169 +#: ../../Zotlabs/Storage/Browser.php:310 ../../Zotlabs/Storage/Browser.php:311 +#: ../../Zotlabs/Storage/Browser.php:312 ../../Zotlabs/Storage/Browser.php:393 +#: ../../Zotlabs/Storage/Browser.php:395 ../../Zotlabs/Storage/Browser.php:559 #: ../../Zotlabs/Module/Filestorage.php:203 #: ../../Zotlabs/Module/Filestorage.php:211 #: ../../Zotlabs/Module/Contactedit.php:270 #: ../../Zotlabs/Module/Contactedit.php:315 -#: ../../Zotlabs/Module/Register.php:512 ../../Zotlabs/Module/Connedit.php:622 -#: ../../Zotlabs/Module/Defperms.php:195 ../../Zotlabs/Module/Api.php:99 +#: ../../Zotlabs/Module/Register.php:515 ../../Zotlabs/Module/Connedit.php:622 +#: ../../Zotlabs/Module/Defperms.php:195 ../../Zotlabs/Module/Api.php:101 #: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 -#: ../../Zotlabs/Module/Admin/Site.php:305 -#: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:137 -#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:147 -#: ../../Zotlabs/Module/Group.php:249 ../../Zotlabs/Module/Group.php:301 -#: ../../Zotlabs/Module/Group.php:302 ../../Zotlabs/Module/Mitem.php:176 +#: ../../Zotlabs/Module/Admin/Site.php:306 +#: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:138 +#: ../../Zotlabs/Module/Group.php:139 ../../Zotlabs/Module/Group.php:148 +#: ../../Zotlabs/Module/Group.php:250 ../../Zotlabs/Module/Group.php:302 +#: ../../Zotlabs/Module/Group.php:303 ../../Zotlabs/Module/Mitem.php:176 #: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 #: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Photos.php:666 #: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:157 -#: ../../Zotlabs/Module/Profiles.php:671 ../../Zotlabs/Module/Profiles.php:681 -#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:693 -#: ../../Zotlabs/Module/Settings/Display.php:86 -#: ../../Zotlabs/Module/Settings/Privacy.php:132 +#: ../../Zotlabs/Module/Profiles.php:674 ../../Zotlabs/Module/Profiles.php:684 +#: ../../Zotlabs/Module/Profiles.php:692 ../../Zotlabs/Module/Profiles.php:696 +#: ../../Zotlabs/Module/Settings/Display.php:87 #: ../../Zotlabs/Module/Settings/Privacy.php:133 #: ../../Zotlabs/Module/Settings/Privacy.php:134 #: ../../Zotlabs/Module/Settings/Privacy.php:135 #: ../../Zotlabs/Module/Settings/Privacy.php:136 #: ../../Zotlabs/Module/Settings/Privacy.php:137 -#: ../../Zotlabs/Module/Settings/Channel.php:224 +#: ../../Zotlabs/Module/Settings/Privacy.php:138 +#: ../../Zotlabs/Module/Settings/Channel.php:225 #: ../../Zotlabs/Module/Settings/Multifactor.php:82 -#: ../../Zotlabs/Module/Import.php:600 ../../Zotlabs/Module/Import.php:604 -#: ../../Zotlabs/Module/Import.php:605 +#: ../../Zotlabs/Module/Import.php:605 ../../Zotlabs/Module/Import.php:609 +#: ../../Zotlabs/Module/Import.php:610 msgid "No" msgstr "" @@ -265,8 +263,7 @@ msgstr "" #: ../../view/theme/redbasic/php/config.php:202 #: ../../view/theme/redbasic/php/config.php:203 #: ../../view/theme/redbasic/php/config.php:215 -#: ../../include/conversation.php:1265 -#: ../../addon/smileybutton/Mod_Smileybutton.php:42 +#: ../../include/conversation.php:1267 #: ../../addon/socialauth/Mod_SocialAuth.php:218 #: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/redred/Mod_Redred.php:61 #: ../../addon/libertree/Mod_Libertree.php:57 @@ -306,37 +303,37 @@ msgstr "" #: ../../addon/content_import/Mod_content_import.php:135 #: ../../addon/content_import/Mod_content_import.php:136 #: ../../addon/rtof/Mod_Rtof.php:47 ../../addon/nofed/Mod_Nofed.php:40 -#: ../../boot.php:1751 ../../Zotlabs/Lib/Libzotdir.php:165 -#: ../../Zotlabs/Lib/Libzotdir.php:166 ../../Zotlabs/Lib/Libzotdir.php:168 -#: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:310 -#: ../../Zotlabs/Storage/Browser.php:311 ../../Zotlabs/Storage/Browser.php:392 -#: ../../Zotlabs/Storage/Browser.php:394 ../../Zotlabs/Storage/Browser.php:558 +#: ../../boot.php:1765 ../../Zotlabs/Lib/Libzotdir.php:166 +#: ../../Zotlabs/Lib/Libzotdir.php:167 ../../Zotlabs/Lib/Libzotdir.php:169 +#: ../../Zotlabs/Storage/Browser.php:310 ../../Zotlabs/Storage/Browser.php:311 +#: ../../Zotlabs/Storage/Browser.php:312 ../../Zotlabs/Storage/Browser.php:393 +#: ../../Zotlabs/Storage/Browser.php:395 ../../Zotlabs/Storage/Browser.php:559 #: ../../Zotlabs/Module/Filestorage.php:203 #: ../../Zotlabs/Module/Filestorage.php:211 #: ../../Zotlabs/Module/Contactedit.php:270 -#: ../../Zotlabs/Module/Register.php:512 ../../Zotlabs/Module/Defperms.php:195 -#: ../../Zotlabs/Module/Api.php:98 ../../Zotlabs/Module/Menu.php:163 -#: ../../Zotlabs/Module/Menu.php:222 ../../Zotlabs/Module/Admin/Site.php:307 -#: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:137 -#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:147 -#: ../../Zotlabs/Module/Group.php:249 ../../Zotlabs/Module/Group.php:301 -#: ../../Zotlabs/Module/Group.php:302 ../../Zotlabs/Module/Mitem.php:176 +#: ../../Zotlabs/Module/Register.php:515 ../../Zotlabs/Module/Defperms.php:195 +#: ../../Zotlabs/Module/Api.php:100 ../../Zotlabs/Module/Menu.php:163 +#: ../../Zotlabs/Module/Menu.php:222 ../../Zotlabs/Module/Admin/Site.php:308 +#: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:138 +#: ../../Zotlabs/Module/Group.php:139 ../../Zotlabs/Module/Group.php:148 +#: ../../Zotlabs/Module/Group.php:250 ../../Zotlabs/Module/Group.php:302 +#: ../../Zotlabs/Module/Group.php:303 ../../Zotlabs/Module/Mitem.php:176 #: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 #: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Photos.php:666 #: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:157 -#: ../../Zotlabs/Module/Profiles.php:671 ../../Zotlabs/Module/Profiles.php:681 -#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:693 -#: ../../Zotlabs/Module/Settings/Display.php:86 -#: ../../Zotlabs/Module/Settings/Privacy.php:132 +#: ../../Zotlabs/Module/Profiles.php:674 ../../Zotlabs/Module/Profiles.php:684 +#: ../../Zotlabs/Module/Profiles.php:692 ../../Zotlabs/Module/Profiles.php:696 +#: ../../Zotlabs/Module/Settings/Display.php:87 #: ../../Zotlabs/Module/Settings/Privacy.php:133 #: ../../Zotlabs/Module/Settings/Privacy.php:134 #: ../../Zotlabs/Module/Settings/Privacy.php:135 #: ../../Zotlabs/Module/Settings/Privacy.php:136 #: ../../Zotlabs/Module/Settings/Privacy.php:137 -#: ../../Zotlabs/Module/Settings/Channel.php:224 +#: ../../Zotlabs/Module/Settings/Privacy.php:138 +#: ../../Zotlabs/Module/Settings/Channel.php:225 #: ../../Zotlabs/Module/Settings/Multifactor.php:82 -#: ../../Zotlabs/Module/Import.php:600 ../../Zotlabs/Module/Import.php:604 -#: ../../Zotlabs/Module/Import.php:605 +#: ../../Zotlabs/Module/Import.php:605 ../../Zotlabs/Module/Import.php:609 +#: ../../Zotlabs/Module/Import.php:610 msgid "Yes" msgstr "" @@ -427,23 +424,23 @@ msgstr "" msgid "This is the home page of %s." msgstr "" -#: ../../include/auth.php:197 +#: ../../include/auth.php:232 msgid "Delegation session ended." msgstr "" -#: ../../include/auth.php:201 +#: ../../include/auth.php:236 msgid "Logged out." msgstr "" -#: ../../include/auth.php:308 +#: ../../include/auth.php:342 msgid "Email validation is incomplete. Please check your email." msgstr "" -#: ../../include/auth.php:324 +#: ../../include/auth.php:358 msgid "Failed authentication" msgstr "" -#: ../../include/auth.php:334 ../../addon/openid/Mod_Openid.php:189 +#: ../../include/auth.php:368 ../../addon/openid/Mod_Openid.php:189 msgid "Login failed." msgstr "" @@ -451,207 +448,207 @@ msgstr "" msgid "View PDF" msgstr "" -#: ../../include/oembed.php:391 +#: ../../include/oembed.php:390 msgid " by " msgstr "" -#: ../../include/oembed.php:392 +#: ../../include/oembed.php:391 msgid " on " msgstr "" -#: ../../include/oembed.php:425 +#: ../../include/oembed.php:424 msgid "Embedded content" msgstr "" -#: ../../include/oembed.php:434 +#: ../../include/oembed.php:433 msgid "Embedding disabled" msgstr "" -#: ../../include/event.php:34 ../../include/event.php:132 +#: ../../include/event.php:35 ../../include/event.php:133 msgid "l F d, Y \\@ g:i A" msgstr "" -#: ../../include/event.php:42 +#: ../../include/event.php:43 msgid "Starts:" msgstr "" -#: ../../include/event.php:52 +#: ../../include/event.php:53 msgid "Finishes:" msgstr "" -#: ../../include/event.php:66 ../../include/event.php:157 -#: ../../include/channel.php:1639 ../../Zotlabs/Module/Directory.php:354 +#: ../../include/event.php:67 ../../include/event.php:158 +#: ../../include/channel.php:1640 ../../Zotlabs/Module/Directory.php:354 msgid "Location:" msgstr "" -#: ../../include/event.php:132 +#: ../../include/event.php:133 msgid "l F d, Y" msgstr "" -#: ../../include/event.php:136 +#: ../../include/event.php:137 msgid "Start:" msgstr "" -#: ../../include/event.php:140 +#: ../../include/event.php:141 msgid "End:" msgstr "" -#: ../../include/event.php:145 ../../addon/openid/MysqlProvider.php:67 +#: ../../include/event.php:146 ../../addon/openid/MysqlProvider.php:67 msgid "Timezone" msgstr "" -#: ../../include/event.php:1245 +#: ../../include/event.php:1246 msgid "This event has been added to your calendar." msgstr "" -#: ../../include/event.php:1399 ../../include/conversation.php:151 -#: ../../include/text.php:2355 ../../Zotlabs/Module/Tagger.php:75 +#: ../../include/event.php:1400 ../../include/conversation.php:152 +#: ../../include/text.php:2361 ../../Zotlabs/Module/Tagger.php:75 #: ../../Zotlabs/Module/Like.php:450 #: ../../Zotlabs/Module/Channel_calendar.php:221 msgid "event" msgstr "" -#: ../../include/event.php:1478 +#: ../../include/event.php:1479 msgid "Not specified" msgstr "" -#: ../../include/event.php:1479 +#: ../../include/event.php:1480 msgid "Needs Action" msgstr "" -#: ../../include/event.php:1480 +#: ../../include/event.php:1481 msgid "Completed" msgstr "" -#: ../../include/event.php:1481 +#: ../../include/event.php:1482 msgid "In Process" msgstr "" -#: ../../include/event.php:1482 +#: ../../include/event.php:1483 msgid "Cancelled" msgstr "" -#: ../../include/event.php:1563 ../../include/connections.php:781 +#: ../../include/event.php:1564 ../../include/connections.php:790 #: ../../Zotlabs/Module/Connedit.php:741 ../../Zotlabs/Module/Cdav.php:1377 msgid "Mobile" msgstr "" -#: ../../include/event.php:1564 ../../include/connections.php:782 +#: ../../include/event.php:1565 ../../include/connections.php:791 #: ../../Zotlabs/Widget/Notifications.php:43 #: ../../Zotlabs/Module/Connedit.php:742 ../../Zotlabs/Module/Cdav.php:1378 msgid "Home" msgstr "" -#: ../../include/event.php:1565 ../../include/connections.php:783 +#: ../../include/event.php:1566 ../../include/connections.php:792 msgid "Home, Voice" msgstr "" -#: ../../include/event.php:1566 ../../include/connections.php:784 +#: ../../include/event.php:1567 ../../include/connections.php:793 msgid "Home, Fax" msgstr "" -#: ../../include/event.php:1567 ../../include/connections.php:785 +#: ../../include/event.php:1568 ../../include/connections.php:794 #: ../../Zotlabs/Module/Connedit.php:743 ../../Zotlabs/Module/Cdav.php:1379 msgid "Work" msgstr "" -#: ../../include/event.php:1568 ../../include/connections.php:786 +#: ../../include/event.php:1569 ../../include/connections.php:795 msgid "Work, Voice" msgstr "" -#: ../../include/event.php:1569 ../../include/connections.php:787 +#: ../../include/event.php:1570 ../../include/connections.php:796 msgid "Work, Fax" msgstr "" -#: ../../include/event.php:1570 ../../include/event.php:1577 +#: ../../include/event.php:1571 ../../include/event.php:1578 #: ../../include/selectors.php:64 ../../include/selectors.php:81 #: ../../include/selectors.php:119 ../../include/selectors.php:155 -#: ../../include/connections.php:788 ../../include/connections.php:795 -#: ../../Zotlabs/Access/PermissionRoles.php:360 +#: ../../include/connections.php:797 ../../include/connections.php:804 +#: ../../Zotlabs/Access/PermissionRoles.php:362 #: ../../Zotlabs/Module/Connedit.php:744 ../../Zotlabs/Module/Cdav.php:1380 msgid "Other" msgstr "" -#: ../../include/feedutils.php:849 ../../include/text.php:1579 +#: ../../include/feedutils.php:851 ../../include/text.php:1580 msgid "unknown" msgstr "" -#: ../../include/items.php:448 ../../addon/hzfiles/hzfiles.php:75 +#: ../../include/items.php:456 ../../addon/hzfiles/hzfiles.php:75 #: ../../addon/redphotos/redphotos.php:119 #: ../../addon/redfiles/redfiles.php:109 #: ../../Zotlabs/Module/Import_items.php:116 #: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:54 -#: ../../Zotlabs/Module/Subthread.php:89 ../../Zotlabs/Module/Group.php:108 -#: ../../Zotlabs/Module/Like.php:344 ../../Zotlabs/Module/Profperm.php:28 +#: ../../Zotlabs/Module/Subthread.php:89 ../../Zotlabs/Module/Group.php:109 +#: ../../Zotlabs/Module/Like.php:344 ../../Zotlabs/Module/Profperm.php:29 #: ../../Zotlabs/Web/WebServer.php:118 msgid "Permission denied" msgstr "" -#: ../../include/items.php:1233 +#: ../../include/items.php:1241 msgid "Visible to anybody on the internet." msgstr "" -#: ../../include/items.php:1235 +#: ../../include/items.php:1243 msgid "Visible to you only." msgstr "" -#: ../../include/items.php:1237 +#: ../../include/items.php:1245 msgid "Visible to anybody in this network." msgstr "" -#: ../../include/items.php:1239 +#: ../../include/items.php:1247 msgid "Visible to anybody authenticated." msgstr "" -#: ../../include/items.php:1241 +#: ../../include/items.php:1249 #, php-format msgid "Visible to anybody on %s." msgstr "" -#: ../../include/items.php:1243 +#: ../../include/items.php:1251 msgid "Visible to all connections." msgstr "" -#: ../../include/items.php:1245 +#: ../../include/items.php:1253 msgid "Visible to approved connections." msgstr "" -#: ../../include/items.php:1247 +#: ../../include/items.php:1255 msgid "Visible to specific connections." msgstr "" -#: ../../include/items.php:3340 ../../Zotlabs/Lib/Activity.php:2177 +#: ../../include/items.php:3348 ../../Zotlabs/Lib/Activity.php:2189 #: ../../Zotlabs/Module/Share.php:118 #, php-format msgid "🔁 Repeated %1$s's %2$s" msgstr "" -#: ../../include/items.php:3843 ../../addon/flashcards/Mod_Flashcards.php:291 +#: ../../include/items.php:3851 ../../addon/flashcards/Mod_Flashcards.php:291 #: ../../addon/flashcards/Mod_Flashcards.php:292 -#: ../../Zotlabs/Module/Display.php:58 ../../Zotlabs/Module/Display.php:119 -#: ../../Zotlabs/Module/Display.php:390 ../../Zotlabs/Module/Thing.php:113 +#: ../../Zotlabs/Module/Display.php:59 ../../Zotlabs/Module/Display.php:120 +#: ../../Zotlabs/Module/Display.php:391 ../../Zotlabs/Module/Thing.php:113 #: ../../Zotlabs/Module/Filestorage.php:29 ../../Zotlabs/Module/Viewsrc.php:25 -#: ../../Zotlabs/Module/Admin/Themes.php:72 -#: ../../Zotlabs/Module/Admin/Addons.php:263 ../../Zotlabs/Module/Admin.php:61 +#: ../../Zotlabs/Module/Admin/Themes.php:73 +#: ../../Zotlabs/Module/Admin/Addons.php:264 ../../Zotlabs/Module/Admin.php:63 msgid "Item not found." msgstr "" -#: ../../include/items.php:3923 ../../include/attach.php:156 +#: ../../include/items.php:3931 ../../include/attach.php:156 #: ../../include/attach.php:205 ../../include/attach.php:278 #: ../../include/attach.php:329 ../../include/attach.php:431 #: ../../include/attach.php:445 ../../include/attach.php:452 #: ../../include/attach.php:534 ../../include/attach.php:1106 #: ../../include/attach.php:1179 ../../include/attach.php:1344 -#: ../../include/photos.php:30 ../../addon/openid/Mod_Id.php:53 +#: ../../include/photos.php:31 ../../addon/openid/Mod_Id.php:53 #: ../../addon/keepout/keepout.php:36 ../../addon/cards/Mod_Cards.php:89 #: ../../addon/cards/Mod_Card_edit.php:51 ../../addon/pumpio/pumpio.php:44 #: ../../addon/articles/Mod_Article_edit.php:51 #: ../../addon/articles/Mod_Articles.php:94 ../../addon/wiki/Mod_Wiki.php:63 #: ../../addon/wiki/Mod_Wiki.php:288 ../../addon/wiki/Mod_Wiki.php:425 #: ../../Zotlabs/Lib/Chatroom.php:135 ../../Zotlabs/Module/Page.php:34 -#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Display.php:386 -#: ../../Zotlabs/Module/Cover_photo.php:298 -#: ../../Zotlabs/Module/Cover_photo.php:311 +#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Display.php:387 +#: ../../Zotlabs/Module/Cover_photo.php:299 +#: ../../Zotlabs/Module/Cover_photo.php:312 #: ../../Zotlabs/Module/Editwebpage.php:68 #: ../../Zotlabs/Module/Editwebpage.php:89 #: ../../Zotlabs/Module/Editwebpage.php:107 @@ -665,404 +662,404 @@ msgstr "" #: ../../Zotlabs/Module/Filestorage.php:96 #: ../../Zotlabs/Module/Filestorage.php:119 #: ../../Zotlabs/Module/Filestorage.php:165 -#: ../../Zotlabs/Module/Register.php:200 ../../Zotlabs/Module/Appman.php:163 +#: ../../Zotlabs/Module/Register.php:201 ../../Zotlabs/Module/Appman.php:163 #: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Item.php:512 #: ../../Zotlabs/Module/Item.php:531 ../../Zotlabs/Module/Item.php:541 -#: ../../Zotlabs/Module/Item.php:1457 ../../Zotlabs/Module/Achievements.php:34 +#: ../../Zotlabs/Module/Item.php:1462 ../../Zotlabs/Module/Achievements.php:34 #: ../../Zotlabs/Module/Connedit.php:299 ../../Zotlabs/Module/Defperms.php:181 #: ../../Zotlabs/Module/Suggest.php:32 ../../Zotlabs/Module/Regmod.php:20 -#: ../../Zotlabs/Module/Profile_photo.php:389 -#: ../../Zotlabs/Module/Profile_photo.php:420 +#: ../../Zotlabs/Module/Profile_photo.php:390 +#: ../../Zotlabs/Module/Profile_photo.php:421 #: ../../Zotlabs/Module/Viewconnections.php:28 #: ../../Zotlabs/Module/Viewconnections.php:33 #: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74 -#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Layouts.php:71 +#: ../../Zotlabs/Module/Api.php:26 ../../Zotlabs/Module/Layouts.php:71 #: ../../Zotlabs/Module/Layouts.php:78 ../../Zotlabs/Module/Layouts.php:89 #: ../../Zotlabs/Module/Common.php:38 ../../Zotlabs/Module/Locs.php:98 #: ../../Zotlabs/Module/Menu.php:130 ../../Zotlabs/Module/Menu.php:141 #: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Bookmarks.php:70 #: ../../Zotlabs/Module/Attach_edit.php:90 #: ../../Zotlabs/Module/Attach_edit.php:99 -#: ../../Zotlabs/Module/Attach_edit.php:106 ../../Zotlabs/Module/Group.php:14 -#: ../../Zotlabs/Module/Group.php:30 ../../Zotlabs/Module/Invite.php:64 -#: ../../Zotlabs/Module/Invite.php:315 ../../Zotlabs/Module/Like.php:242 +#: ../../Zotlabs/Module/Attach_edit.php:106 ../../Zotlabs/Module/Group.php:15 +#: ../../Zotlabs/Module/Group.php:31 ../../Zotlabs/Module/Invite.php:65 +#: ../../Zotlabs/Module/Invite.php:316 ../../Zotlabs/Module/Like.php:242 #: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 -#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/New_channel.php:105 -#: ../../Zotlabs/Module/New_channel.php:130 ../../Zotlabs/Module/Photos.php:71 -#: ../../Zotlabs/Module/Channel.php:233 ../../Zotlabs/Module/Channel.php:390 -#: ../../Zotlabs/Module/Channel.php:428 ../../Zotlabs/Module/Profile.php:99 +#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/New_channel.php:106 +#: ../../Zotlabs/Module/New_channel.php:131 ../../Zotlabs/Module/Photos.php:71 +#: ../../Zotlabs/Module/Channel.php:234 ../../Zotlabs/Module/Channel.php:391 +#: ../../Zotlabs/Module/Channel.php:429 ../../Zotlabs/Module/Profile.php:99 #: ../../Zotlabs/Module/Profile.php:114 ../../Zotlabs/Module/Moderate.php:15 -#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Module/Profiles.php:167 -#: ../../Zotlabs/Module/Profiles.php:610 +#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Module/Profiles.php:168 +#: ../../Zotlabs/Module/Profiles.php:611 #: ../../Zotlabs/Module/Sharedwithme.php:19 #: ../../Zotlabs/Module/Authtest.php:13 #: ../../Zotlabs/Module/Channel_calendar.php:232 #: ../../Zotlabs/Module/Chat.php:111 ../../Zotlabs/Module/Chat.php:116 #: ../../Zotlabs/Module/Editlayout.php:67 #: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Settings.php:59 -#: ../../Zotlabs/Module/Setup.php:218 ../../Zotlabs/Module/Editpost.php:17 +#: ../../Zotlabs/Module/Setup.php:220 ../../Zotlabs/Module/Editpost.php:17 #: ../../Zotlabs/Module/Connections.php:32 #: ../../Zotlabs/Module/Editblock.php:67 ../../Zotlabs/Module/Vote.php:19 #: ../../Zotlabs/Web/WebServer.php:119 msgid "Permission denied." msgstr "" -#: ../../include/items.php:4425 ../../Zotlabs/Module/Group.php:62 -#: ../../Zotlabs/Module/Group.php:206 +#: ../../include/items.php:4433 ../../Zotlabs/Module/Group.php:63 +#: ../../Zotlabs/Module/Group.php:207 msgid "Privacy group not found." msgstr "" -#: ../../include/items.php:4441 +#: ../../include/items.php:4449 msgid "Privacy group is empty." msgstr "" -#: ../../include/items.php:4448 +#: ../../include/items.php:4456 #, php-format msgid "Privacy group: %s" msgstr "" -#: ../../include/items.php:4458 +#: ../../include/items.php:4466 #, php-format msgid "Connection: %s" msgstr "" -#: ../../include/items.php:4460 +#: ../../include/items.php:4468 msgid "Connection not found." msgstr "" -#: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 +#: ../../include/features.php:53 ../../Zotlabs/Module/Admin/Features.php:55 #: ../../Zotlabs/Module/Admin/Features.php:56 #: ../../Zotlabs/Module/Settings/Features.php:38 msgid "Off" msgstr "" -#: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 +#: ../../include/features.php:53 ../../Zotlabs/Module/Admin/Features.php:55 #: ../../Zotlabs/Module/Admin/Features.php:56 #: ../../Zotlabs/Module/Settings/Features.php:38 msgid "On" msgstr "" -#: ../../include/features.php:82 ../../include/nav.php:488 -#: ../../include/nav.php:491 ../../Zotlabs/Lib/Apps.php:351 +#: ../../include/features.php:80 ../../include/nav.php:489 +#: ../../include/nav.php:492 ../../Zotlabs/Lib/Apps.php:352 msgid "Calendar" msgstr "" -#: ../../include/features.php:86 +#: ../../include/features.php:84 msgid "Start calendar week on Monday" msgstr "" -#: ../../include/features.php:87 +#: ../../include/features.php:85 msgid "Default is Sunday" msgstr "" -#: ../../include/features.php:94 +#: ../../include/features.php:92 msgid "Event Timezone Selection" msgstr "" -#: ../../include/features.php:95 +#: ../../include/features.php:93 msgid "Allow event creation in timezones other than your own." msgstr "" -#: ../../include/features.php:104 +#: ../../include/features.php:102 msgid "Channel Home" msgstr "" -#: ../../include/features.php:108 +#: ../../include/features.php:106 msgid "Search by Date" msgstr "" -#: ../../include/features.php:109 +#: ../../include/features.php:107 msgid "Ability to select posts by date ranges" msgstr "" -#: ../../include/features.php:116 +#: ../../include/features.php:114 msgid "Tag Cloud" msgstr "" -#: ../../include/features.php:117 +#: ../../include/features.php:115 msgid "Provide a personal tag cloud on your channel page" msgstr "" -#: ../../include/features.php:124 ../../include/features.php:358 +#: ../../include/features.php:122 ../../include/features.php:356 msgid "Use blog/list mode" msgstr "" -#: ../../include/features.php:125 ../../include/features.php:359 +#: ../../include/features.php:123 ../../include/features.php:357 msgid "Comments will be displayed separately" msgstr "" -#: ../../include/features.php:133 ../../include/text.php:1077 -#: ../../Zotlabs/Lib/Apps.php:338 ../../Zotlabs/Module/Connections.php:399 +#: ../../include/features.php:131 ../../include/text.php:1078 +#: ../../Zotlabs/Lib/Apps.php:339 ../../Zotlabs/Module/Connections.php:399 msgid "Connections" msgstr "" -#: ../../include/features.php:137 +#: ../../include/features.php:135 msgid "Connection Filtering" msgstr "" -#: ../../include/features.php:138 +#: ../../include/features.php:136 msgid "Filter incoming posts from connections based on keywords/content" msgstr "" -#: ../../include/features.php:146 +#: ../../include/features.php:144 msgid "Conversation" msgstr "" -#: ../../include/features.php:158 +#: ../../include/features.php:156 msgid "Emoji Reactions" msgstr "" -#: ../../include/features.php:159 +#: ../../include/features.php:157 msgid "Add emoji reaction ability to posts" msgstr "" -#: ../../include/features.php:166 +#: ../../include/features.php:164 msgid "Dislike Posts" msgstr "" -#: ../../include/features.php:167 +#: ../../include/features.php:165 msgid "Ability to dislike posts/comments" msgstr "" -#: ../../include/features.php:174 +#: ../../include/features.php:172 msgid "Star Posts" msgstr "" -#: ../../include/features.php:175 +#: ../../include/features.php:173 msgid "Ability to mark special posts with a star indicator" msgstr "" -#: ../../include/features.php:182 +#: ../../include/features.php:180 msgid "Reply on comment" msgstr "" -#: ../../include/features.php:183 +#: ../../include/features.php:181 msgid "Ability to reply on selected comment" msgstr "" -#: ../../include/features.php:192 ../../Zotlabs/Lib/Apps.php:352 +#: ../../include/features.php:190 ../../Zotlabs/Lib/Apps.php:353 msgid "Directory" msgstr "" -#: ../../include/features.php:196 +#: ../../include/features.php:194 msgid "Advanced Directory Search" msgstr "" -#: ../../include/features.php:197 +#: ../../include/features.php:195 msgid "Allows creation of complex directory search queries" msgstr "" -#: ../../include/features.php:206 +#: ../../include/features.php:204 msgid "Editor" msgstr "" -#: ../../include/features.php:210 +#: ../../include/features.php:208 msgid "Post Categories" msgstr "" -#: ../../include/features.php:211 +#: ../../include/features.php:209 msgid "Add categories to your posts" msgstr "" -#: ../../include/features.php:218 +#: ../../include/features.php:216 msgid "Large Photos" msgstr "" -#: ../../include/features.php:219 +#: ../../include/features.php:217 msgid "" "Include large (1024px) photo thumbnails in posts. If not enabled, use small " "(640px) photo thumbnails" msgstr "" -#: ../../include/features.php:226 +#: ../../include/features.php:224 msgid "Even More Encryption" msgstr "" -#: ../../include/features.php:227 +#: ../../include/features.php:225 msgid "" "Allow optional encryption of content end-to-end with a shared secret key" msgstr "" -#: ../../include/features.php:234 +#: ../../include/features.php:232 msgid "Disable Comments" msgstr "" -#: ../../include/features.php:235 +#: ../../include/features.php:233 msgid "Provide the option to disable comments for a post" msgstr "" -#: ../../include/features.php:242 +#: ../../include/features.php:240 msgid "Delayed Posting" msgstr "" -#: ../../include/features.php:243 +#: ../../include/features.php:241 msgid "Allow posts to be published at a later date" msgstr "" -#: ../../include/features.php:250 +#: ../../include/features.php:248 msgid "Content Expiration" msgstr "" -#: ../../include/features.php:251 +#: ../../include/features.php:249 msgid "Remove posts/comments and/or private messages at a future time" msgstr "" -#: ../../include/features.php:258 +#: ../../include/features.php:256 msgid "Suppress Duplicate Posts/Comments" msgstr "" -#: ../../include/features.php:259 +#: ../../include/features.php:257 msgid "" "Prevent posts with identical content to be published with less than two " "minutes in between submissions." msgstr "" -#: ../../include/features.php:266 +#: ../../include/features.php:264 msgid "Auto-save drafts of posts and comments" msgstr "" -#: ../../include/features.php:267 +#: ../../include/features.php:265 msgid "" "Automatically saves post and comment drafts in local browser storage to help " "prevent accidental loss of compositions" msgstr "" -#: ../../include/features.php:276 +#: ../../include/features.php:274 msgid "Manage" msgstr "" -#: ../../include/features.php:280 +#: ../../include/features.php:278 msgid "Navigation Channel Select" msgstr "" -#: ../../include/features.php:281 +#: ../../include/features.php:279 msgid "Change channels directly from within the navigation dropdown menu" msgstr "" -#: ../../include/features.php:290 ../../Zotlabs/Widget/Notifications.php:23 +#: ../../include/features.php:288 ../../Zotlabs/Widget/Notifications.php:23 #: ../../Zotlabs/Module/Connections.php:347 msgid "Network" msgstr "" -#: ../../include/features.php:294 +#: ../../include/features.php:292 msgid "Events Filter" msgstr "" -#: ../../include/features.php:295 +#: ../../include/features.php:293 msgid "Ability to display only events" msgstr "" -#: ../../include/features.php:302 +#: ../../include/features.php:300 msgid "Polls Filter" msgstr "" -#: ../../include/features.php:303 +#: ../../include/features.php:301 msgid "Ability to display only polls" msgstr "" -#: ../../include/features.php:310 ../../Zotlabs/Widget/Savedsearch.php:89 +#: ../../include/features.php:308 ../../Zotlabs/Widget/Savedsearch.php:89 msgid "Saved Searches" msgstr "" -#: ../../include/features.php:311 +#: ../../include/features.php:309 msgid "Save search terms for re-use" msgstr "" -#: ../../include/features.php:318 ../../include/contact_widgets.php:53 +#: ../../include/features.php:316 ../../include/contact_widgets.php:55 #: ../../Zotlabs/Widget/Activity_filter.php:196 #: ../../Zotlabs/Widget/Filer.php:33 msgid "Saved Folders" msgstr "" -#: ../../include/features.php:319 +#: ../../include/features.php:317 msgid "Ability to file posts under folders" msgstr "" -#: ../../include/features.php:326 +#: ../../include/features.php:324 msgid "Alternate Stream Order" msgstr "" -#: ../../include/features.php:327 +#: ../../include/features.php:325 msgid "" "Ability to order the stream by last post date, last comment date or " "unthreaded activities" msgstr "" -#: ../../include/features.php:334 +#: ../../include/features.php:332 msgid "Contact Filter" msgstr "" -#: ../../include/features.php:335 +#: ../../include/features.php:333 msgid "Ability to display only posts of a selected contact" msgstr "" -#: ../../include/features.php:342 +#: ../../include/features.php:340 msgid "Forum Filter" msgstr "" -#: ../../include/features.php:343 +#: ../../include/features.php:341 msgid "Ability to display only posts of a specific forum" msgstr "" -#: ../../include/features.php:350 +#: ../../include/features.php:348 msgid "Personal Posts Filter" msgstr "" -#: ../../include/features.php:351 +#: ../../include/features.php:349 msgid "Ability to display only posts that you've interacted on" msgstr "" -#: ../../include/features.php:368 ../../include/nav.php:469 -#: ../../Zotlabs/Lib/Apps.php:350 +#: ../../include/features.php:366 ../../include/nav.php:470 +#: ../../Zotlabs/Lib/Apps.php:351 #: ../../Zotlabs/Widget/Channel_activities.php:93 #: ../../Zotlabs/Module/Fbrowser.php:29 msgid "Photos" msgstr "" -#: ../../include/features.php:372 +#: ../../include/features.php:370 msgid "Photo Location" msgstr "" -#: ../../include/features.php:373 +#: ../../include/features.php:371 msgid "If location data is available on uploaded photos, link this to a map." msgstr "" -#: ../../include/features.php:380 +#: ../../include/features.php:378 msgid "Flag Adult Photos" msgstr "" -#: ../../include/features.php:381 +#: ../../include/features.php:379 msgid "" "Provide photo edit option to hide inappropriate photos from default album " "view" msgstr "" -#: ../../include/features.php:390 ../../Zotlabs/Lib/Apps.php:366 +#: ../../include/features.php:388 ../../Zotlabs/Lib/Apps.php:367 #: ../../Zotlabs/Module/Contactedit.php:430 msgid "Profiles" msgstr "" -#: ../../include/features.php:394 +#: ../../include/features.php:392 msgid "Advanced Profiles" msgstr "" -#: ../../include/features.php:395 +#: ../../include/features.php:393 msgid "Additional profile sections and selections" msgstr "" -#: ../../include/features.php:402 +#: ../../include/features.php:400 msgid "Profile Import/Export" msgstr "" -#: ../../include/features.php:403 +#: ../../include/features.php:401 msgid "Save and load profile details across sites/channels" msgstr "" -#: ../../include/features.php:410 +#: ../../include/features.php:408 msgid "Multiple Profiles" msgstr "" -#: ../../include/features.php:411 +#: ../../include/features.php:409 msgid "Ability to create multiple profiles" msgstr "" @@ -1180,12 +1177,12 @@ msgid "Monthly" msgstr "" #: ../../include/selectors.php:64 ../../include/selectors.php:81 -#: ../../include/channel.php:1728 ../../addon/openid/Mod_Id.php:85 +#: ../../include/channel.php:1729 ../../addon/openid/Mod_Id.php:85 msgid "Male" msgstr "" #: ../../include/selectors.php:64 ../../include/selectors.php:81 -#: ../../include/channel.php:1726 ../../addon/openid/Mod_Id.php:87 +#: ../../include/channel.php:1727 ../../addon/openid/Mod_Id.php:87 msgid "Female" msgstr "" @@ -1221,11 +1218,11 @@ msgstr "" msgid "Hermaphrodite" msgstr "" -#: ../../include/selectors.php:64 ../../include/channel.php:1732 +#: ../../include/selectors.php:64 ../../include/channel.php:1733 msgid "Neuter" msgstr "" -#: ../../include/selectors.php:64 ../../include/channel.php:1734 +#: ../../include/selectors.php:64 ../../include/channel.php:1735 msgid "Non-specific" msgstr "" @@ -1321,8 +1318,8 @@ msgstr "" msgid "Sex Addict" msgstr "" -#: ../../include/selectors.php:138 ../../include/channel.php:464 -#: ../../include/channel.php:467 ../../Zotlabs/Widget/Affinity.php:38 +#: ../../include/selectors.php:138 ../../include/channel.php:465 +#: ../../include/channel.php:468 ../../Zotlabs/Widget/Affinity.php:38 #: ../../Zotlabs/Module/Contactedit.php:283 #: ../../Zotlabs/Module/Connedit.php:581 msgid "Friends" @@ -1423,14 +1420,12 @@ msgstr "" #: ../../include/activities.php:36 ../../include/activities.php:38 #: ../../addon/openid/MysqlProvider.php:58 #: ../../addon/openid/MysqlProvider.php:59 -#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:364 -#: ../../Zotlabs/Module/Profile_photo.php:226 +#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:365 +#: ../../Zotlabs/Module/Profile_photo.php:227 msgid "Profile Photo" msgstr "" -#: ../../include/activities.php:36 -#: ../../store/[data]/smarty3/compiled/2cbde885645602969010e846a38817a1297aafb9_0.file.cover_photo.tpl.php:127 -#: ../../Zotlabs/Module/Cover_photo.php:229 +#: ../../include/activities.php:36 ../../Zotlabs/Module/Cover_photo.php:230 msgid "Cover Photo" msgstr "" @@ -1448,80 +1443,80 @@ msgstr "" msgid "%1$s updated the %2$s. Changed %3$s." msgstr "" -#: ../../include/contact_widgets.php:11 +#: ../../include/contact_widgets.php:13 #, php-format msgid "%d invitation available" msgid_plural "%d invitations available" msgstr[0] "" msgstr[1] "" -#: ../../include/contact_widgets.php:16 ../../include/acl_selectors.php:145 -#: ../../Zotlabs/Module/Admin/Site.php:405 +#: ../../include/contact_widgets.php:18 ../../include/acl_selectors.php:145 +#: ../../Zotlabs/Module/Admin/Site.php:406 msgid "Advanced" msgstr "" -#: ../../include/contact_widgets.php:19 +#: ../../include/contact_widgets.php:21 msgid "Find Channels" msgstr "" -#: ../../include/contact_widgets.php:20 +#: ../../include/contact_widgets.php:22 msgid "Enter name or interest" msgstr "" -#: ../../include/contact_widgets.php:21 +#: ../../include/contact_widgets.php:23 msgid "Connect/Follow" msgstr "" -#: ../../include/contact_widgets.php:22 +#: ../../include/contact_widgets.php:24 msgid "Examples: Robert Morgenstein, Fishing" msgstr "" -#: ../../include/contact_widgets.php:23 ../../Zotlabs/Module/Directory.php:435 +#: ../../include/contact_widgets.php:25 ../../Zotlabs/Module/Directory.php:435 #: ../../Zotlabs/Module/Directory.php:440 #: ../../Zotlabs/Module/Connections.php:407 msgid "Find" msgstr "" -#: ../../include/contact_widgets.php:24 ../../Zotlabs/Module/Suggest.php:77 +#: ../../include/contact_widgets.php:26 ../../Zotlabs/Module/Suggest.php:77 #: ../../Zotlabs/Module/Directory.php:439 msgid "Channel Suggestions" msgstr "" -#: ../../include/contact_widgets.php:26 +#: ../../include/contact_widgets.php:28 msgid "Random Profile" msgstr "" -#: ../../include/contact_widgets.php:27 +#: ../../include/contact_widgets.php:29 msgid "Invite Friends" msgstr "" -#: ../../include/contact_widgets.php:29 +#: ../../include/contact_widgets.php:31 msgid "Advanced example: name=fred and country=iceland" msgstr "" -#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:118 -#: ../../include/contact_widgets.php:152 +#: ../../include/contact_widgets.php:58 ../../include/contact_widgets.php:121 +#: ../../include/contact_widgets.php:155 #: ../../addon/cards/Widget/Cards_categories.php:83 #: ../../addon/articles/Widget/Articles_categories.php:83 #: ../../Zotlabs/Widget/Appcategories.php:52 ../../Zotlabs/Widget/Filer.php:36 msgid "Everything" msgstr "" -#: ../../include/contact_widgets.php:115 ../../include/contact_widgets.php:149 -#: ../../include/taxonomy.php:423 ../../include/taxonomy.php:505 -#: ../../include/taxonomy.php:525 ../../include/taxonomy.php:546 +#: ../../include/contact_widgets.php:118 ../../include/contact_widgets.php:152 +#: ../../include/taxonomy.php:425 ../../include/taxonomy.php:507 +#: ../../include/taxonomy.php:527 ../../include/taxonomy.php:548 #: ../../addon/cards/Widget/Cards_categories.php:80 #: ../../addon/articles/Widget/Articles_categories.php:80 -#: ../../Zotlabs/Storage/Browser.php:292 ../../Zotlabs/Storage/Browser.php:391 -#: ../../Zotlabs/Storage/Browser.php:406 ../../Zotlabs/Module/Cdav.php:1062 +#: ../../Zotlabs/Storage/Browser.php:293 ../../Zotlabs/Storage/Browser.php:392 +#: ../../Zotlabs/Storage/Browser.php:407 ../../Zotlabs/Module/Cdav.php:1062 msgid "Categories" msgstr "" -#: ../../include/contact_widgets.php:182 +#: ../../include/contact_widgets.php:185 msgid "Common Connections" msgstr "" -#: ../../include/contact_widgets.php:186 +#: ../../include/contact_widgets.php:189 #, php-format msgid "View all %d common connections" msgstr "" @@ -1535,10 +1530,10 @@ msgid "Summary: " msgstr "" #: ../../include/cdav.php:158 ../../include/cdav.php:159 -#: ../../include/cdav.php:167 ../../include/conversation.php:999 -#: ../../Zotlabs/Lib/Apps.php:1167 ../../Zotlabs/Lib/Apps.php:1251 -#: ../../Zotlabs/Lib/Activity.php:1675 ../../Zotlabs/Widget/Album.php:90 -#: ../../Zotlabs/Widget/Pinned.php:255 ../../Zotlabs/Widget/Portfolio.php:99 +#: ../../include/cdav.php:167 ../../include/conversation.php:1000 +#: ../../Zotlabs/Lib/Apps.php:1168 ../../Zotlabs/Lib/Apps.php:1252 +#: ../../Zotlabs/Lib/Activity.php:1684 ../../Zotlabs/Widget/Album.php:90 +#: ../../Zotlabs/Widget/Pinned.php:257 ../../Zotlabs/Widget/Portfolio.php:99 #: ../../Zotlabs/Module/Embedphotos.php:177 ../../Zotlabs/Module/Photos.php:788 #: ../../Zotlabs/Module/Photos.php:1246 msgid "Unknown" @@ -1576,8 +1571,8 @@ msgid "edit" msgstr "" #: ../../include/group.php:327 ../../include/acl_selectors.php:87 -#: ../../Zotlabs/Lib/Apps.php:367 ../../Zotlabs/Widget/Activity_filter.php:95 -#: ../../Zotlabs/Module/Group.php:143 +#: ../../Zotlabs/Lib/Apps.php:368 ../../Zotlabs/Widget/Activity_filter.php:95 +#: ../../Zotlabs/Module/Group.php:144 msgid "Privacy Groups" msgstr "" @@ -1597,52 +1592,52 @@ msgstr "" msgid "add" msgstr "" -#: ../../include/taxonomy.php:324 +#: ../../include/taxonomy.php:326 msgid "Trending" msgstr "" -#: ../../include/taxonomy.php:324 ../../include/taxonomy.php:463 -#: ../../include/taxonomy.php:484 ../../Zotlabs/Widget/Tagcloud.php:27 +#: ../../include/taxonomy.php:326 ../../include/taxonomy.php:465 +#: ../../include/taxonomy.php:486 ../../Zotlabs/Widget/Tagcloud.php:27 msgid "Tags" msgstr "" -#: ../../include/taxonomy.php:564 +#: ../../include/taxonomy.php:566 msgid "Keywords" msgstr "" -#: ../../include/taxonomy.php:585 +#: ../../include/taxonomy.php:587 msgid "have" msgstr "" -#: ../../include/taxonomy.php:585 +#: ../../include/taxonomy.php:587 msgid "has" msgstr "" -#: ../../include/taxonomy.php:586 +#: ../../include/taxonomy.php:588 msgid "want" msgstr "" -#: ../../include/taxonomy.php:586 +#: ../../include/taxonomy.php:588 msgid "wants" msgstr "" -#: ../../include/taxonomy.php:587 ../../Zotlabs/Lib/ThreadItem.php:333 +#: ../../include/taxonomy.php:589 ../../Zotlabs/Lib/ThreadItem.php:332 msgid "like" msgstr "" -#: ../../include/taxonomy.php:587 +#: ../../include/taxonomy.php:589 msgid "likes" msgstr "" -#: ../../include/taxonomy.php:588 ../../Zotlabs/Lib/ThreadItem.php:334 +#: ../../include/taxonomy.php:590 ../../Zotlabs/Lib/ThreadItem.php:333 msgid "dislike" msgstr "" -#: ../../include/taxonomy.php:588 +#: ../../include/taxonomy.php:590 msgid "dislikes" msgstr "" -#: ../../include/taxonomy.php:675 ../../include/conversation.php:1550 +#: ../../include/taxonomy.php:677 ../../include/conversation.php:1552 #: ../../Zotlabs/Module/Photos.php:1129 msgctxt "noun" msgid "Like" @@ -1650,130 +1645,108 @@ msgid_plural "Likes" msgstr[0] "" msgstr[1] "" -#: ../../include/photo/photo_driver.php:457 -#: ../../Zotlabs/Module/Profile_photo.php:167 -#: ../../Zotlabs/Module/Profile_photo.php:336 +#: ../../include/photo/photo_driver.php:458 +#: ../../Zotlabs/Module/Profile_photo.php:168 +#: ../../Zotlabs/Module/Profile_photo.php:337 msgid "Profile Photos" msgstr "" -#: ../../include/account.php:38 +#: ../../include/account.php:39 msgid "The provided email address is not valid" msgstr "" -#: ../../include/account.php:41 +#: ../../include/account.php:42 msgid "The provided email domain is not among those allowed on this site" msgstr "" -#: ../../include/account.php:48 +#: ../../include/account.php:49 msgid "The provided email address is already registered at this site" msgstr "" -#: ../../include/account.php:55 +#: ../../include/account.php:56 msgid "" "There is a pending registration for this address - click \"Register\" to " "continue verification" msgstr "" -#: ../../include/account.php:94 +#: ../../include/account.php:95 msgid "An invitation is required." msgstr "" -#: ../../include/account.php:103 +#: ../../include/account.php:104 msgid "Invitation could not be verified." msgstr "" -#: ../../include/account.php:191 +#: ../../include/account.php:192 msgid "Please enter the required information." msgstr "" -#: ../../include/account.php:258 ../../include/account.php:366 +#: ../../include/account.php:259 ../../include/account.php:367 msgid "Failed to store account information." msgstr "" -#: ../../include/account.php:435 ../../include/account.php:503 -#: ../../Zotlabs/Module/Register.php:328 +#: ../../include/account.php:436 ../../include/account.php:504 +#: ../../Zotlabs/Module/Register.php:329 #, php-format msgid "Registration confirmation for %s" msgstr "" -#: ../../include/account.php:578 +#: ../../include/account.php:579 #, php-format msgid "Registration request at %s" msgstr "" -#: ../../include/account.php:600 +#: ../../include/account.php:601 msgid "your registration password" msgstr "" -#: ../../include/account.php:606 ../../include/account.php:695 +#: ../../include/account.php:607 ../../include/account.php:696 #, php-format msgid "Registration details for %s" msgstr "" -#: ../../include/account.php:706 +#: ../../include/account.php:707 msgid "Account approved." msgstr "" -#: ../../include/account.php:762 +#: ../../include/account.php:763 #, php-format msgid "Registration revoked for %s" msgstr "" -#: ../../include/account.php:769 +#: ../../include/account.php:770 #, php-format msgid "Could not revoke registration for %s" msgstr "" -#: ../../include/account.php:1186 ../../include/account.php:1188 +#: ../../include/account.php:1187 ../../include/account.php:1189 msgid "Click here to upgrade." msgstr "" -#: ../../include/account.php:1194 +#: ../../include/account.php:1195 msgid "This action exceeds the limits set by your subscription plan." msgstr "" -#: ../../include/account.php:1199 +#: ../../include/account.php:1200 msgid "This action is not available under your subscription plan." msgstr "" -#: ../../include/account.php:1259 +#: ../../include/account.php:1260 msgid "open" msgstr "" -#: ../../include/account.php:1259 +#: ../../include/account.php:1260 msgid "closed" msgstr "" -#: ../../include/account.php:1266 +#: ../../include/account.php:1267 msgid "Registration is currently" msgstr "" -#: ../../include/account.php:1275 +#: ../../include/account.php:1276 msgid "please come back" msgstr "" -#: ../../include/help.php:82 -msgid "Help:" -msgstr "" - -#: ../../include/help.php:119 ../../include/help.php:127 -#: ../../include/nav.php:193 ../../include/nav.php:340 -#: ../../Zotlabs/Lib/Apps.php:353 ../../Zotlabs/Module/Layouts.php:184 -msgid "Help" -msgstr "" - -#: ../../include/help.php:131 -msgid "Not Found" -msgstr "" - -#: ../../include/help.php:134 ../../addon/cards/cards.php:104 -#: ../../addon/articles/articles.php:105 -#: ../../addon/wiki/Lib/NativeWikiPage.php:545 -#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Display.php:154 -#: ../../Zotlabs/Module/Block.php:77 ../../Zotlabs/Web/Router.php:186 -msgid "Page not found." -msgstr "" - #: ../../include/js_strings.php:5 msgid "Delete this item?" msgstr "" @@ -1811,7 +1784,7 @@ msgstr "" msgid "Password too short" msgstr "" -#: ../../include/js_strings.php:13 ../../Zotlabs/Module/Register.php:161 +#: ../../include/js_strings.php:13 ../../Zotlabs/Module/Register.php:162 msgid "Passwords do not match" msgstr "" @@ -1860,8 +1833,8 @@ msgid "Unsaved changes. Are you sure you wish to leave this page?" msgstr "" #: ../../include/js_strings.php:26 ../../Zotlabs/Module/Locs.php:121 -#: ../../Zotlabs/Module/Pubsites.php:54 ../../Zotlabs/Module/Profiles.php:475 -#: ../../Zotlabs/Module/Profiles.php:746 ../../Zotlabs/Module/Cdav.php:1006 +#: ../../Zotlabs/Module/Pubsites.php:55 ../../Zotlabs/Module/Profiles.php:476 +#: ../../Zotlabs/Module/Profiles.php:749 ../../Zotlabs/Module/Cdav.php:1006 msgid "Location" msgstr "" @@ -1920,7 +1893,7 @@ msgid "Pin to the top" msgstr "" #: ../../include/js_strings.php:40 ../../Zotlabs/Lib/ThreadItem.php:494 -#: ../../Zotlabs/Widget/Pinned.php:149 +#: ../../Zotlabs/Widget/Pinned.php:151 msgid "Unpin from the top" msgstr "" @@ -2007,19 +1980,19 @@ msgstr "" msgid "timeago.numbers" msgstr "" -#: ../../include/js_strings.php:75 ../../include/text.php:1502 +#: ../../include/js_strings.php:75 ../../include/text.php:1503 msgid "January" msgstr "" -#: ../../include/js_strings.php:76 ../../include/text.php:1502 +#: ../../include/js_strings.php:76 ../../include/text.php:1503 msgid "February" msgstr "" -#: ../../include/js_strings.php:77 ../../include/text.php:1502 +#: ../../include/js_strings.php:77 ../../include/text.php:1503 msgid "March" msgstr "" -#: ../../include/js_strings.php:78 ../../include/text.php:1502 +#: ../../include/js_strings.php:78 ../../include/text.php:1503 msgid "April" msgstr "" @@ -2028,31 +2001,31 @@ msgctxt "long" msgid "May" msgstr "" -#: ../../include/js_strings.php:80 ../../include/text.php:1502 +#: ../../include/js_strings.php:80 ../../include/text.php:1503 msgid "June" msgstr "" -#: ../../include/js_strings.php:81 ../../include/text.php:1502 +#: ../../include/js_strings.php:81 ../../include/text.php:1503 msgid "July" msgstr "" -#: ../../include/js_strings.php:82 ../../include/text.php:1502 +#: ../../include/js_strings.php:82 ../../include/text.php:1503 msgid "August" msgstr "" -#: ../../include/js_strings.php:83 ../../include/text.php:1502 +#: ../../include/js_strings.php:83 ../../include/text.php:1503 msgid "September" msgstr "" -#: ../../include/js_strings.php:84 ../../include/text.php:1502 +#: ../../include/js_strings.php:84 ../../include/text.php:1503 msgid "October" msgstr "" -#: ../../include/js_strings.php:85 ../../include/text.php:1502 +#: ../../include/js_strings.php:85 ../../include/text.php:1503 msgid "November" msgstr "" -#: ../../include/js_strings.php:86 ../../include/text.php:1502 +#: ../../include/js_strings.php:86 ../../include/text.php:1503 msgid "December" msgstr "" @@ -2105,31 +2078,31 @@ msgstr "" msgid "Dec" msgstr "" -#: ../../include/js_strings.php:99 ../../include/text.php:1498 +#: ../../include/js_strings.php:99 ../../include/text.php:1499 msgid "Sunday" msgstr "" -#: ../../include/js_strings.php:100 ../../include/text.php:1498 +#: ../../include/js_strings.php:100 ../../include/text.php:1499 msgid "Monday" msgstr "" -#: ../../include/js_strings.php:101 ../../include/text.php:1498 +#: ../../include/js_strings.php:101 ../../include/text.php:1499 msgid "Tuesday" msgstr "" -#: ../../include/js_strings.php:102 ../../include/text.php:1498 +#: ../../include/js_strings.php:102 ../../include/text.php:1499 msgid "Wednesday" msgstr "" -#: ../../include/js_strings.php:103 ../../include/text.php:1498 +#: ../../include/js_strings.php:103 ../../include/text.php:1499 msgid "Thursday" msgstr "" -#: ../../include/js_strings.php:104 ../../include/text.php:1498 +#: ../../include/js_strings.php:104 ../../include/text.php:1499 msgid "Friday" msgstr "" -#: ../../include/js_strings.php:105 ../../include/text.php:1498 +#: ../../include/js_strings.php:105 ../../include/text.php:1499 msgid "Saturday" msgstr "" @@ -2199,126 +2172,126 @@ msgstr "" #: ../../addon/cart/submodules/orderoptions.php:358 #: ../../addon/cart/submodules/orderoptions.php:434 #: ../../addon/cart/submodules/orderoptions.php:458 -#: ../../Zotlabs/Module/Register.php:498 ../../Zotlabs/Module/Appman.php:218 -#: ../../Zotlabs/Module/Appman.php:219 ../../Zotlabs/Module/Profiles.php:757 -#: ../../Zotlabs/Module/Profiles.php:761 +#: ../../Zotlabs/Module/Register.php:501 ../../Zotlabs/Module/Appman.php:218 +#: ../../Zotlabs/Module/Appman.php:219 ../../Zotlabs/Module/Profiles.php:760 +#: ../../Zotlabs/Module/Profiles.php:764 #: ../../Zotlabs/Module/Settings/Multifactor.php:84 msgid "Required" msgstr "" -#: ../../include/zid.php:410 +#: ../../include/zid.php:411 #, php-format msgid "OpenWebAuth: %1$s welcomes %2$s" msgstr "" -#: ../../include/conversation.php:147 ../../include/text.php:2352 +#: ../../include/conversation.php:148 ../../include/text.php:2358 #: ../../addon/redphotos/redphotohelper.php:71 #: ../../addon/diaspora/Receiver.php:1693 #: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Tagger.php:71 msgid "photo" msgstr "" -#: ../../include/conversation.php:155 ../../Zotlabs/Module/Like.php:183 +#: ../../include/conversation.php:156 ../../Zotlabs/Module/Like.php:183 msgid "channel" msgstr "" -#: ../../include/conversation.php:178 ../../include/markdown.php:208 -#: ../../include/text.php:2358 ../../include/bbcode.php:571 +#: ../../include/conversation.php:179 ../../include/markdown.php:208 +#: ../../include/text.php:2364 ../../include/bbcode.php:572 #: ../../Zotlabs/Module/Tagger.php:79 msgid "post" msgstr "" -#: ../../include/conversation.php:180 ../../include/text.php:2360 +#: ../../include/conversation.php:181 ../../include/text.php:2366 #: ../../Zotlabs/Module/Tagger.php:81 msgid "comment" msgstr "" -#: ../../include/conversation.php:194 ../../addon/diaspora/Receiver.php:1628 +#: ../../include/conversation.php:195 ../../addon/diaspora/Receiver.php:1628 #: ../../Zotlabs/Module/Like.php:483 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "" -#: ../../include/conversation.php:196 +#: ../../include/conversation.php:197 #, php-format msgid "likes %1$s's %2$s" msgstr "" -#: ../../include/conversation.php:199 ../../Zotlabs/Module/Like.php:485 +#: ../../include/conversation.php:200 ../../Zotlabs/Module/Like.php:485 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "" -#: ../../include/conversation.php:200 +#: ../../include/conversation.php:201 #, php-format msgid "doesn't like %1$s's %2$s" msgstr "" -#: ../../include/conversation.php:203 +#: ../../include/conversation.php:204 #, php-format msgid "%1$s repeated %2$s's %3$s" msgstr "" -#: ../../include/conversation.php:204 +#: ../../include/conversation.php:205 #, php-format msgid "repeated %1$s's %2$s" msgstr "" -#: ../../include/conversation.php:332 ../../Zotlabs/Lib/ThreadItem.php:532 +#: ../../include/conversation.php:333 ../../Zotlabs/Lib/ThreadItem.php:532 msgid "This is an unsaved preview" msgstr "" -#: ../../include/conversation.php:464 ../../Zotlabs/Module/Photos.php:1110 +#: ../../include/conversation.php:465 ../../Zotlabs/Module/Photos.php:1110 msgctxt "title" msgid "Likes" msgstr "" -#: ../../include/conversation.php:465 ../../Zotlabs/Module/Photos.php:1110 +#: ../../include/conversation.php:466 ../../Zotlabs/Module/Photos.php:1110 msgctxt "title" msgid "Dislikes" msgstr "" -#: ../../include/conversation.php:466 ../../Zotlabs/Widget/Pinned.php:71 +#: ../../include/conversation.php:467 ../../Zotlabs/Widget/Pinned.php:73 #: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" msgid "Attending" msgstr "" -#: ../../include/conversation.php:467 ../../Zotlabs/Widget/Pinned.php:72 +#: ../../include/conversation.php:468 ../../Zotlabs/Widget/Pinned.php:74 #: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" msgid "Not attending" msgstr "" -#: ../../include/conversation.php:468 ../../Zotlabs/Widget/Pinned.php:73 +#: ../../include/conversation.php:469 ../../Zotlabs/Widget/Pinned.php:75 #: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" msgid "Might attend" msgstr "" -#: ../../include/conversation.php:470 +#: ../../include/conversation.php:471 msgctxt "title" msgid "Repeats" msgstr "" -#: ../../include/conversation.php:539 +#: ../../include/conversation.php:540 msgid "Select" msgstr "" -#: ../../include/conversation.php:540 ../../include/conversation.php:601 +#: ../../include/conversation.php:541 ../../include/conversation.php:602 #: ../../addon/cards/Mod_Card_edit.php:130 -#: ../../addon/articles/Mod_Article_edit.php:128 ../../Zotlabs/Lib/Apps.php:617 -#: ../../Zotlabs/Lib/ThreadItem.php:184 ../../Zotlabs/Lib/ThreadItem.php:540 -#: ../../Zotlabs/Storage/Browser.php:387 +#: ../../addon/articles/Mod_Article_edit.php:128 ../../Zotlabs/Lib/Apps.php:618 +#: ../../Zotlabs/Lib/ThreadItem.php:183 ../../Zotlabs/Lib/ThreadItem.php:540 +#: ../../Zotlabs/Storage/Browser.php:388 #: ../../Zotlabs/Module/Editwebpage.php:167 #: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Module/Oauth.php:172 #: ../../Zotlabs/Module/Thing.php:295 ../../Zotlabs/Module/Tokens.php:295 #: ../../Zotlabs/Module/Contactedit.php:651 #: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Connedit.php:749 #: ../../Zotlabs/Module/Admin/Accounts.php:320 -#: ../../Zotlabs/Module/Admin/Profs.php:176 -#: ../../Zotlabs/Module/Admin/Channels.php:149 -#: ../../Zotlabs/Module/Permcats.php:261 ../../Zotlabs/Module/Group.php:251 +#: ../../Zotlabs/Module/Admin/Profs.php:177 +#: ../../Zotlabs/Module/Admin/Channels.php:171 +#: ../../Zotlabs/Module/Permcats.php:261 ../../Zotlabs/Module/Group.php:252 #: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Photos.php:1173 #: ../../Zotlabs/Module/Editlayout.php:138 ../../Zotlabs/Module/Cdav.php:1047 #: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Oauth2.php:193 @@ -2326,317 +2299,321 @@ msgstr "" msgid "Delete" msgstr "" -#: ../../include/conversation.php:546 ../../Zotlabs/Lib/ThreadItem.php:286 +#: ../../include/conversation.php:547 ../../Zotlabs/Lib/ThreadItem.php:285 msgid "Toggle Star Status" msgstr "" -#: ../../include/conversation.php:552 +#: ../../include/conversation.php:553 msgid "Private Message" msgstr "" -#: ../../include/conversation.php:561 ../../Zotlabs/Lib/ThreadItem.php:296 -#: ../../Zotlabs/Widget/Pinned.php:82 +#: ../../include/conversation.php:562 ../../Zotlabs/Lib/ThreadItem.php:295 +#: ../../Zotlabs/Widget/Pinned.php:84 msgid "Message signature validated" msgstr "" -#: ../../include/conversation.php:562 ../../Zotlabs/Lib/ThreadItem.php:297 -#: ../../Zotlabs/Widget/Pinned.php:83 +#: ../../include/conversation.php:563 ../../Zotlabs/Lib/ThreadItem.php:296 +#: ../../Zotlabs/Widget/Pinned.php:85 msgid "Message signature incorrect" msgstr "" -#: ../../include/conversation.php:600 ../../Zotlabs/Lib/ThreadItem.php:539 +#: ../../include/conversation.php:601 ../../Zotlabs/Lib/ThreadItem.php:539 #: ../../Zotlabs/Module/Admin/Accounts.php:318 #: ../../Zotlabs/Module/Connections.php:358 #: ../../Zotlabs/Module/Connections.php:409 msgid "Approve" msgstr "" -#: ../../include/conversation.php:606 +#: ../../include/conversation.php:607 #, php-format msgid "View %s's profile @ %s" msgstr "" -#: ../../include/conversation.php:628 +#: ../../include/conversation.php:629 msgid "Categories:" msgstr "" -#: ../../include/conversation.php:629 +#: ../../include/conversation.php:630 msgid "Filed under:" msgstr "" -#: ../../include/conversation.php:635 ../../Zotlabs/Lib/ThreadItem.php:451 -#: ../../Zotlabs/Widget/Pinned.php:126 +#: ../../include/conversation.php:636 ../../Zotlabs/Lib/ThreadItem.php:451 +#: ../../Zotlabs/Widget/Pinned.php:128 #, php-format msgid "from %s" msgstr "" -#: ../../include/conversation.php:638 ../../Zotlabs/Lib/ThreadItem.php:454 -#: ../../Zotlabs/Widget/Pinned.php:129 +#: ../../include/conversation.php:639 ../../Zotlabs/Lib/ThreadItem.php:454 +#: ../../Zotlabs/Widget/Pinned.php:131 #, php-format msgid "last edited: %s" msgstr "" -#: ../../include/conversation.php:639 ../../Zotlabs/Lib/ThreadItem.php:455 -#: ../../Zotlabs/Widget/Pinned.php:130 +#: ../../include/conversation.php:640 ../../Zotlabs/Lib/ThreadItem.php:455 +#: ../../Zotlabs/Widget/Pinned.php:132 #, php-format msgid "Expires: %s" msgstr "" -#: ../../include/conversation.php:654 ../../addon/cards/cards.php:82 +#: ../../include/conversation.php:655 ../../addon/cards/cards.php:82 #: ../../addon/articles/articles.php:83 msgid "View in context" msgstr "" -#: ../../include/conversation.php:656 ../../Zotlabs/Lib/ThreadItem.php:533 +#: ../../include/conversation.php:657 ../../Zotlabs/Lib/ThreadItem.php:533 #: ../../Zotlabs/Module/Photos.php:1077 msgid "Please wait" msgstr "" -#: ../../include/conversation.php:757 +#: ../../include/conversation.php:758 msgid "remove" msgstr "" -#: ../../include/conversation.php:761 +#: ../../include/conversation.php:762 msgid "Loading..." msgstr "" -#: ../../include/conversation.php:762 ../../Zotlabs/Lib/ThreadItem.php:313 +#: ../../include/conversation.php:763 ../../Zotlabs/Lib/ThreadItem.php:312 msgid "Conversation Features" msgstr "" -#: ../../include/conversation.php:763 +#: ../../include/conversation.php:764 msgid "Delete Selected Items" msgstr "" -#: ../../include/conversation.php:799 +#: ../../include/conversation.php:800 msgid "View Source" msgstr "" -#: ../../include/conversation.php:809 +#: ../../include/conversation.php:810 msgid "Follow Thread" msgstr "" -#: ../../include/conversation.php:818 +#: ../../include/conversation.php:819 msgid "Unfollow Thread" msgstr "" -#: ../../include/conversation.php:895 ../../include/nav.php:126 -#: ../../addon/openclipatar/openclipatar.php:58 ../../Zotlabs/Lib/Apps.php:349 +#: ../../include/conversation.php:896 ../../include/nav.php:127 +#: ../../addon/openclipatar/openclipatar.php:58 ../../Zotlabs/Lib/Apps.php:350 #: ../../Zotlabs/Module/Connedit.php:480 msgid "View Profile" msgstr "" -#: ../../include/conversation.php:907 ../../Zotlabs/Module/Connedit.php:501 +#: ../../include/conversation.php:908 ../../Zotlabs/Module/Connedit.php:501 msgid "Recent Activity" msgstr "" -#: ../../include/conversation.php:919 ../../include/connections.php:141 -#: ../../include/channel.php:1624 ../../Zotlabs/Widget/Suggestions.php:51 +#: ../../include/conversation.php:920 ../../include/connections.php:150 +#: ../../include/channel.php:1625 ../../Zotlabs/Widget/Suggestions.php:51 #: ../../Zotlabs/Widget/Follow.php:37 ../../Zotlabs/Module/Suggest.php:69 #: ../../Zotlabs/Module/Directory.php:371 #: ../../Zotlabs/Module/Connections.php:365 msgid "Connect" msgstr "" -#: ../../include/conversation.php:931 +#: ../../include/conversation.php:932 msgid "Edit Connection" msgstr "" -#: ../../include/conversation.php:1001 +#: ../../include/conversation.php:1002 msgid "Approve this item" msgstr "" -#: ../../include/conversation.php:1001 +#: ../../include/conversation.php:1002 msgid "Delete this item" msgstr "" -#: ../../include/conversation.php:1055 +#: ../../include/conversation.php:1056 #, php-format msgid "%s likes this." msgstr "" -#: ../../include/conversation.php:1055 +#: ../../include/conversation.php:1056 #, php-format msgid "%s doesn't like this." msgstr "" -#: ../../include/conversation.php:1059 +#: ../../include/conversation.php:1060 #, 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] "" msgstr[1] "" -#: ../../include/conversation.php:1061 +#: ../../include/conversation.php:1062 #, 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] "" msgstr[1] "" -#: ../../include/conversation.php:1067 +#: ../../include/conversation.php:1068 msgid "and" msgstr "" -#: ../../include/conversation.php:1070 +#: ../../include/conversation.php:1071 #, php-format msgid ", and %d other people" msgid_plural ", and %d other people" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1071 +#: ../../include/conversation.php:1072 #, php-format msgid "%s like this." msgstr "" -#: ../../include/conversation.php:1071 +#: ../../include/conversation.php:1072 #, php-format msgid "%s don't like this." msgstr "" -#: ../../include/conversation.php:1122 ../../addon/hsse/hsse.php:82 +#: ../../include/conversation.php:1123 ../../addon/hsse/hsse.php:82 msgid "Set your location" msgstr "" -#: ../../include/conversation.php:1123 ../../addon/hsse/hsse.php:83 +#: ../../include/conversation.php:1124 ../../addon/hsse/hsse.php:83 msgid "Clear browser location" msgstr "" -#: ../../include/conversation.php:1135 ../../addon/cards/Mod_Card_edit.php:101 +#: ../../include/conversation.php:1136 ../../addon/cards/Mod_Card_edit.php:101 #: ../../addon/articles/Mod_Article_edit.php:99 ../../addon/hsse/hsse.php:95 #: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Chat.php:219 #: ../../Zotlabs/Module/Editblock.php:116 msgid "Insert web link" msgstr "" -#: ../../include/conversation.php:1139 ../../addon/hsse/hsse.php:99 +#: ../../include/conversation.php:1140 ../../addon/hsse/hsse.php:99 msgid "Embed (existing) photo from your photo albums" msgstr "" -#: ../../include/conversation.php:1172 ../../addon/hsse/hsse.php:134 +#: ../../include/conversation.php:1173 ../../addon/hsse/hsse.php:134 #: ../../Zotlabs/Module/Chat.php:217 msgid "Please enter a link URL:" msgstr "" -#: ../../include/conversation.php:1173 ../../addon/hsse/hsse.php:135 +#: ../../include/conversation.php:1174 ../../addon/hsse/hsse.php:135 msgid "Tag term:" msgstr "" -#: ../../include/conversation.php:1174 ../../addon/hsse/hsse.php:136 +#: ../../include/conversation.php:1175 ../../addon/hsse/hsse.php:136 msgid "Where are you right now?" msgstr "" -#: ../../include/conversation.php:1177 ../../addon/wiki/Mod_Wiki.php:400 -#: ../../addon/hsse/hsse.php:139 ../../Zotlabs/Module/Cover_photo.php:387 -#: ../../Zotlabs/Module/Profile_photo.php:554 +#: ../../include/conversation.php:1178 ../../addon/wiki/Mod_Wiki.php:400 +#: ../../addon/hsse/hsse.php:139 ../../Zotlabs/Module/Cover_photo.php:388 +#: ../../Zotlabs/Module/Profile_photo.php:555 msgid "Choose images to embed" msgstr "" -#: ../../include/conversation.php:1178 ../../addon/wiki/Mod_Wiki.php:401 -#: ../../addon/hsse/hsse.php:140 ../../Zotlabs/Module/Cover_photo.php:388 -#: ../../Zotlabs/Module/Profile_photo.php:555 +#: ../../include/conversation.php:1179 ../../addon/wiki/Mod_Wiki.php:401 +#: ../../addon/hsse/hsse.php:140 ../../Zotlabs/Module/Cover_photo.php:389 +#: ../../Zotlabs/Module/Profile_photo.php:556 msgid "Choose an album" msgstr "" -#: ../../include/conversation.php:1179 ../../addon/hsse/hsse.php:141 +#: ../../include/conversation.php:1180 ../../addon/hsse/hsse.php:141 msgid "Choose a different album..." msgstr "" -#: ../../include/conversation.php:1180 ../../addon/wiki/Mod_Wiki.php:403 -#: ../../addon/hsse/hsse.php:142 ../../Zotlabs/Module/Cover_photo.php:390 -#: ../../Zotlabs/Module/Profile_photo.php:557 +#: ../../include/conversation.php:1181 ../../addon/wiki/Mod_Wiki.php:403 +#: ../../addon/hsse/hsse.php:142 ../../Zotlabs/Module/Cover_photo.php:391 +#: ../../Zotlabs/Module/Profile_photo.php:558 msgid "Error getting album list" msgstr "" -#: ../../include/conversation.php:1181 ../../addon/wiki/Mod_Wiki.php:404 -#: ../../addon/hsse/hsse.php:143 ../../Zotlabs/Module/Cover_photo.php:391 -#: ../../Zotlabs/Module/Profile_photo.php:558 +#: ../../include/conversation.php:1182 ../../addon/wiki/Mod_Wiki.php:404 +#: ../../addon/hsse/hsse.php:143 ../../Zotlabs/Module/Cover_photo.php:392 +#: ../../Zotlabs/Module/Profile_photo.php:559 msgid "Error getting photo link" msgstr "" -#: ../../include/conversation.php:1182 ../../addon/wiki/Mod_Wiki.php:405 -#: ../../addon/hsse/hsse.php:144 ../../Zotlabs/Module/Cover_photo.php:392 -#: ../../Zotlabs/Module/Profile_photo.php:559 +#: ../../include/conversation.php:1183 ../../addon/wiki/Mod_Wiki.php:405 +#: ../../addon/hsse/hsse.php:144 ../../Zotlabs/Module/Cover_photo.php:393 +#: ../../Zotlabs/Module/Profile_photo.php:560 msgid "Error getting album" msgstr "" -#: ../../include/conversation.php:1183 ../../addon/hsse/hsse.php:145 +#: ../../include/conversation.php:1184 ../../addon/hsse/hsse.php:145 msgid "Comments enabled" msgstr "" -#: ../../include/conversation.php:1184 ../../addon/hsse/hsse.php:146 +#: ../../include/conversation.php:1185 ../../addon/hsse/hsse.php:146 msgid "Comments disabled" msgstr "" -#: ../../include/conversation.php:1201 ../../addon/hsse/hsse.php:153 +#: ../../include/conversation.php:1186 +msgid "Confirm delete" +msgstr "" + +#: ../../include/conversation.php:1203 ../../addon/hsse/hsse.php:153 #: ../../Zotlabs/Lib/ThreadItem.php:872 ../../Zotlabs/Module/Webpages.php:257 #: ../../Zotlabs/Module/Photos.php:1096 msgid "Preview" msgstr "" -#: ../../include/conversation.php:1234 ../../addon/wiki/Mod_Wiki.php:304 -#: ../../addon/hsse/hsse.php:186 ../../Zotlabs/Lib/ThreadItem.php:341 +#: ../../include/conversation.php:1236 ../../addon/wiki/Mod_Wiki.php:304 +#: ../../addon/hsse/hsse.php:186 ../../Zotlabs/Lib/ThreadItem.php:340 #: ../../Zotlabs/Widget/Cdav.php:142 ../../Zotlabs/Module/Webpages.php:251 #: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Blocks.php:159 #: ../../Zotlabs/Module/Photos.php:1076 msgid "Share" msgstr "" -#: ../../include/conversation.php:1243 ../../addon/hsse/hsse.php:195 +#: ../../include/conversation.php:1245 ../../addon/hsse/hsse.php:195 msgid "Page link name" msgstr "" -#: ../../include/conversation.php:1246 ../../addon/hsse/hsse.php:198 +#: ../../include/conversation.php:1248 ../../addon/hsse/hsse.php:198 msgid "Post as" msgstr "" -#: ../../include/conversation.php:1248 ../../addon/hsse/hsse.php:200 +#: ../../include/conversation.php:1250 ../../addon/hsse/hsse.php:200 #: ../../Zotlabs/Lib/ThreadItem.php:863 msgid "Bold" msgstr "" -#: ../../include/conversation.php:1249 ../../addon/hsse/hsse.php:201 +#: ../../include/conversation.php:1251 ../../addon/hsse/hsse.php:201 #: ../../Zotlabs/Lib/ThreadItem.php:864 msgid "Italic" msgstr "" -#: ../../include/conversation.php:1250 ../../addon/hsse/hsse.php:202 +#: ../../include/conversation.php:1252 ../../addon/hsse/hsse.php:202 #: ../../Zotlabs/Lib/ThreadItem.php:865 msgid "Underline" msgstr "" -#: ../../include/conversation.php:1251 ../../addon/hsse/hsse.php:203 +#: ../../include/conversation.php:1253 ../../addon/hsse/hsse.php:203 #: ../../Zotlabs/Lib/ThreadItem.php:866 msgid "Quote" msgstr "" -#: ../../include/conversation.php:1252 ../../addon/hsse/hsse.php:204 +#: ../../include/conversation.php:1254 ../../addon/hsse/hsse.php:204 #: ../../Zotlabs/Lib/ThreadItem.php:867 msgid "Code" msgstr "" -#: ../../include/conversation.php:1253 ../../addon/hsse/hsse.php:205 +#: ../../include/conversation.php:1255 ../../addon/hsse/hsse.php:205 #: ../../Zotlabs/Lib/ThreadItem.php:869 msgid "Attach/Upload file" msgstr "" -#: ../../include/conversation.php:1256 ../../addon/wiki/Mod_Wiki.php:397 +#: ../../include/conversation.php:1258 ../../addon/wiki/Mod_Wiki.php:397 #: ../../addon/hsse/hsse.php:208 msgid "Embed an image from your albums" msgstr "" -#: ../../include/conversation.php:1257 ../../include/conversation.php:1312 +#: ../../include/conversation.php:1259 ../../include/conversation.php:1314 #: ../../addon/cards/Mod_Card_edit.php:132 #: ../../addon/articles/Mod_Article_edit.php:130 #: ../../addon/wiki/Mod_Wiki.php:365 ../../addon/wiki/Mod_Wiki.php:398 #: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258 -#: ../../Zotlabs/Storage/Browser.php:386 -#: ../../Zotlabs/Module/Cover_photo.php:385 +#: ../../Zotlabs/Storage/Browser.php:387 +#: ../../Zotlabs/Module/Cover_photo.php:386 #: ../../Zotlabs/Module/Editwebpage.php:169 ../../Zotlabs/Module/Oauth.php:110 #: ../../Zotlabs/Module/Oauth.php:136 ../../Zotlabs/Module/Connedit.php:750 -#: ../../Zotlabs/Module/Profile_photo.php:552 ../../Zotlabs/Module/Tagrm.php:15 -#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Admin/Addons.php:430 +#: ../../Zotlabs/Module/Profile_photo.php:553 ../../Zotlabs/Module/Tagrm.php:15 +#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Admin/Addons.php:431 #: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 #: ../../Zotlabs/Module/Editlayout.php:140 #: ../../Zotlabs/Module/Editpost.php:114 ../../Zotlabs/Module/Cdav.php:1049 @@ -2646,344 +2623,349 @@ msgstr "" msgid "Cancel" msgstr "" -#: ../../include/conversation.php:1258 ../../include/conversation.php:1311 +#: ../../include/conversation.php:1260 ../../include/conversation.php:1313 #: ../../addon/wiki/Mod_Wiki.php:399 ../../addon/hsse/hsse.php:210 -#: ../../addon/hsse/hsse.php:257 ../../Zotlabs/Module/Cover_photo.php:386 -#: ../../Zotlabs/Module/Profile_photo.php:553 +#: ../../addon/hsse/hsse.php:257 ../../Zotlabs/Module/Cover_photo.php:387 +#: ../../Zotlabs/Module/Profile_photo.php:554 msgid "OK" msgstr "" -#: ../../include/conversation.php:1260 ../../addon/hsse/hsse.php:212 +#: ../../include/conversation.php:1262 ../../addon/hsse/hsse.php:212 msgid "Toggle voting" msgstr "" -#: ../../include/conversation.php:1261 +#: ../../include/conversation.php:1263 msgid "Toggle poll" msgstr "" -#: ../../include/conversation.php:1262 +#: ../../include/conversation.php:1264 msgid "Option" msgstr "" -#: ../../include/conversation.php:1263 +#: ../../include/conversation.php:1265 msgid "Add option" msgstr "" -#: ../../include/conversation.php:1264 +#: ../../include/conversation.php:1266 msgid "Minutes" msgstr "" -#: ../../include/conversation.php:1264 +#: ../../include/conversation.php:1266 msgid "Hours" msgstr "" -#: ../../include/conversation.php:1264 +#: ../../include/conversation.php:1266 msgid "Days" msgstr "" -#: ../../include/conversation.php:1265 +#: ../../include/conversation.php:1267 msgid "Allow multiple answers" msgstr "" -#: ../../include/conversation.php:1267 ../../addon/hsse/hsse.php:215 +#: ../../include/conversation.php:1269 ../../addon/hsse/hsse.php:215 msgid "Disable comments" msgstr "" -#: ../../include/conversation.php:1268 ../../addon/hsse/hsse.php:216 +#: ../../include/conversation.php:1270 ../../addon/hsse/hsse.php:216 msgid "Toggle comments" msgstr "" -#: ../../include/conversation.php:1274 ../../addon/cards/Mod_Card_edit.php:118 +#: ../../include/conversation.php:1276 ../../addon/cards/Mod_Card_edit.php:118 #: ../../addon/articles/Mod_Article_edit.php:116 ../../addon/hsse/hsse.php:221 #: ../../Zotlabs/Module/Photos.php:667 ../../Zotlabs/Module/Photos.php:1042 #: ../../Zotlabs/Module/Editblock.php:129 msgid "Title (optional)" msgstr "" -#: ../../include/conversation.php:1275 +#: ../../include/conversation.php:1277 msgid "Summary (optional)" msgstr "" -#: ../../include/conversation.php:1278 ../../addon/hsse/hsse.php:224 +#: ../../include/conversation.php:1280 ../../addon/hsse/hsse.php:224 msgid "Categories (optional, comma-separated list)" msgstr "" -#: ../../include/conversation.php:1279 ../../addon/hsse/hsse.php:225 +#: ../../include/conversation.php:1281 ../../addon/hsse/hsse.php:225 msgid "Permission settings" msgstr "" -#: ../../include/conversation.php:1301 ../../addon/hsse/hsse.php:247 +#: ../../include/conversation.php:1303 ../../addon/hsse/hsse.php:247 msgid "Other networks and post services" msgstr "" -#: ../../include/conversation.php:1304 ../../addon/hsse/hsse.php:250 +#: ../../include/conversation.php:1306 ../../addon/hsse/hsse.php:250 msgid "Set expiration date" msgstr "" -#: ../../include/conversation.php:1307 ../../addon/hsse/hsse.php:253 +#: ../../include/conversation.php:1309 ../../addon/hsse/hsse.php:253 msgid "Set publish date" msgstr "" -#: ../../include/conversation.php:1309 ../../addon/hsse/hsse.php:255 +#: ../../include/conversation.php:1311 ../../addon/hsse/hsse.php:255 #: ../../Zotlabs/Lib/ThreadItem.php:875 ../../Zotlabs/Module/Chat.php:218 msgid "Encrypt text" msgstr "" -#: ../../include/conversation.php:1553 +#: ../../include/conversation.php:1555 msgctxt "noun" msgid "Repeat" msgid_plural "Repeats" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1556 ../../Zotlabs/Module/Photos.php:1134 +#: ../../include/conversation.php:1558 ../../Zotlabs/Module/Photos.php:1134 msgctxt "noun" msgid "Dislike" msgid_plural "Dislikes" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1559 +#: ../../include/conversation.php:1561 msgctxt "noun" msgid "Attending" msgid_plural "Attending" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1562 +#: ../../include/conversation.php:1564 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1565 +#: ../../include/conversation.php:1567 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" msgstr[0] "" msgstr[1] "" -#: ../../include/nav.php:108 +#: ../../include/nav.php:109 msgid "Remote authentication" msgstr "" -#: ../../include/nav.php:108 +#: ../../include/nav.php:109 msgid "Click to authenticate to your home hub" msgstr "" -#: ../../include/nav.php:114 ../../Zotlabs/Widget/Channel_activities.php:239 +#: ../../include/nav.php:115 ../../Zotlabs/Widget/Channel_activities.php:239 #: ../../Zotlabs/Widget/Admin.php:29 -#: ../../Zotlabs/Module/Admin/Channels.php:146 -#: ../../Zotlabs/Module/Manage.php:162 ../../Zotlabs/Module/Admin.php:116 +#: ../../Zotlabs/Module/Admin/Channels.php:168 +#: ../../Zotlabs/Module/Manage.php:162 ../../Zotlabs/Module/Admin.php:118 msgid "Channels" msgstr "" -#: ../../include/nav.php:114 +#: ../../include/nav.php:115 msgid "Manage your channels" msgstr "" -#: ../../include/nav.php:117 ../../Zotlabs/Lib/Apps.php:344 -#: ../../Zotlabs/Widget/Newmember.php:58 +#: ../../include/nav.php:118 ../../Zotlabs/Lib/Apps.php:345 +#: ../../Zotlabs/Widget/Newmember.php:60 #: ../../Zotlabs/Widget/Settings_menu.php:71 -#: ../../Zotlabs/Module/Admin/Themes.php:140 -#: ../../Zotlabs/Module/Admin/Addons.php:348 +#: ../../Zotlabs/Module/Admin/Themes.php:141 +#: ../../Zotlabs/Module/Admin/Addons.php:349 msgid "Settings" msgstr "" -#: ../../include/nav.php:117 +#: ../../include/nav.php:118 msgid "Account/Channel Settings" msgstr "" -#: ../../include/nav.php:123 ../../include/nav.php:153 -#: ../../include/nav.php:174 ../../boot.php:1745 +#: ../../include/nav.php:124 ../../include/nav.php:154 +#: ../../include/nav.php:175 ../../boot.php:1759 msgid "Logout" msgstr "" -#: ../../include/nav.php:123 ../../include/nav.php:153 +#: ../../include/nav.php:124 ../../include/nav.php:154 msgid "End this session" msgstr "" -#: ../../include/nav.php:126 +#: ../../include/nav.php:127 msgid "Your profile page" msgstr "" -#: ../../include/nav.php:129 ../../include/channel.php:1538 -#: ../../Zotlabs/Module/Profiles.php:847 +#: ../../include/nav.php:130 ../../include/channel.php:1539 +#: ../../Zotlabs/Module/Profiles.php:851 msgid "Edit Profiles" msgstr "" -#: ../../include/nav.php:129 +#: ../../include/nav.php:130 msgid "Manage/Edit profiles" msgstr "" -#: ../../include/nav.php:131 ../../include/channel.php:1542 +#: ../../include/nav.php:132 ../../include/channel.php:1543 #: ../../addon/openclipatar/openclipatar.php:59 msgid "Edit Profile" msgstr "" -#: ../../include/nav.php:131 ../../Zotlabs/Widget/Newmember.php:40 +#: ../../include/nav.php:132 ../../Zotlabs/Widget/Newmember.php:42 msgid "Edit your profile" msgstr "" -#: ../../include/nav.php:138 ../../include/nav.php:142 ../../boot.php:1746 -#: ../../Zotlabs/Lib/Apps.php:341 +#: ../../include/nav.php:139 ../../include/nav.php:143 ../../boot.php:1760 +#: ../../Zotlabs/Lib/Apps.php:342 msgid "Login" msgstr "" -#: ../../include/nav.php:138 ../../include/nav.php:142 +#: ../../include/nav.php:139 ../../include/nav.php:143 msgid "Sign in" msgstr "" -#: ../../include/nav.php:172 +#: ../../include/nav.php:173 msgid "Take me home" msgstr "" -#: ../../include/nav.php:174 +#: ../../include/nav.php:175 msgid "Log me out of this site" msgstr "" -#: ../../include/nav.php:179 ../../boot.php:1723 -#: ../../Zotlabs/Module/Register.php:542 +#: ../../include/nav.php:180 ../../boot.php:1737 +#: ../../Zotlabs/Module/Register.php:543 msgid "Register" msgstr "" -#: ../../include/nav.php:179 +#: ../../include/nav.php:180 msgid "Create an account" msgstr "" -#: ../../include/nav.php:193 +#: ../../include/nav.php:194 ../../include/nav.php:341 +#: ../../Zotlabs/Lib/Apps.php:354 ../../Zotlabs/Module/Layouts.php:184 +msgid "Help" +msgstr "" + +#: ../../include/nav.php:194 msgid "Help and documentation" msgstr "" -#: ../../include/nav.php:207 ../../include/acl_selectors.php:149 -#: ../../include/text.php:1189 ../../include/text.php:1201 -#: ../../Zotlabs/Lib/Apps.php:356 ../../Zotlabs/Widget/Sitesearch.php:37 +#: ../../include/nav.php:208 ../../include/acl_selectors.php:149 +#: ../../include/text.php:1190 ../../include/text.php:1202 +#: ../../Zotlabs/Lib/Apps.php:357 ../../Zotlabs/Widget/Sitesearch.php:37 #: ../../Zotlabs/Widget/Activity_filter.php:210 -#: ../../Zotlabs/Module/Search.php:46 ../../Zotlabs/Module/Connections.php:403 +#: ../../Zotlabs/Module/Search.php:47 ../../Zotlabs/Module/Connections.php:403 msgid "Search" msgstr "" -#: ../../include/nav.php:207 +#: ../../include/nav.php:208 msgid "Search site @name, !forum, #tag, ?docs, content" msgstr "" -#: ../../include/nav.php:213 ../../Zotlabs/Widget/Admin.php:61 +#: ../../include/nav.php:214 ../../Zotlabs/Widget/Admin.php:61 msgid "Admin" msgstr "" -#: ../../include/nav.php:213 +#: ../../include/nav.php:214 msgid "Site Setup and Configuration" msgstr "" -#: ../../include/nav.php:344 ../../Zotlabs/Widget/Notifications.php:175 +#: ../../include/nav.php:345 ../../Zotlabs/Widget/Notifications.php:175 #: ../../Zotlabs/Widget/Messages.php:36 ../../Zotlabs/Module/Defperms.php:254 -#: ../../Zotlabs/Module/New_channel.php:157 -#: ../../Zotlabs/Module/New_channel.php:164 +#: ../../Zotlabs/Module/New_channel.php:158 +#: ../../Zotlabs/Module/New_channel.php:165 msgid "Loading" msgstr "" -#: ../../include/nav.php:349 +#: ../../include/nav.php:350 msgid "@name, #tag, ?doc, content" msgstr "" -#: ../../include/nav.php:350 +#: ../../include/nav.php:351 msgid "Please wait..." msgstr "" -#: ../../include/nav.php:356 ../../Zotlabs/Lib/Apps.php:328 +#: ../../include/nav.php:357 ../../Zotlabs/Lib/Apps.php:329 msgid "Apps" msgstr "" -#: ../../include/nav.php:357 +#: ../../include/nav.php:358 msgid "Channel Apps" msgstr "" -#: ../../include/nav.php:358 +#: ../../include/nav.php:359 msgid "System Apps" msgstr "" -#: ../../include/nav.php:359 +#: ../../include/nav.php:360 msgid "Pinned Apps" msgstr "" -#: ../../include/nav.php:360 +#: ../../include/nav.php:361 msgid "Featured Apps" msgstr "" -#: ../../include/nav.php:446 ../../Zotlabs/Lib/Apps.php:348 -#: ../../Zotlabs/Module/Admin/Channels.php:154 +#: ../../include/nav.php:447 ../../Zotlabs/Lib/Apps.php:349 +#: ../../Zotlabs/Module/Admin/Channels.php:176 msgid "Channel" msgstr "" -#: ../../include/nav.php:449 +#: ../../include/nav.php:450 msgid "Status Messages and Posts" msgstr "" -#: ../../include/nav.php:459 ../../Zotlabs/Module/Help.php:85 +#: ../../include/nav.php:460 ../../Zotlabs/Module/Help.php:242 msgid "About" msgstr "" -#: ../../include/nav.php:462 +#: ../../include/nav.php:463 msgid "Profile Details" msgstr "" -#: ../../include/nav.php:472 ../../include/photos.php:721 +#: ../../include/nav.php:473 ../../include/photos.php:722 msgid "Photo Albums" msgstr "" -#: ../../include/nav.php:477 ../../Zotlabs/Lib/Apps.php:345 +#: ../../include/nav.php:478 ../../Zotlabs/Lib/Apps.php:346 #: ../../Zotlabs/Widget/Notifications.php:108 #: ../../Zotlabs/Widget/Channel_activities.php:125 -#: ../../Zotlabs/Storage/Browser.php:350 ../../Zotlabs/Module/Fbrowser.php:85 +#: ../../Zotlabs/Storage/Browser.php:351 ../../Zotlabs/Module/Fbrowser.php:85 msgid "Files" msgstr "" -#: ../../include/nav.php:480 +#: ../../include/nav.php:481 msgid "Files and Storage" msgstr "" -#: ../../include/nav.php:502 ../../include/nav.php:505 -#: ../../Zotlabs/Lib/Apps.php:335 ../../Zotlabs/Widget/Chatroom_list.php:22 +#: ../../include/nav.php:503 ../../include/nav.php:506 +#: ../../Zotlabs/Lib/Apps.php:336 ../../Zotlabs/Widget/Chatroom_list.php:22 msgid "Chatrooms" msgstr "" -#: ../../include/nav.php:515 ../../Zotlabs/Lib/Apps.php:334 +#: ../../include/nav.php:516 ../../Zotlabs/Lib/Apps.php:335 #: ../../Zotlabs/Module/Bookmarks.php:90 msgid "Bookmarks" msgstr "" -#: ../../include/nav.php:518 +#: ../../include/nav.php:519 msgid "Saved Bookmarks" msgstr "" -#: ../../include/nav.php:526 ../../Zotlabs/Lib/Apps.php:346 +#: ../../include/nav.php:527 ../../Zotlabs/Lib/Apps.php:347 #: ../../Zotlabs/Widget/Channel_activities.php:168 #: ../../Zotlabs/Module/Webpages.php:247 msgid "Webpages" msgstr "" -#: ../../include/nav.php:529 +#: ../../include/nav.php:530 msgid "View Webpages" msgstr "" -#: ../../include/nav.php:537 ../../addon/wiki/Mod_Wiki.php:209 +#: ../../include/nav.php:538 ../../addon/wiki/Mod_Wiki.php:209 #: ../../addon/wiki/Widget/Wiki_list.php:23 ../../addon/wiki/wiki.php:72 msgid "Wikis" msgstr "" -#: ../../include/nav.php:540 ../../Zotlabs/Lib/Apps.php:347 +#: ../../include/nav.php:541 ../../Zotlabs/Lib/Apps.php:348 msgid "Wiki" msgstr "" -#: ../../include/security.php:633 +#: ../../include/security.php:635 msgid "" "The form security token was not correct. This probably happened because the " "form has been opened for too long (>3 hours) before submitting it." msgstr "" -#: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:56 -#: ../../Zotlabs/Module/Profiles.php:748 +#: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:58 +#: ../../Zotlabs/Module/Profiles.php:751 msgid "Miscellaneous" msgstr "" @@ -2999,7 +2981,7 @@ msgstr "" msgid "YYYY-MM-DD or MM-DD" msgstr "" -#: ../../include/datetime.php:238 ../../boot.php:2752 +#: ../../include/datetime.php:238 ../../boot.php:2760 msgid "never" msgstr "" @@ -3072,88 +3054,88 @@ msgstr "" msgid "Happy Birthday %1$s" msgstr "" -#: ../../include/photos.php:152 +#: ../../include/photos.php:153 #, php-format msgid "Image exceeds website size limit of %lu bytes" msgstr "" -#: ../../include/photos.php:163 +#: ../../include/photos.php:164 msgid "Image file is empty." msgstr "" -#: ../../include/photos.php:197 ../../Zotlabs/Module/Cover_photo.php:239 -#: ../../Zotlabs/Module/Profile_photo.php:274 +#: ../../include/photos.php:198 ../../Zotlabs/Module/Cover_photo.php:240 +#: ../../Zotlabs/Module/Profile_photo.php:275 msgid "Unable to process image" msgstr "" -#: ../../include/photos.php:323 +#: ../../include/photos.php:324 msgid "Photo storage failed." msgstr "" -#: ../../include/photos.php:372 +#: ../../include/photos.php:373 msgid "a new photo" msgstr "" -#: ../../include/photos.php:376 +#: ../../include/photos.php:377 #, php-format msgctxt "photo_upload" msgid "%1$s posted %2$s to %3$s" msgstr "" -#: ../../include/photos.php:722 ../../Zotlabs/Module/Photos.php:1339 +#: ../../include/photos.php:723 ../../Zotlabs/Module/Photos.php:1339 #: ../../Zotlabs/Module/Photos.php:1352 ../../Zotlabs/Module/Photos.php:1353 msgid "Recent Photos" msgstr "" -#: ../../include/photos.php:726 +#: ../../include/photos.php:727 msgid "Upload New Photos" msgstr "" -#: ../../include/connections.php:165 +#: ../../include/connections.php:174 msgid "New window" msgstr "" -#: ../../include/connections.php:166 +#: ../../include/connections.php:175 msgid "Open the selected location in a different window or browser tab" msgstr "" -#: ../../include/network.php:412 +#: ../../include/network.php:413 msgid "url: " msgstr "" -#: ../../include/network.php:413 +#: ../../include/network.php:414 msgid "error_code: " msgstr "" -#: ../../include/network.php:414 +#: ../../include/network.php:415 msgid "error_string: " msgstr "" -#: ../../include/network.php:415 +#: ../../include/network.php:416 msgid "content-type: " msgstr "" -#: ../../include/network.php:1770 ../../include/network.php:1771 +#: ../../include/network.php:1774 ../../include/network.php:1775 msgid "Friendica" msgstr "" -#: ../../include/network.php:1772 +#: ../../include/network.php:1776 msgid "OStatus" msgstr "" -#: ../../include/network.php:1773 +#: ../../include/network.php:1777 msgid "GNU-Social" msgstr "" -#: ../../include/network.php:1774 +#: ../../include/network.php:1778 msgid "RSS/Atom" msgstr "" -#: ../../include/network.php:1775 +#: ../../include/network.php:1779 msgid "ActivityPub" msgstr "" -#: ../../include/network.php:1776 ../../addon/openid/MysqlProvider.php:56 +#: ../../include/network.php:1780 ../../addon/openid/MysqlProvider.php:56 #: ../../addon/openid/MysqlProvider.php:57 ../../addon/redred/Mod_Redred.php:69 #: ../../addon/rtof/Mod_Rtof.php:55 ../../Zotlabs/Module/Connedit.php:736 #: ../../Zotlabs/Module/Admin/Accounts.php:316 @@ -3162,59 +3144,59 @@ msgstr "" msgid "Email" msgstr "" -#: ../../include/network.php:1777 +#: ../../include/network.php:1781 msgid "Diaspora" msgstr "" -#: ../../include/network.php:1778 +#: ../../include/network.php:1782 msgid "Facebook" msgstr "" -#: ../../include/network.php:1779 +#: ../../include/network.php:1783 msgid "Zot" msgstr "" -#: ../../include/network.php:1780 +#: ../../include/network.php:1784 msgid "LinkedIn" msgstr "" -#: ../../include/network.php:1781 +#: ../../include/network.php:1785 msgid "XMPP/IM" msgstr "" -#: ../../include/network.php:1782 +#: ../../include/network.php:1786 msgid "MySpace" msgstr "" -#: ../../include/markdown.php:206 ../../include/bbcode.php:575 +#: ../../include/markdown.php:206 ../../include/bbcode.php:576 #, php-format msgid "%1$s wrote the following %2$s %3$s" msgstr "" -#: ../../include/markdown.php:259 ../../include/bbcode.php:660 +#: ../../include/markdown.php:278 ../../include/bbcode.php:661 msgid "spoiler" msgstr "" -#: ../../include/language.php:422 ../../include/text.php:2193 +#: ../../include/language.php:423 ../../include/text.php:2199 msgid "default" msgstr "" -#: ../../include/language.php:435 +#: ../../include/language.php:436 msgid "Select an alternate language" msgstr "" -#: ../../include/menu.php:120 ../../include/channel.php:1538 -#: ../../include/channel.php:1542 ../../addon/cards/cards.php:74 +#: ../../include/menu.php:120 ../../include/channel.php:1539 +#: ../../include/channel.php:1543 ../../addon/cards/cards.php:74 #: ../../addon/cards/Mod_Card_edit.php:99 #: ../../addon/articles/Mod_Article_edit.php:97 #: ../../addon/articles/articles.php:75 ../../addon/wiki/Mod_Wiki.php:214 -#: ../../addon/wiki/Mod_Wiki.php:381 ../../Zotlabs/Lib/Apps.php:616 -#: ../../Zotlabs/Lib/ThreadItem.php:163 ../../Zotlabs/Widget/Cdav.php:144 +#: ../../addon/wiki/Mod_Wiki.php:381 ../../Zotlabs/Lib/Apps.php:617 +#: ../../Zotlabs/Lib/ThreadItem.php:162 ../../Zotlabs/Widget/Cdav.php:144 #: ../../Zotlabs/Widget/Cdav.php:181 ../../Zotlabs/Module/Editwebpage.php:142 #: ../../Zotlabs/Module/Webpages.php:250 ../../Zotlabs/Module/Oauth.php:171 #: ../../Zotlabs/Module/Thing.php:294 ../../Zotlabs/Module/Layouts.php:191 -#: ../../Zotlabs/Module/Menu.php:176 ../../Zotlabs/Module/Admin/Profs.php:175 -#: ../../Zotlabs/Module/Group.php:245 ../../Zotlabs/Module/Blocks.php:158 +#: ../../Zotlabs/Module/Menu.php:176 ../../Zotlabs/Module/Admin/Profs.php:176 +#: ../../Zotlabs/Module/Group.php:246 ../../Zotlabs/Module/Blocks.php:158 #: ../../Zotlabs/Module/Editlayout.php:114 #: ../../Zotlabs/Module/Connections.php:338 #: ../../Zotlabs/Module/Connections.php:387 @@ -3246,7 +3228,7 @@ msgstr "" #: ../../include/acl_selectors.php:136 #: ../../Zotlabs/Lib/PermissionDescription.php:107 -#: ../../Zotlabs/Module/Settings/Privacy.php:65 +#: ../../Zotlabs/Module/Settings/Privacy.php:66 msgid "Only me" msgstr "" @@ -3281,7 +3263,7 @@ msgid "Permissions" msgstr "" #: ../../include/acl_selectors.php:156 ../../Zotlabs/Lib/ThreadItem.php:527 -#: ../../Zotlabs/Widget/Pinned.php:152 ../../Zotlabs/Storage/Browser.php:414 +#: ../../Zotlabs/Widget/Pinned.php:154 ../../Zotlabs/Storage/Browser.php:415 #: ../../Zotlabs/Module/Photos.php:1266 msgid "Close" msgstr "" @@ -3293,102 +3275,102 @@ msgid "" "permissions set who is allowed to view the post." msgstr "" -#: ../../include/text.php:561 +#: ../../include/text.php:562 msgid "prev" msgstr "" -#: ../../include/text.php:563 +#: ../../include/text.php:564 msgid "first" msgstr "" -#: ../../include/text.php:592 +#: ../../include/text.php:593 msgid "last" msgstr "" -#: ../../include/text.php:595 +#: ../../include/text.php:596 msgid "next" msgstr "" -#: ../../include/text.php:613 +#: ../../include/text.php:614 msgid "older" msgstr "" -#: ../../include/text.php:615 +#: ../../include/text.php:616 msgid "newer" msgstr "" -#: ../../include/text.php:1085 ../../Zotlabs/Module/Viewconnections.php:80 +#: ../../include/text.php:1086 ../../Zotlabs/Module/Viewconnections.php:80 #: ../../Zotlabs/Module/Connections.php:306 msgid "Accepts" msgstr "" -#: ../../include/text.php:1088 ../../Zotlabs/Module/Viewconnections.php:83 +#: ../../include/text.php:1089 ../../Zotlabs/Module/Viewconnections.php:83 #: ../../Zotlabs/Module/Connections.php:309 msgid "Comments" msgstr "" -#: ../../include/text.php:1093 ../../Zotlabs/Module/Viewconnections.php:88 +#: ../../include/text.php:1094 ../../Zotlabs/Module/Viewconnections.php:88 #: ../../Zotlabs/Module/Connections.php:314 msgid "Stream items" msgstr "" -#: ../../include/text.php:1098 ../../Zotlabs/Module/Viewconnections.php:93 +#: ../../include/text.php:1099 ../../Zotlabs/Module/Viewconnections.php:93 #: ../../Zotlabs/Module/Connections.php:319 msgid "Wall posts" msgstr "" -#: ../../include/text.php:1102 ../../Zotlabs/Module/Viewconnections.php:97 +#: ../../include/text.php:1103 ../../Zotlabs/Module/Viewconnections.php:97 #: ../../Zotlabs/Module/Connections.php:323 msgid "Nothing" msgstr "" -#: ../../include/text.php:1115 +#: ../../include/text.php:1116 #, php-format msgid "View all %s connections" msgstr "" -#: ../../include/text.php:1178 +#: ../../include/text.php:1179 #, php-format msgid "Network: %s" msgstr "" -#: ../../include/text.php:1190 ../../include/text.php:1202 +#: ../../include/text.php:1191 ../../include/text.php:1203 #: ../../addon/cards/Mod_Cards.php:116 #: ../../addon/articles/Mod_Articles.php:120 -#: ../../Zotlabs/Module/Admin/Queueworker.php:114 -#: ../../Zotlabs/Module/Admin/Profs.php:94 -#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Rbmark.php:31 -#: ../../Zotlabs/Module/Rbmark.php:103 ../../Zotlabs/Module/Filer.php:54 +#: ../../Zotlabs/Module/Admin/Queueworker.php:115 +#: ../../Zotlabs/Module/Admin/Profs.php:95 +#: ../../Zotlabs/Module/Admin/Profs.php:115 ../../Zotlabs/Module/Rbmark.php:29 +#: ../../Zotlabs/Module/Rbmark.php:85 ../../Zotlabs/Module/Filer.php:54 msgid "Save" msgstr "" -#: ../../include/text.php:1502 +#: ../../include/text.php:1503 msgid "May" msgstr "" -#: ../../include/text.php:1576 +#: ../../include/text.php:1577 msgid "Unknown attachment" msgstr "" -#: ../../include/text.php:1579 ../../Zotlabs/Storage/Browser.php:382 +#: ../../include/text.php:1580 ../../Zotlabs/Storage/Browser.php:383 #: ../../Zotlabs/Module/Sharedwithme.php:109 msgid "Size" msgstr "" -#: ../../include/text.php:1622 +#: ../../include/text.php:1623 msgid "remove category" msgstr "" -#: ../../include/text.php:1700 +#: ../../include/text.php:1701 msgid "remove from file" msgstr "" -#: ../../include/text.php:1887 +#: ../../include/text.php:1888 msgid "Download binary/encrypted content" msgstr "" -#: ../../include/text.php:1945 ../../include/text.php:1954 -#: ../../include/text.php:1981 ../../include/text.php:1990 +#: ../../include/text.php:1946 ../../include/text.php:1955 +#: ../../include/text.php:1982 ../../include/text.php:1991 #, php-format msgctxt "noun" msgid "%d Vote" @@ -3396,7 +3378,7 @@ msgid_plural "%d Votes" msgstr[0] "" msgstr[1] "" -#: ../../include/text.php:1997 +#: ../../include/text.php:1998 #, php-format msgctxt "noun" msgid "%d Vote in total" @@ -3404,208 +3386,208 @@ msgid_plural "%d Votes in total" msgstr[0] "" msgstr[1] "" -#: ../../include/text.php:2003 +#: ../../include/text.php:2004 msgid "Poll has ended" msgstr "" -#: ../../include/text.php:2006 +#: ../../include/text.php:2007 #, php-format msgid "Poll ends in %s" msgstr "" -#: ../../include/text.php:2013 ../../Zotlabs/Lib/ThreadItem.php:467 +#: ../../include/text.php:2014 ../../Zotlabs/Lib/ThreadItem.php:467 msgid "Vote" msgstr "" -#: ../../include/text.php:2168 +#: ../../include/text.php:2174 msgid "Link to Source" msgstr "" -#: ../../include/text.php:2201 +#: ../../include/text.php:2207 msgid "Page layout" msgstr "" -#: ../../include/text.php:2201 +#: ../../include/text.php:2207 msgid "You can create your own with the layouts tool" msgstr "" -#: ../../include/text.php:2211 ../../addon/wiki/Mod_Wiki.php:220 +#: ../../include/text.php:2217 ../../addon/wiki/Mod_Wiki.php:220 #: ../../addon/wiki/Mod_Wiki.php:368 ../../addon/wiki/Mod_Wiki.php:903 #: ../../addon/wiki/Widget/Wiki_pages.php:68 msgid "BBcode" msgstr "" -#: ../../include/text.php:2212 +#: ../../include/text.php:2218 msgid "HTML" msgstr "" -#: ../../include/text.php:2213 ../../addon/wiki/Mod_Wiki.php:220 +#: ../../include/text.php:2219 ../../addon/wiki/Mod_Wiki.php:220 #: ../../addon/wiki/Mod_Wiki.php:368 ../../addon/wiki/Mod_Wiki.php:903 #: ../../addon/wiki/Widget/Wiki_pages.php:68 ../../addon/mdpost/mdpost.php:41 msgid "Markdown" msgstr "" -#: ../../include/text.php:2214 ../../addon/wiki/Mod_Wiki.php:220 +#: ../../include/text.php:2220 ../../addon/wiki/Mod_Wiki.php:220 #: ../../addon/wiki/Mod_Wiki.php:903 ../../addon/wiki/Widget/Wiki_pages.php:68 msgid "Text" msgstr "" -#: ../../include/text.php:2215 +#: ../../include/text.php:2221 msgid "Comanche Layout" msgstr "" -#: ../../include/text.php:2220 +#: ../../include/text.php:2226 msgid "PHP" msgstr "" -#: ../../include/text.php:2232 +#: ../../include/text.php:2238 msgid "Page content type" msgstr "" -#: ../../include/text.php:2365 +#: ../../include/text.php:2371 msgid "activity" msgstr "" -#: ../../include/text.php:2368 +#: ../../include/text.php:2374 msgid "poll" msgstr "" -#: ../../include/text.php:2481 +#: ../../include/text.php:2487 msgid "a-z, 0-9, -, and _ only" msgstr "" -#: ../../include/text.php:2789 +#: ../../include/text.php:2795 msgid "Design Tools" msgstr "" -#: ../../include/text.php:2792 ../../Zotlabs/Module/Blocks.php:152 +#: ../../include/text.php:2798 ../../Zotlabs/Module/Blocks.php:152 msgid "Blocks" msgstr "" -#: ../../include/text.php:2793 ../../Zotlabs/Module/Menu.php:171 +#: ../../include/text.php:2799 ../../Zotlabs/Module/Menu.php:171 msgid "Menus" msgstr "" -#: ../../include/text.php:2794 ../../Zotlabs/Module/Layouts.php:182 +#: ../../include/text.php:2800 ../../Zotlabs/Module/Layouts.php:182 msgid "Layouts" msgstr "" -#: ../../include/text.php:2795 +#: ../../include/text.php:2801 msgid "Pages" msgstr "" -#: ../../include/text.php:2807 +#: ../../include/text.php:2813 msgid "Import" msgstr "" -#: ../../include/text.php:2808 +#: ../../include/text.php:2814 msgid "Import website..." msgstr "" -#: ../../include/text.php:2809 +#: ../../include/text.php:2815 msgid "Select folder to import" msgstr "" -#: ../../include/text.php:2810 +#: ../../include/text.php:2816 msgid "Import from a zipped folder:" msgstr "" -#: ../../include/text.php:2811 +#: ../../include/text.php:2817 msgid "Import from cloud files:" msgstr "" -#: ../../include/text.php:2812 +#: ../../include/text.php:2818 msgid "/cloud/channel/path/to/folder" msgstr "" -#: ../../include/text.php:2813 +#: ../../include/text.php:2819 msgid "Enter path to website files" msgstr "" -#: ../../include/text.php:2814 +#: ../../include/text.php:2820 msgid "Select folder" msgstr "" -#: ../../include/text.php:2815 +#: ../../include/text.php:2821 msgid "Export website..." msgstr "" -#: ../../include/text.php:2816 +#: ../../include/text.php:2822 msgid "Export to a zip file" msgstr "" -#: ../../include/text.php:2817 +#: ../../include/text.php:2823 msgid "website.zip" msgstr "" -#: ../../include/text.php:2818 +#: ../../include/text.php:2824 msgid "Enter a name for the zip file." msgstr "" -#: ../../include/text.php:2819 +#: ../../include/text.php:2825 msgid "Export to cloud files" msgstr "" -#: ../../include/text.php:2820 +#: ../../include/text.php:2826 msgid "/path/to/export/folder" msgstr "" -#: ../../include/text.php:2821 +#: ../../include/text.php:2827 msgid "Enter a path to a cloud files destination." msgstr "" -#: ../../include/text.php:2822 +#: ../../include/text.php:2828 msgid "Specify folder" msgstr "" -#: ../../include/channel.php:49 +#: ../../include/channel.php:50 msgid "Unable to obtain identity information from database" msgstr "" -#: ../../include/channel.php:82 +#: ../../include/channel.php:83 msgid "Empty name" msgstr "" -#: ../../include/channel.php:85 +#: ../../include/channel.php:86 msgid "Name too long" msgstr "" -#: ../../include/channel.php:202 +#: ../../include/channel.php:203 msgid "No account identifier" msgstr "" -#: ../../include/channel.php:214 ../../Zotlabs/Module/Register.php:95 +#: ../../include/channel.php:215 ../../Zotlabs/Module/Register.php:96 msgid "Nickname is required." msgstr "" -#: ../../include/channel.php:228 ../../include/channel.php:667 -#: ../../Zotlabs/Module/Register.php:100 ../../Zotlabs/Module/Changeaddr.php:46 +#: ../../include/channel.php:229 ../../include/channel.php:668 +#: ../../Zotlabs/Module/Register.php:101 ../../Zotlabs/Module/Changeaddr.php:46 msgid "Reserved nickname. Please choose another." msgstr "" -#: ../../include/channel.php:233 ../../include/channel.php:672 -#: ../../Zotlabs/Module/Register.php:105 ../../Zotlabs/Module/Changeaddr.php:51 +#: ../../include/channel.php:234 ../../include/channel.php:673 +#: ../../Zotlabs/Module/Register.php:106 ../../Zotlabs/Module/Changeaddr.php:51 msgid "" "Nickname has unsupported characters or is already being used on this site." msgstr "" -#: ../../include/channel.php:299 +#: ../../include/channel.php:300 msgid "Unable to retrieve created identity" msgstr "" -#: ../../include/channel.php:410 +#: ../../include/channel.php:411 msgid "Default Profile" msgstr "" -#: ../../include/channel.php:600 ../../include/channel.php:689 +#: ../../include/channel.php:601 ../../include/channel.php:690 msgid "Unable to retrieve modified identity" msgstr "" -#: ../../include/channel.php:1381 +#: ../../include/channel.php:1382 msgid "Requested channel is not available" msgstr "" -#: ../../include/channel.php:1435 ../../addon/cards/Mod_Cards.php:42 +#: ../../include/channel.php:1436 ../../addon/cards/Mod_Cards.php:42 #: ../../addon/articles/Mod_Articles.php:46 #: ../../addon/gallery/Mod_Gallery.php:49 #: ../../Zotlabs/Module/Editwebpage.php:32 ../../Zotlabs/Module/Webpages.php:39 @@ -3617,268 +3599,268 @@ msgstr "" msgid "Requested profile is not available." msgstr "" -#: ../../include/channel.php:1531 ../../Zotlabs/Module/Profiles.php:740 +#: ../../include/channel.php:1532 ../../Zotlabs/Module/Profiles.php:743 msgid "Change profile photo" msgstr "" -#: ../../include/channel.php:1539 +#: ../../include/channel.php:1540 msgid "Create New Profile" msgstr "" -#: ../../include/channel.php:1557 ../../Zotlabs/Module/Profiles.php:837 +#: ../../include/channel.php:1558 ../../Zotlabs/Module/Profiles.php:841 msgid "Profile Image" msgstr "" -#: ../../include/channel.php:1560 +#: ../../include/channel.php:1561 msgid "Visible to everybody" msgstr "" -#: ../../include/channel.php:1561 ../../Zotlabs/Module/Profiles.php:737 -#: ../../Zotlabs/Module/Profiles.php:841 +#: ../../include/channel.php:1562 ../../Zotlabs/Module/Profiles.php:740 +#: ../../Zotlabs/Module/Profiles.php:845 msgid "Edit visibility" msgstr "" -#: ../../include/channel.php:1643 ../../include/channel.php:1771 +#: ../../include/channel.php:1644 ../../include/channel.php:1772 msgid "Gender:" msgstr "" -#: ../../include/channel.php:1644 ../../include/channel.php:1817 +#: ../../include/channel.php:1645 ../../include/channel.php:1818 msgid "Status:" msgstr "" -#: ../../include/channel.php:1645 ../../include/channel.php:1841 +#: ../../include/channel.php:1646 ../../include/channel.php:1842 msgid "Homepage:" msgstr "" -#: ../../include/channel.php:1646 ../../include/channel.php:1843 +#: ../../include/channel.php:1647 ../../include/channel.php:1844 #: ../../Zotlabs/Module/Directory.php:368 msgid "Hometown:" msgstr "" -#: ../../include/channel.php:1647 +#: ../../include/channel.php:1648 msgid "Online Now" msgstr "" -#: ../../include/channel.php:1696 +#: ../../include/channel.php:1697 msgid "This channel has not added a profile description yet" msgstr "" -#: ../../include/channel.php:1698 +#: ../../include/channel.php:1699 msgid "Change your profile photo" msgstr "" -#: ../../include/channel.php:1730 +#: ../../include/channel.php:1731 msgid "Trans" msgstr "" -#: ../../include/channel.php:1769 +#: ../../include/channel.php:1770 msgid "Full Name:" msgstr "" -#: ../../include/channel.php:1802 +#: ../../include/channel.php:1803 msgid "j F, Y" msgstr "" -#: ../../include/channel.php:1803 +#: ../../include/channel.php:1804 msgid "j F" msgstr "" -#: ../../include/channel.php:1810 +#: ../../include/channel.php:1811 msgid "Birthday:" msgstr "" -#: ../../include/channel.php:1814 ../../Zotlabs/Module/Directory.php:349 +#: ../../include/channel.php:1815 ../../Zotlabs/Module/Directory.php:349 msgid "Age:" msgstr "" -#: ../../include/channel.php:1823 +#: ../../include/channel.php:1824 #, php-format msgid "for %1$d %2$s" msgstr "" -#: ../../include/channel.php:1835 +#: ../../include/channel.php:1836 msgid "Tags:" msgstr "" -#: ../../include/channel.php:1839 +#: ../../include/channel.php:1840 msgid "Sexual Preference:" msgstr "" -#: ../../include/channel.php:1845 +#: ../../include/channel.php:1846 msgid "Political Views:" msgstr "" -#: ../../include/channel.php:1847 +#: ../../include/channel.php:1848 msgid "Religion:" msgstr "" -#: ../../include/channel.php:1849 ../../Zotlabs/Module/Directory.php:370 +#: ../../include/channel.php:1850 ../../Zotlabs/Module/Directory.php:370 msgid "About:" msgstr "" -#: ../../include/channel.php:1851 +#: ../../include/channel.php:1852 msgid "Hobbies/Interests:" msgstr "" -#: ../../include/channel.php:1853 +#: ../../include/channel.php:1854 msgid "Likes:" msgstr "" -#: ../../include/channel.php:1855 +#: ../../include/channel.php:1856 msgid "Dislikes:" msgstr "" -#: ../../include/channel.php:1857 +#: ../../include/channel.php:1858 msgid "Contact information and Social Networks:" msgstr "" -#: ../../include/channel.php:1859 +#: ../../include/channel.php:1860 msgid "My other channels:" msgstr "" -#: ../../include/channel.php:1861 +#: ../../include/channel.php:1862 msgid "Musical interests:" msgstr "" -#: ../../include/channel.php:1863 +#: ../../include/channel.php:1864 msgid "Books, literature:" msgstr "" -#: ../../include/channel.php:1865 +#: ../../include/channel.php:1866 msgid "Television:" msgstr "" -#: ../../include/channel.php:1867 +#: ../../include/channel.php:1868 msgid "Film/dance/culture/entertainment:" msgstr "" -#: ../../include/channel.php:1869 +#: ../../include/channel.php:1870 msgid "Love/Romance:" msgstr "" -#: ../../include/channel.php:1871 +#: ../../include/channel.php:1872 msgid "Work/employment:" msgstr "" -#: ../../include/channel.php:1873 +#: ../../include/channel.php:1874 msgid "School/education:" msgstr "" -#: ../../include/channel.php:1894 ../../Zotlabs/Lib/Apps.php:365 -#: ../../Zotlabs/Module/Profperm.php:113 +#: ../../include/channel.php:1895 ../../Zotlabs/Lib/Apps.php:366 +#: ../../Zotlabs/Module/Profperm.php:114 msgid "Profile" msgstr "" -#: ../../include/channel.php:1896 +#: ../../include/channel.php:1897 msgid "Like this thing" msgstr "" -#: ../../include/channel.php:1897 +#: ../../include/channel.php:1898 msgid "Export" msgstr "" -#: ../../include/channel.php:2350 +#: ../../include/channel.php:2351 msgid "cover photo" msgstr "" -#: ../../include/channel.php:2631 ../../boot.php:1747 +#: ../../include/channel.php:2632 ../../boot.php:1761 #: ../../Zotlabs/Module/Rmagic.php:96 msgid "Remote Authentication" msgstr "" -#: ../../include/channel.php:2632 ../../Zotlabs/Module/Rmagic.php:97 +#: ../../include/channel.php:2633 ../../Zotlabs/Module/Rmagic.php:97 msgid "Enter your channel address (e.g. channel@example.com)" msgstr "" -#: ../../include/channel.php:2633 ../../Zotlabs/Module/Rmagic.php:98 +#: ../../include/channel.php:2634 ../../Zotlabs/Module/Rmagic.php:98 msgid "Authenticate" msgstr "" -#: ../../include/channel.php:2793 ../../Zotlabs/Module/Admin/Accounts.php:184 +#: ../../include/channel.php:2794 ../../Zotlabs/Module/Admin/Accounts.php:184 #, php-format msgid "Account '%s' deleted" msgstr "" -#: ../../include/bbcode.php:233 ../../include/bbcode.php:993 -#: ../../include/bbcode.php:1613 ../../include/bbcode.php:1621 +#: ../../include/bbcode.php:234 ../../include/bbcode.php:994 +#: ../../include/bbcode.php:1659 ../../include/bbcode.php:1667 msgid "Image/photo" msgstr "" -#: ../../include/bbcode.php:285 +#: ../../include/bbcode.php:286 msgid "Encrypted content" msgstr "" -#: ../../include/bbcode.php:341 +#: ../../include/bbcode.php:342 #, php-format msgid "Install %1$s element %2$s" msgstr "" -#: ../../include/bbcode.php:345 +#: ../../include/bbcode.php:346 #, php-format msgid "" "This post contains an installable %s element, however you lack permissions " "to install it on this site." msgstr "" -#: ../../include/bbcode.php:355 ../../Zotlabs/Module/Impel.php:47 +#: ../../include/bbcode.php:356 ../../Zotlabs/Module/Impel.php:47 msgid "webpage" msgstr "" -#: ../../include/bbcode.php:358 ../../Zotlabs/Module/Impel.php:57 +#: ../../include/bbcode.php:359 ../../Zotlabs/Module/Impel.php:57 msgid "layout" msgstr "" -#: ../../include/bbcode.php:361 ../../Zotlabs/Module/Impel.php:52 +#: ../../include/bbcode.php:362 ../../Zotlabs/Module/Impel.php:52 msgid "block" msgstr "" -#: ../../include/bbcode.php:364 ../../Zotlabs/Module/Impel.php:64 +#: ../../include/bbcode.php:365 ../../Zotlabs/Module/Impel.php:64 msgid "menu" msgstr "" -#: ../../include/bbcode.php:567 +#: ../../include/bbcode.php:568 msgid "card" msgstr "" -#: ../../include/bbcode.php:569 +#: ../../include/bbcode.php:570 msgid "article" msgstr "" -#: ../../include/bbcode.php:652 ../../include/bbcode.php:660 +#: ../../include/bbcode.php:653 ../../include/bbcode.php:661 msgid "Click to open/close" msgstr "" -#: ../../include/bbcode.php:673 +#: ../../include/bbcode.php:674 msgid "View article" msgstr "" -#: ../../include/bbcode.php:673 +#: ../../include/bbcode.php:674 msgid "View summary" msgstr "" -#: ../../include/bbcode.php:1117 ../../include/bbcode.php:1299 +#: ../../include/bbcode.php:1127 ../../include/bbcode.php:1312 #: ../../addon/wiki/Lib/NativeWikiPage.php:630 msgid "Different viewers will see this text differently" msgstr "" -#: ../../include/bbcode.php:1589 +#: ../../include/bbcode.php:1635 msgid "$1 wrote:" msgstr "" -#: ../../include/import.php:30 +#: ../../include/import.php:31 msgid "Unable to import a removed channel." msgstr "" -#: ../../include/import.php:56 +#: ../../include/import.php:57 msgid "" "Cannot create a duplicate channel identifier on this system. Import failed." msgstr "" -#: ../../include/import.php:77 ../../addon/diaspora/import_diaspora.php:43 +#: ../../include/import.php:78 ../../addon/diaspora/import_diaspora.php:43 msgid "Unable to create a unique channel address. Import failed." msgstr "" -#: ../../include/import.php:128 +#: ../../include/import.php:129 msgid "Cloned channel not found. Import failed." msgstr "" @@ -3906,14 +3888,6 @@ msgstr "" msgid "IRC Chatroom" msgstr "" -#: ../../addon/smileybutton/Mod_Smileybutton.php:42 -msgid "Hide the button and show the smilies directly." -msgstr "" - -#: ../../addon/smileybutton/Mod_Smileybutton.php:50 -msgid "Smileybutton Settings" -msgstr "" - #: ../../addon/fediquest/fediquest.php:211 msgid "ERROR: word length is not correct!" msgstr "" @@ -4062,7 +4036,7 @@ msgstr "" msgid "Send email to all members" msgstr "" -#: ../../addon/hubwall/hubwall.php:33 ../../Zotlabs/Lib/Enotify.php:65 +#: ../../addon/hubwall/hubwall.php:33 ../../Zotlabs/Lib/Enotify.php:66 #, php-format msgid "%s Administrator" msgstr "" @@ -4071,24 +4045,24 @@ msgstr "" msgid "No recipients found." msgstr "" -#: ../../addon/hubwall/hubwall.php:73 +#: ../../addon/hubwall/hubwall.php:74 #, php-format msgid "%1$d of %2$d messages sent." msgstr "" -#: ../../addon/hubwall/hubwall.php:81 +#: ../../addon/hubwall/hubwall.php:82 msgid "Send email to all hub members." msgstr "" -#: ../../addon/hubwall/hubwall.php:92 ../../addon/mailtest/mailtest.php:96 +#: ../../addon/hubwall/hubwall.php:93 ../../addon/mailtest/mailtest.php:96 msgid "Message subject" msgstr "" -#: ../../addon/hubwall/hubwall.php:93 +#: ../../addon/hubwall/hubwall.php:94 msgid "Sender Email address" msgstr "" -#: ../../addon/hubwall/hubwall.php:94 +#: ../../addon/hubwall/hubwall.php:95 msgid "Test mode (only send to hub administrator)" msgstr "" @@ -4132,7 +4106,7 @@ msgid "Last Name" msgstr "" #: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/Mod_Redred.php:73 -#: ../../boot.php:1740 +#: ../../boot.php:1754 msgid "Nickname" msgstr "" @@ -4165,11 +4139,11 @@ msgid "Profile Photo 128px" msgstr "" #: ../../addon/openid/MysqlProvider.php:68 -#: ../../Zotlabs/Module/Profiles.php:779 +#: ../../Zotlabs/Module/Profiles.php:782 msgid "Homepage URL" msgstr "" -#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:362 +#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:363 msgid "Language" msgstr "" @@ -4190,7 +4164,7 @@ msgid "Birthdate" msgstr "" #: ../../addon/openid/MysqlProvider.php:74 -#: ../../Zotlabs/Module/Profiles.php:452 +#: ../../Zotlabs/Module/Profiles.php:453 msgid "Gender" msgstr "" @@ -4294,7 +4268,7 @@ msgid "Unknown error. Please try again later." msgstr "" #: ../../addon/openclipatar/openclipatar.php:299 -#: ../../Zotlabs/Module/Profile_photo.php:268 +#: ../../Zotlabs/Module/Profile_photo.php:269 msgid "" "Shift-reload the page or clear browser cache if the new photo does not " "display immediately." @@ -4381,10 +4355,10 @@ msgctxt "opensearch" msgid "$Projectname" msgstr "" -#: ../../addon/opensearch/opensearch.php:42 ../../Zotlabs/Lib/Enotify.php:66 -#: ../../Zotlabs/Module/Home.php:87 ../../Zotlabs/Module/Home.php:95 -#: ../../Zotlabs/Module/Invite.php:238 ../../Zotlabs/Module/Invite.php:507 -#: ../../Zotlabs/Module/Invite.php:521 +#: ../../addon/opensearch/opensearch.php:42 ../../Zotlabs/Lib/Enotify.php:67 +#: ../../Zotlabs/Module/Home.php:88 ../../Zotlabs/Module/Home.php:96 +#: ../../Zotlabs/Module/Invite.php:239 ../../Zotlabs/Module/Invite.php:508 +#: ../../Zotlabs/Module/Invite.php:522 msgid "$Projectname" msgstr "" @@ -4501,7 +4475,7 @@ msgstr "" #: ../../addon/faces/faces.php:291 ../../addon/twitter/twitter.php:493 #: ../../addon/openstreetmap/openstreetmap.php:171 #: ../../Zotlabs/Module/Defperms.php:111 -#: ../../Zotlabs/Module/Settings/Channel.php:150 +#: ../../Zotlabs/Module/Settings/Channel.php:151 msgid "Settings updated." msgstr "" @@ -4560,7 +4534,7 @@ msgstr "" msgid "Page Header" msgstr "" -#: ../../addon/buglink/buglink.php:16 ../../Zotlabs/Lib/Apps.php:333 +#: ../../addon/buglink/buglink.php:16 ../../Zotlabs/Lib/Apps.php:334 msgid "Report Bug" msgstr "" @@ -4585,7 +4559,7 @@ msgid "Insane Journal Crosspost Connector App" msgstr "" #: ../../addon/ijpost/Mod_Ijpost.php:35 ../../addon/xmpp/Mod_Xmpp.php:35 -#: ../../Zotlabs/Module/Invite.php:69 ../../Zotlabs/Module/Lang.php:20 +#: ../../Zotlabs/Module/Invite.php:70 ../../Zotlabs/Module/Lang.php:20 msgid "Not Installed" msgstr "" @@ -4658,7 +4632,7 @@ msgid "Hubzilla Crosspost Connector" msgstr "" #: ../../addon/cards/cards.php:48 ../../addon/cards/cards.php:160 -#: ../../addon/cards/Mod_Cards.php:209 ../../Zotlabs/Lib/Apps.php:331 +#: ../../addon/cards/Mod_Cards.php:209 ../../Zotlabs/Lib/Apps.php:332 msgid "Cards" msgstr "" @@ -4666,6 +4640,14 @@ msgstr "" msgid "View Cards" msgstr "" +#: ../../addon/cards/cards.php:104 ../../addon/articles/articles.php:105 +#: ../../addon/wiki/Lib/NativeWikiPage.php:545 +#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Display.php:155 +#: ../../Zotlabs/Module/Block.php:77 ../../Zotlabs/Module/Help.php:175 +#: ../../Zotlabs/Web/Router.php:188 +msgid "Page not found." +msgstr "" + #: ../../addon/cards/Mod_Cards.php:115 msgid "Add Card" msgstr "" @@ -4780,12 +4762,12 @@ msgstr "" msgid "Activitypub Protocol" msgstr "" -#: ../../addon/pubcrawl/pubcrawl.php:1073 ../../addon/diaspora/diaspora.php:415 +#: ../../addon/pubcrawl/pubcrawl.php:1078 ../../addon/diaspora/diaspora.php:415 #: ../../Zotlabs/Module/Contactedit.php:494 msgid "Refresh failed" msgstr "" -#: ../../addon/pubcrawl/pubcrawl.php:1080 ../../addon/diaspora/diaspora.php:420 +#: ../../addon/pubcrawl/pubcrawl.php:1085 ../../addon/diaspora/diaspora.php:420 #: ../../Zotlabs/Module/Contactedit.php:491 msgid "Refresh succeeded" msgstr "" @@ -4873,7 +4855,7 @@ msgid "Import completed." msgstr "" #: ../../addon/diaspora/p.php:48 ../../addon/diaspora/util.php:346 -#: ../../addon/diaspora/util.php:359 ../../Zotlabs/Lib/Enotify.php:61 +#: ../../addon/diaspora/util.php:359 ../../Zotlabs/Lib/Enotify.php:62 msgid "$projectname" msgstr "" @@ -4970,8 +4952,8 @@ msgid "No channels currently blocked" msgstr "" #: ../../addon/superblock/Mod_Superblock.php:90 -#: ../../Zotlabs/Module/Cover_photo.php:381 ../../Zotlabs/Module/Tagrm.php:137 -#: ../../Zotlabs/Module/Admin/Addons.php:462 +#: ../../Zotlabs/Module/Cover_photo.php:382 ../../Zotlabs/Module/Tagrm.php:137 +#: ../../Zotlabs/Module/Admin/Addons.php:463 #: ../../Zotlabs/Module/Photos.php:994 msgid "Remove" msgstr "" @@ -5113,9 +5095,9 @@ msgstr "" #: ../../addon/rendezvous/rendezvous.php:172 ../../addon/wiki/Mod_Wiki.php:221 #: ../../addon/wiki/Lib/NativeWikiPage.php:588 #: ../../addon/wiki/Widget/Wiki_page_history.php:28 -#: ../../Zotlabs/Storage/Browser.php:380 ../../Zotlabs/Module/Oauth.php:111 +#: ../../Zotlabs/Storage/Browser.php:381 ../../Zotlabs/Module/Oauth.php:111 #: ../../Zotlabs/Module/Oauth.php:137 ../../Zotlabs/Module/Connedit.php:732 -#: ../../Zotlabs/Module/Admin/Channels.php:159 +#: ../../Zotlabs/Module/Admin/Channels.php:181 #: ../../Zotlabs/Module/Sharedwithme.php:107 ../../Zotlabs/Module/Chat.php:256 #: ../../Zotlabs/Module/Cdav.php:1368 ../../Zotlabs/Module/Oauth2.php:116 #: ../../Zotlabs/Module/Oauth2.php:144 @@ -5125,7 +5107,7 @@ msgstr "" #: ../../addon/rendezvous/rendezvous.php:173 #: ../../addon/cart/submodules/hzservices.php:657 #: ../../addon/cart/submodules/manualcat.php:260 -#: ../../Zotlabs/Module/Appman.php:220 ../../Zotlabs/Module/Rbmark.php:100 +#: ../../Zotlabs/Module/Appman.php:220 ../../Zotlabs/Module/Rbmark.php:82 #: ../../Zotlabs/Module/Cdav.php:1005 msgid "Description" msgstr "" @@ -5205,7 +5187,7 @@ msgstr "" msgid "You have no rendezvous. Press the button above to create a rendezvous!" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:401 ../../Zotlabs/Module/Setup.php:748 +#: ../../addon/rendezvous/rendezvous.php:401 ../../Zotlabs/Module/Setup.php:751 msgid "Errors encountered creating database tables." msgstr "" @@ -5314,7 +5296,7 @@ msgid "Edit Article" msgstr "" #: ../../addon/articles/articles.php:48 ../../addon/articles/articles.php:160 -#: ../../addon/articles/Mod_Articles.php:228 ../../Zotlabs/Lib/Apps.php:330 +#: ../../addon/articles/Mod_Articles.php:228 ../../Zotlabs/Lib/Apps.php:331 msgid "Articles" msgstr "" @@ -5351,18 +5333,18 @@ msgstr "" msgid "Error downloading wiki: " msgstr "" -#: ../../addon/wiki/Mod_Wiki.php:215 ../../Zotlabs/Storage/Browser.php:407 +#: ../../addon/wiki/Mod_Wiki.php:215 ../../Zotlabs/Storage/Browser.php:408 msgid "Download" msgstr "" #: ../../addon/wiki/Mod_Wiki.php:216 ../../addon/wiki/Mod_Wiki.php:406 #: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Module/Layouts.php:196 -#: ../../Zotlabs/Module/Pubsites.php:62 ../../Zotlabs/Module/Blocks.php:164 +#: ../../Zotlabs/Module/Pubsites.php:63 ../../Zotlabs/Module/Blocks.php:164 msgid "View" msgstr "" #: ../../addon/wiki/Mod_Wiki.php:217 ../../Zotlabs/Module/Manage.php:137 -#: ../../Zotlabs/Module/Profiles.php:848 +#: ../../Zotlabs/Module/Profiles.php:852 msgid "Create New" msgstr "" @@ -5374,7 +5356,7 @@ msgstr "" msgid "Content type" msgstr "" -#: ../../addon/wiki/Mod_Wiki.php:222 ../../Zotlabs/Storage/Browser.php:381 +#: ../../addon/wiki/Mod_Wiki.php:222 ../../Zotlabs/Storage/Browser.php:382 msgid "Type" msgstr "" @@ -5432,8 +5414,8 @@ msgstr "" msgid "Embed image from photo albums" msgstr "" -#: ../../addon/wiki/Mod_Wiki.php:402 ../../Zotlabs/Module/Cover_photo.php:389 -#: ../../Zotlabs/Module/Profile_photo.php:556 +#: ../../addon/wiki/Mod_Wiki.php:402 ../../Zotlabs/Module/Cover_photo.php:390 +#: ../../Zotlabs/Module/Profile_photo.php:557 msgid "Choose a different album" msgstr "" @@ -5704,7 +5686,7 @@ msgid "New registration" msgstr "" #: ../../addon/notifyadmin/notifyadmin.php:40 -#: ../../Zotlabs/Module/Invite.php:265 +#: ../../Zotlabs/Module/Invite.php:266 #, php-format msgid "%s : Message delivery failed." msgstr "" @@ -5719,7 +5701,7 @@ msgid "Post to GNU social" msgstr "" #: ../../addon/statusnet/statusnet.php:593 -#: ../../Zotlabs/Module/Admin/Site.php:409 +#: ../../Zotlabs/Module/Admin/Site.php:410 msgid "Site name" msgstr "" @@ -6420,7 +6402,7 @@ msgstr "" msgid "Brief description or title" msgstr "" -#: ../../addon/workflow/workflow.php:2661 ../../Zotlabs/Lib/Apps.php:373 +#: ../../addon/workflow/workflow.php:2661 ../../Zotlabs/Lib/Apps.php:374 #: ../../Zotlabs/Widget/Notes.php:38 msgid "Notes" msgstr "" @@ -6485,7 +6467,7 @@ msgid "Files imported" msgstr "" #: ../../addon/content_import/Mod_content_import.php:133 -#: ../../Zotlabs/Lib/Apps.php:337 +#: ../../Zotlabs/Lib/Apps.php:338 msgid "Content Import" msgstr "" @@ -6676,509 +6658,509 @@ msgstr "" msgid "I won!" msgstr "" -#: ../../boot.php:1722 +#: ../../boot.php:1736 msgid "Create an account to access services and applications" msgstr "" -#: ../../boot.php:1740 +#: ../../boot.php:1754 msgid "Email or nickname" msgstr "" -#: ../../boot.php:1750 +#: ../../boot.php:1764 msgid "Password" msgstr "" -#: ../../boot.php:1751 +#: ../../boot.php:1765 msgid "Remember me" msgstr "" -#: ../../boot.php:1754 +#: ../../boot.php:1768 msgid "Forgot your password?" msgstr "" -#: ../../boot.php:1755 ../../Zotlabs/Module/Lostpass.php:91 +#: ../../boot.php:1769 ../../Zotlabs/Module/Lostpass.php:91 msgid "Password Reset" msgstr "" -#: ../../boot.php:2625 +#: ../../boot.php:2633 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "" -#: ../../boot.php:2630 +#: ../../boot.php:2638 msgid "Website SSL certificate is not valid. Please correct." msgstr "" -#: ../../boot.php:2746 +#: ../../boot.php:2754 #, php-format msgid "[$Projectname] Cron tasks not running on %s" msgstr "" -#: ../../boot.php:2751 +#: ../../boot.php:2759 msgid "Cron/Scheduled tasks not running." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:60 +#: ../../Zotlabs/Lib/Enotify.php:61 msgid "$Projectname Notification" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:63 +#: ../../Zotlabs/Lib/Enotify.php:64 msgid "Thank You," msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:66 +#: ../../Zotlabs/Lib/Enotify.php:67 #, php-format msgid "This email was sent by %1$s at %2$s." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:67 +#: ../../Zotlabs/Lib/Enotify.php:68 #, php-format msgid "" "To stop receiving these messages, please adjust your Notification Settings " "at %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:68 +#: ../../Zotlabs/Lib/Enotify.php:69 #, php-format msgid "To stop receiving these messages, please adjust your %s." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:68 -#: ../../Zotlabs/Module/Settings/Channel.php:241 +#: ../../Zotlabs/Lib/Enotify.php:69 +#: ../../Zotlabs/Module/Settings/Channel.php:242 msgid "Notification Settings" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:123 +#: ../../Zotlabs/Lib/Enotify.php:124 #, php-format msgid "%s <!item_type!>" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:131 +#: ../../Zotlabs/Lib/Enotify.php:132 #, php-format msgid "[$Projectname:Notify] New direct message received at %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:133 +#: ../../Zotlabs/Lib/Enotify.php:134 #, php-format msgid "%1$s sent you a new direct message at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:134 +#: ../../Zotlabs/Lib/Enotify.php:135 #, php-format msgid "%1$s sent you %2$s." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:134 +#: ../../Zotlabs/Lib/Enotify.php:135 msgid "a direct message" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:135 +#: ../../Zotlabs/Lib/Enotify.php:136 #, php-format msgid "Please visit %s to view and/or reply to your direct messages." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:148 +#: ../../Zotlabs/Lib/Enotify.php:149 msgid "requested to comment on" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:148 +#: ../../Zotlabs/Lib/Enotify.php:149 msgid "commented on" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:162 ../../Zotlabs/Lib/Enotify.php:318 msgid "requested to like" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:162 ../../Zotlabs/Lib/Enotify.php:318 msgid "liked" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:320 +#: ../../Zotlabs/Lib/Enotify.php:165 ../../Zotlabs/Lib/Enotify.php:321 msgid "requested to dislike" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:320 +#: ../../Zotlabs/Lib/Enotify.php:165 ../../Zotlabs/Lib/Enotify.php:321 msgid "disliked" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:167 +#: ../../Zotlabs/Lib/Enotify.php:168 msgid "repeated" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:172 +#: ../../Zotlabs/Lib/Enotify.php:173 msgid "voted on" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:215 +#: ../../Zotlabs/Lib/Enotify.php:216 #, php-format msgid "%1$s %2$s [zrl=%3$s]a %4$s[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:223 +#: ../../Zotlabs/Lib/Enotify.php:224 #, php-format msgid "%1$s %2$s [zrl=%3$s]%4$s's %5$s[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:232 ../../Zotlabs/Lib/Enotify.php:324 +#: ../../Zotlabs/Lib/Enotify.php:233 ../../Zotlabs/Lib/Enotify.php:325 #, php-format msgid "%1$s %2$s [zrl=%3$s]your %4$s[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:244 +#: ../../Zotlabs/Lib/Enotify.php:245 #, php-format msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:246 +#: ../../Zotlabs/Lib/Enotify.php:247 #, php-format msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:247 +#: ../../Zotlabs/Lib/Enotify.php:248 #, php-format msgid "%1$s commented on an item/conversation you have been following" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:250 ../../Zotlabs/Lib/Enotify.php:344 -#: ../../Zotlabs/Lib/Enotify.php:360 ../../Zotlabs/Lib/Enotify.php:384 -#: ../../Zotlabs/Lib/Enotify.php:401 ../../Zotlabs/Lib/Enotify.php:414 +#: ../../Zotlabs/Lib/Enotify.php:251 ../../Zotlabs/Lib/Enotify.php:345 +#: ../../Zotlabs/Lib/Enotify.php:361 ../../Zotlabs/Lib/Enotify.php:385 +#: ../../Zotlabs/Lib/Enotify.php:402 ../../Zotlabs/Lib/Enotify.php:415 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:254 ../../Zotlabs/Lib/Enotify.php:255 +#: ../../Zotlabs/Lib/Enotify.php:255 ../../Zotlabs/Lib/Enotify.php:256 #, php-format msgid "Please visit %s to approve or reject this comment." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:340 +#: ../../Zotlabs/Lib/Enotify.php:341 #, php-format msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:341 +#: ../../Zotlabs/Lib/Enotify.php:342 #, php-format msgid "%1$s liked an item/conversation you created" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:352 +#: ../../Zotlabs/Lib/Enotify.php:353 #, php-format msgid "[$Projectname:Notify] %s posted to your profile wall" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:354 +#: ../../Zotlabs/Lib/Enotify.php:355 #, php-format msgid "%1$s posted to your profile wall at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:356 +#: ../../Zotlabs/Lib/Enotify.php:357 #, php-format msgid "%1$s posted to [zrl=%2$s]your wall[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:378 +#: ../../Zotlabs/Lib/Enotify.php:379 #, php-format msgid "[$Projectname:Notify] %s tagged you" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:379 +#: ../../Zotlabs/Lib/Enotify.php:380 #, php-format msgid "%1$s tagged you at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:380 +#: ../../Zotlabs/Lib/Enotify.php:381 #, php-format msgid "%1$s [zrl=%2$s]tagged you[/zrl]." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:391 +#: ../../Zotlabs/Lib/Enotify.php:392 #, php-format msgid "[$Projectname:Notify] %1$s poked you" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:392 +#: ../../Zotlabs/Lib/Enotify.php:393 #, php-format msgid "%1$s poked you at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:393 +#: ../../Zotlabs/Lib/Enotify.php:394 #, php-format msgid "%1$s [zrl=%2$s]poked you[/zrl]." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:408 +#: ../../Zotlabs/Lib/Enotify.php:409 #, php-format msgid "[$Projectname:Notify] %s tagged your post" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:409 +#: ../../Zotlabs/Lib/Enotify.php:410 #, php-format msgid "%1$s tagged your post at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:410 +#: ../../Zotlabs/Lib/Enotify.php:411 #, php-format msgid "%1$s tagged [zrl=%2$s]your post[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:421 +#: ../../Zotlabs/Lib/Enotify.php:422 msgid "[$Projectname:Notify] Introduction received" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:422 +#: ../../Zotlabs/Lib/Enotify.php:423 #, php-format msgid "You've received an new connection request from '%1$s' at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:423 +#: ../../Zotlabs/Lib/Enotify.php:424 #, php-format msgid "You've received [zrl=%1$s]a new connection request[/zrl] from %2$s." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:426 ../../Zotlabs/Lib/Enotify.php:444 +#: ../../Zotlabs/Lib/Enotify.php:427 ../../Zotlabs/Lib/Enotify.php:445 #, php-format msgid "You may visit their profile at %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:428 +#: ../../Zotlabs/Lib/Enotify.php:429 #, php-format msgid "Please visit %s to approve or reject the connection request." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:435 +#: ../../Zotlabs/Lib/Enotify.php:436 msgid "[$Projectname:Notify] Friend suggestion received" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:436 +#: ../../Zotlabs/Lib/Enotify.php:437 #, php-format msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:437 +#: ../../Zotlabs/Lib/Enotify.php:438 #, php-format msgid "You've received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:442 +#: ../../Zotlabs/Lib/Enotify.php:443 msgid "Name:" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:443 +#: ../../Zotlabs/Lib/Enotify.php:444 msgid "Photo:" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:446 +#: ../../Zotlabs/Lib/Enotify.php:447 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:676 +#: ../../Zotlabs/Lib/Enotify.php:677 msgid "[$Projectname:Notify]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:842 +#: ../../Zotlabs/Lib/Enotify.php:843 msgid "created a new poll" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:842 +#: ../../Zotlabs/Lib/Enotify.php:843 msgid "created a new post" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:843 +#: ../../Zotlabs/Lib/Enotify.php:844 #, php-format msgid "voted on %s's poll" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:843 +#: ../../Zotlabs/Lib/Enotify.php:844 #, php-format msgid "commented on %s's post" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:847 ../../Zotlabs/Lib/Enotify.php:947 +#: ../../Zotlabs/Lib/Enotify.php:848 ../../Zotlabs/Lib/Enotify.php:948 msgid "shared a file with you" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:856 +#: ../../Zotlabs/Lib/Enotify.php:857 #, php-format msgid "edited a post dated %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:859 +#: ../../Zotlabs/Lib/Enotify.php:860 #, php-format msgid "edited a comment dated %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:932 +#: ../../Zotlabs/Lib/Enotify.php:933 msgid "added your channel" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:962 +#: ../../Zotlabs/Lib/Enotify.php:963 msgid "sent you a direct message" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:969 +#: ../../Zotlabs/Lib/Enotify.php:970 msgid "g A l F d" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:972 +#: ../../Zotlabs/Lib/Enotify.php:973 msgid "[today]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:982 +#: ../../Zotlabs/Lib/Enotify.php:983 msgid "created an event" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:997 +#: ../../Zotlabs/Lib/Enotify.php:998 msgid "status verified" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:329 +#: ../../Zotlabs/Lib/Apps.php:330 msgid "Affinity Tool" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:332 +#: ../../Zotlabs/Lib/Apps.php:333 msgid "Site Admin" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:336 +#: ../../Zotlabs/Lib/Apps.php:337 msgid "Content Filter" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:339 +#: ../../Zotlabs/Lib/Apps.php:340 msgid "Remote Diagnostics" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:340 +#: ../../Zotlabs/Lib/Apps.php:341 msgid "Suggest Channels" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:342 +#: ../../Zotlabs/Lib/Apps.php:343 msgid "Channel Manager" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:343 +#: ../../Zotlabs/Lib/Apps.php:344 msgid "Stream" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:354 +#: ../../Zotlabs/Lib/Apps.php:355 msgid "Mail" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:355 +#: ../../Zotlabs/Lib/Apps.php:356 msgid "Chat" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:357 +#: ../../Zotlabs/Lib/Apps.php:358 msgid "Probe" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:358 +#: ../../Zotlabs/Lib/Apps.php:359 msgid "Suggest" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:359 +#: ../../Zotlabs/Lib/Apps.php:360 msgid "Random Channel" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:360 +#: ../../Zotlabs/Lib/Apps.php:361 msgid "Invite" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:361 ../../Zotlabs/Widget/Admin.php:31 +#: ../../Zotlabs/Lib/Apps.php:362 ../../Zotlabs/Widget/Admin.php:31 msgid "Features" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:363 ../../Zotlabs/Storage/Browser.php:410 +#: ../../Zotlabs/Lib/Apps.php:364 ../../Zotlabs/Storage/Browser.php:411 msgid "Post" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:368 +#: ../../Zotlabs/Lib/Apps.php:369 msgid "Notifications" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:369 +#: ../../Zotlabs/Lib/Apps.php:370 msgid "Order Apps" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:370 +#: ../../Zotlabs/Lib/Apps.php:371 msgid "CardDAV" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:371 ../../Zotlabs/Module/Sources.php:105 +#: ../../Zotlabs/Lib/Apps.php:372 ../../Zotlabs/Module/Sources.php:105 msgid "Channel Sources" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:372 ../../Zotlabs/Module/Tokens.php:288 +#: ../../Zotlabs/Lib/Apps.php:373 ../../Zotlabs/Module/Tokens.php:288 msgid "Guest Access" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:374 +#: ../../Zotlabs/Lib/Apps.php:375 msgid "OAuth Apps Manager" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:375 +#: ../../Zotlabs/Lib/Apps.php:376 msgid "OAuth2 Apps Manager" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:376 +#: ../../Zotlabs/Lib/Apps.php:377 msgid "PDL Editor" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:377 ../../Zotlabs/Module/Permcats.php:248 +#: ../../Zotlabs/Lib/Apps.php:378 ../../Zotlabs/Module/Permcats.php:248 msgid "Contact Roles" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:378 ../../Zotlabs/Widget/Notifications.php:154 -#: ../../Zotlabs/Module/Pubstream.php:108 +#: ../../Zotlabs/Lib/Apps.php:379 ../../Zotlabs/Widget/Notifications.php:154 +#: ../../Zotlabs/Module/Pubstream.php:109 msgid "Public Stream" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:379 +#: ../../Zotlabs/Lib/Apps.php:380 msgid "My Chatrooms" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:380 +#: ../../Zotlabs/Lib/Apps.php:381 msgid "Channel Export" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:561 ../../Zotlabs/Module/Oauth.php:53 +#: ../../Zotlabs/Lib/Apps.php:562 ../../Zotlabs/Module/Oauth.php:53 #: ../../Zotlabs/Module/Oauth.php:135 ../../Zotlabs/Module/Connedit.php:748 -#: ../../Zotlabs/Module/Admin/Addons.php:460 ../../Zotlabs/Module/Cdav.php:1044 +#: ../../Zotlabs/Module/Admin/Addons.php:461 ../../Zotlabs/Module/Cdav.php:1044 #: ../../Zotlabs/Module/Cdav.php:1384 ../../Zotlabs/Module/Oauth2.php:58 #: ../../Zotlabs/Module/Oauth2.php:142 msgid "Update" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:561 ../../Zotlabs/Module/Admin/Addons.php:429 +#: ../../Zotlabs/Lib/Apps.php:562 ../../Zotlabs/Module/Admin/Addons.php:430 msgid "Install" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:591 ../../Zotlabs/Lib/Apps.php:613 +#: ../../Zotlabs/Lib/Apps.php:592 ../../Zotlabs/Lib/Apps.php:614 msgid "Purchase" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:618 +#: ../../Zotlabs/Lib/Apps.php:619 msgid "Undelete" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:626 +#: ../../Zotlabs/Lib/Apps.php:627 msgid "Add to app-tray" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:627 +#: ../../Zotlabs/Lib/Apps.php:628 msgid "Remove from app-tray" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:628 +#: ../../Zotlabs/Lib/Apps.php:629 msgid "Pin to navbar" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:629 +#: ../../Zotlabs/Lib/Apps.php:630 msgid "Unpin from navbar" msgstr "" #: ../../Zotlabs/Lib/PermissionDescription.php:108 -#: ../../Zotlabs/Access/PermissionRoles.php:384 +#: ../../Zotlabs/Access/PermissionRoles.php:386 msgid "Public" msgstr "" @@ -7236,117 +7218,117 @@ msgctxt "permcat" msgid "Default" msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:67 +#: ../../Zotlabs/Lib/DB_Upgrade.php:68 msgid "Source code of failed update: " msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:88 +#: ../../Zotlabs/Lib/DB_Upgrade.php:89 #, php-format msgid "Update Error at %s" msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:94 +#: ../../Zotlabs/Lib/DB_Upgrade.php:95 #, php-format msgid "Update %s failed. See error logs." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:46 ../../Zotlabs/Lib/Connect.php:147 +#: ../../Zotlabs/Lib/Connect.php:45 ../../Zotlabs/Lib/Connect.php:146 msgid "Channel is blocked on this site." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:51 +#: ../../Zotlabs/Lib/Connect.php:50 msgid "Channel location missing." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:105 +#: ../../Zotlabs/Lib/Connect.php:104 msgid "Remote channel or protocol unavailable." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:141 +#: ../../Zotlabs/Lib/Connect.php:140 msgid "Channel discovery failed." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:159 +#: ../../Zotlabs/Lib/Connect.php:158 msgid "Protocol disabled." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:171 +#: ../../Zotlabs/Lib/Connect.php:170 msgid "Cannot connect to yourself." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:276 +#: ../../Zotlabs/Lib/Connect.php:275 msgid "error saving data" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:111 +#: ../../Zotlabs/Lib/ThreadItem.php:110 msgid "Restricted message" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:118 +#: ../../Zotlabs/Lib/ThreadItem.php:117 msgid "Direct message" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:123 +#: ../../Zotlabs/Lib/ThreadItem.php:122 msgid "Public Policy" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:157 +#: ../../Zotlabs/Lib/ThreadItem.php:156 msgid "Privacy conflict. Discretion advised." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:188 ../../Zotlabs/Storage/Browser.php:372 +#: ../../Zotlabs/Lib/ThreadItem.php:187 ../../Zotlabs/Storage/Browser.php:373 msgid "Admin Delete" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:191 ../../Zotlabs/Module/Filer.php:55 +#: ../../Zotlabs/Lib/ThreadItem.php:190 ../../Zotlabs/Module/Filer.php:55 msgid "Save to Folder" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:215 ../../Zotlabs/Widget/Pinned.php:77 msgid "I will attend" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:215 ../../Zotlabs/Widget/Pinned.php:77 msgid "I will not attend" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:215 ../../Zotlabs/Widget/Pinned.php:77 msgid "I might attend" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:333 ../../Zotlabs/Module/Photos.php:1074 +#: ../../Zotlabs/Lib/ThreadItem.php:332 ../../Zotlabs/Module/Photos.php:1074 msgid "I like this (toggle)" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:334 ../../Zotlabs/Module/Photos.php:1075 +#: ../../Zotlabs/Lib/ThreadItem.php:333 ../../Zotlabs/Module/Photos.php:1075 msgid "I don't like this (toggle)" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:335 +#: ../../Zotlabs/Lib/ThreadItem.php:334 msgid "Reply on this comment" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:335 +#: ../../Zotlabs/Lib/ThreadItem.php:334 msgid "reply" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:335 +#: ../../Zotlabs/Lib/ThreadItem.php:334 msgid "Reply to" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../Zotlabs/Widget/Pinned.php:93 +#: ../../Zotlabs/Lib/ThreadItem.php:340 ../../Zotlabs/Widget/Pinned.php:95 msgid "share" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:345 +#: ../../Zotlabs/Lib/ThreadItem.php:344 msgid "Repeat" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:345 +#: ../../Zotlabs/Lib/ThreadItem.php:344 msgid "repeat" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:356 +#: ../../Zotlabs/Lib/ThreadItem.php:355 msgid "Delivery Report" msgstr "" @@ -7371,7 +7353,7 @@ msgid "to" msgstr "" #: ../../Zotlabs/Lib/ThreadItem.php:435 ../../Zotlabs/Widget/Messages.php:146 -#: ../../Zotlabs/Widget/Messages.php:149 ../../Zotlabs/Widget/Pinned.php:121 +#: ../../Zotlabs/Widget/Messages.php:149 ../../Zotlabs/Widget/Pinned.php:123 msgid "via" msgstr "" @@ -7387,11 +7369,11 @@ msgstr "" msgid "Attend" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:466 ../../Zotlabs/Widget/Pinned.php:135 +#: ../../Zotlabs/Lib/ThreadItem.php:466 ../../Zotlabs/Widget/Pinned.php:137 msgid "Attendance Options" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../Zotlabs/Widget/Pinned.php:136 +#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../Zotlabs/Widget/Pinned.php:138 msgid "Voting Options" msgstr "" @@ -7399,7 +7381,7 @@ msgstr "" msgid "Go to previous comment" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:492 ../../Zotlabs/Widget/Pinned.php:148 +#: ../../Zotlabs/Lib/ThreadItem.php:492 ../../Zotlabs/Widget/Pinned.php:150 msgid "Pinned post" msgstr "" @@ -7440,58 +7422,58 @@ msgstr "" msgid "Your website URL (optional)" msgstr "" -#: ../../Zotlabs/Lib/Libzot.php:687 +#: ../../Zotlabs/Lib/Libzot.php:688 msgid "Unable to verify channel signature" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2154 +#: ../../Zotlabs/Lib/Activity.php:2166 #, php-format msgid "Likes %1$s's %2$s" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2157 +#: ../../Zotlabs/Lib/Activity.php:2169 #, php-format msgid "Doesn't like %1$s's %2$s" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2163 +#: ../../Zotlabs/Lib/Activity.php:2175 #, php-format msgid "Will attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2166 +#: ../../Zotlabs/Lib/Activity.php:2178 #, php-format msgid "Will not attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2169 +#: ../../Zotlabs/Lib/Activity.php:2181 #, php-format msgid "May attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2172 +#: ../../Zotlabs/Lib/Activity.php:2184 #, php-format msgid "May not attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Libsync.php:823 +#: ../../Zotlabs/Lib/Libsync.php:824 #, php-format msgid "Unable to verify site signature for %s" msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:163 +#: ../../Zotlabs/Lib/Libzotdir.php:164 msgid "Directory Options" msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:165 +#: ../../Zotlabs/Lib/Libzotdir.php:166 msgid "Safe Mode" msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:166 +#: ../../Zotlabs/Lib/Libzotdir.php:167 msgid "Public Forums Only" msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:168 +#: ../../Zotlabs/Lib/Libzotdir.php:169 msgid "This Website Only" msgstr "" @@ -7551,79 +7533,79 @@ msgstr "" msgid "Select a privacy group" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:337 +#: ../../Zotlabs/Access/PermissionRoles.php:339 msgid "Social Networking" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:338 +#: ../../Zotlabs/Access/PermissionRoles.php:340 msgid "Social - Federation" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:339 +#: ../../Zotlabs/Access/PermissionRoles.php:341 msgid "Social - Mostly Public" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:340 +#: ../../Zotlabs/Access/PermissionRoles.php:342 msgid "Social - Restricted" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:341 +#: ../../Zotlabs/Access/PermissionRoles.php:343 msgid "Social - Private" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:344 +#: ../../Zotlabs/Access/PermissionRoles.php:346 msgid "Community Forum" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:345 +#: ../../Zotlabs/Access/PermissionRoles.php:347 msgid "Forum - Mostly Public" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:346 +#: ../../Zotlabs/Access/PermissionRoles.php:348 msgid "Forum - Restricted" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:347 +#: ../../Zotlabs/Access/PermissionRoles.php:349 msgid "Forum - Private" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:350 +#: ../../Zotlabs/Access/PermissionRoles.php:352 msgid "Feed Republish" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:351 +#: ../../Zotlabs/Access/PermissionRoles.php:353 msgid "Feed - Mostly Public" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:352 +#: ../../Zotlabs/Access/PermissionRoles.php:354 msgid "Feed - Restricted" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:355 +#: ../../Zotlabs/Access/PermissionRoles.php:357 msgid "Special Purpose" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:356 +#: ../../Zotlabs/Access/PermissionRoles.php:358 msgid "Special - Celebrity/Soapbox" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:357 +#: ../../Zotlabs/Access/PermissionRoles.php:359 msgid "Special - Group Repository" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:361 +#: ../../Zotlabs/Access/PermissionRoles.php:363 msgid "Custom/Expert Mode" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:385 +#: ../../Zotlabs/Access/PermissionRoles.php:387 msgid "Personal" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:386 +#: ../../Zotlabs/Access/PermissionRoles.php:388 msgid "Community forum" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:387 +#: ../../Zotlabs/Access/PermissionRoles.php:389 msgid "Custom" msgstr "" @@ -7715,15 +7697,15 @@ msgstr "" msgid "Available Apps" msgstr "" -#: ../../Zotlabs/Widget/Rating.php:57 +#: ../../Zotlabs/Widget/Rating.php:59 msgid "Rating Tools" msgstr "" -#: ../../Zotlabs/Widget/Rating.php:61 ../../Zotlabs/Widget/Rating.php:63 +#: ../../Zotlabs/Widget/Rating.php:63 ../../Zotlabs/Widget/Rating.php:65 msgid "Rate Me" msgstr "" -#: ../../Zotlabs/Widget/Rating.php:66 +#: ../../Zotlabs/Widget/Rating.php:68 msgid "View Ratings" msgstr "" @@ -7865,68 +7847,68 @@ msgstr "" msgid "Guest access" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:36 +#: ../../Zotlabs/Widget/Newmember.php:38 msgid "Profile Creation" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:38 +#: ../../Zotlabs/Widget/Newmember.php:40 msgid "Upload profile photo" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:39 +#: ../../Zotlabs/Widget/Newmember.php:41 msgid "Upload cover photo" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:43 +#: ../../Zotlabs/Widget/Newmember.php:45 msgid "Find and Connect with others" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:45 +#: ../../Zotlabs/Widget/Newmember.php:47 msgid "View the directory" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:46 ../../Zotlabs/Module/Go.php:38 +#: ../../Zotlabs/Widget/Newmember.php:48 ../../Zotlabs/Module/Go.php:39 msgid "View friend suggestions" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:47 +#: ../../Zotlabs/Widget/Newmember.php:49 msgid "Manage your connections" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:50 +#: ../../Zotlabs/Widget/Newmember.php:52 msgid "Communicate" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:52 +#: ../../Zotlabs/Widget/Newmember.php:54 msgid "View your channel homepage" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:53 +#: ../../Zotlabs/Widget/Newmember.php:55 msgid "View your network stream" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:59 +#: ../../Zotlabs/Widget/Newmember.php:61 msgid "Documentation" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:62 +#: ../../Zotlabs/Widget/Newmember.php:64 msgid "Missing Features?" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:64 +#: ../../Zotlabs/Widget/Newmember.php:66 msgid "Pin apps to navigation bar" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:65 +#: ../../Zotlabs/Widget/Newmember.php:67 msgid "Install more apps" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:76 +#: ../../Zotlabs/Widget/Newmember.php:78 msgid "View public stream" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:80 -#: ../../Zotlabs/Module/Settings/Display.php:201 +#: ../../Zotlabs/Widget/Newmember.php:82 +#: ../../Zotlabs/Module/Settings/Display.php:202 msgid "New Member Links" msgstr "" @@ -7987,24 +7969,24 @@ msgstr "" #: ../../Zotlabs/Widget/Album.php:103 ../../Zotlabs/Widget/Portfolio.php:114 #: ../../Zotlabs/Widget/Cdav.php:152 ../../Zotlabs/Widget/Cdav.php:188 -#: ../../Zotlabs/Storage/Browser.php:546 -#: ../../Zotlabs/Module/Cover_photo.php:380 +#: ../../Zotlabs/Storage/Browser.php:547 +#: ../../Zotlabs/Module/Cover_photo.php:381 #: ../../Zotlabs/Module/Embedphotos.php:189 -#: ../../Zotlabs/Module/Profile_photo.php:546 +#: ../../Zotlabs/Module/Profile_photo.php:547 #: ../../Zotlabs/Module/Photos.php:681 msgid "Upload" msgstr "" -#: ../../Zotlabs/Widget/Pinned.php:93 +#: ../../Zotlabs/Widget/Pinned.php:95 msgid "Share This" msgstr "" -#: ../../Zotlabs/Widget/Pinned.php:116 ../../Zotlabs/Widget/Pinned.php:117 +#: ../../Zotlabs/Widget/Pinned.php:118 ../../Zotlabs/Widget/Pinned.php:119 #, php-format msgid "View %s's profile - %s" msgstr "" -#: ../../Zotlabs/Widget/Pinned.php:150 +#: ../../Zotlabs/Widget/Pinned.php:152 msgid "Don't show" msgstr "" @@ -8148,7 +8130,7 @@ msgid "Stream Filters" msgstr "" #: ../../Zotlabs/Widget/Channel_activities.php:29 -#: ../../Zotlabs/Module/Go.php:27 +#: ../../Zotlabs/Module/Go.php:28 msgid "Welcome" msgstr "" @@ -8201,14 +8183,14 @@ msgstr "" msgid "Refresh" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Site.php:400 +#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Site.php:401 msgid "Site" msgstr "" #: ../../Zotlabs/Widget/Admin.php:28 #: ../../Zotlabs/Module/Admin/Accounts.php:308 #: ../../Zotlabs/Module/Admin/Accounts.php:327 -#: ../../Zotlabs/Module/Admin.php:95 +#: ../../Zotlabs/Module/Admin.php:97 msgid "Accounts" msgstr "" @@ -8217,17 +8199,17 @@ msgid "Member registrations waiting for confirmation" msgstr "" #: ../../Zotlabs/Widget/Admin.php:30 -#: ../../Zotlabs/Module/Admin/Security.php:106 +#: ../../Zotlabs/Module/Admin/Security.php:107 msgid "Security" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:32 ../../Zotlabs/Module/Admin/Addons.php:346 -#: ../../Zotlabs/Module/Admin/Addons.php:444 +#: ../../Zotlabs/Widget/Admin.php:32 ../../Zotlabs/Module/Admin/Addons.php:347 +#: ../../Zotlabs/Module/Admin/Addons.php:445 msgid "Addons" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:33 ../../Zotlabs/Module/Admin/Themes.php:138 -#: ../../Zotlabs/Module/Admin/Themes.php:172 +#: ../../Zotlabs/Widget/Admin.php:33 ../../Zotlabs/Module/Admin/Themes.php:139 +#: ../../Zotlabs/Module/Admin/Themes.php:173 msgid "Themes" msgstr "" @@ -8239,7 +8221,7 @@ msgstr "" msgid "Queueworker" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:36 ../../Zotlabs/Module/Admin/Profs.php:168 +#: ../../Zotlabs/Widget/Admin.php:36 ../../Zotlabs/Module/Admin/Profs.php:169 msgid "Profile Fields" msgstr "" @@ -8248,7 +8230,7 @@ msgid "DB updates" msgstr "" #: ../../Zotlabs/Widget/Admin.php:54 ../../Zotlabs/Widget/Admin.php:64 -#: ../../Zotlabs/Module/Admin/Logs.php:83 +#: ../../Zotlabs/Module/Admin/Logs.php:84 msgid "Logs" msgstr "" @@ -8356,10 +8338,10 @@ msgid "Create new CalDAV calendar" msgstr "" #: ../../Zotlabs/Widget/Cdav.php:146 ../../Zotlabs/Widget/Cdav.php:184 -#: ../../Zotlabs/Storage/Browser.php:367 ../../Zotlabs/Storage/Browser.php:544 +#: ../../Zotlabs/Storage/Browser.php:368 ../../Zotlabs/Storage/Browser.php:545 #: ../../Zotlabs/Module/Webpages.php:249 ../../Zotlabs/Module/Connedit.php:747 #: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Module/Menu.php:182 -#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/New_channel.php:189 +#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/New_channel.php:190 #: ../../Zotlabs/Module/Cdav.php:1050 ../../Zotlabs/Module/Cdav.php:1383 msgid "Create" msgstr "" @@ -8421,129 +8403,129 @@ msgstr "" msgid "Privacy groups" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:291 +#: ../../Zotlabs/Storage/Browser.php:292 msgid "Change filename to" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:308 ../../Zotlabs/Storage/Browser.php:393 +#: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:394 msgid "Select a target location" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:394 +#: ../../Zotlabs/Storage/Browser.php:310 ../../Zotlabs/Storage/Browser.php:395 msgid "Copy to target location" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:310 ../../Zotlabs/Storage/Browser.php:392 +#: ../../Zotlabs/Storage/Browser.php:311 ../../Zotlabs/Storage/Browser.php:393 msgid "Set permissions for all files and sub folders" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:311 +#: ../../Zotlabs/Storage/Browser.php:312 msgid "Notify your contacts about this file" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:350 +#: ../../Zotlabs/Storage/Browser.php:351 msgid "File category" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:364 +#: ../../Zotlabs/Storage/Browser.php:365 msgid "Total" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:366 +#: ../../Zotlabs/Storage/Browser.php:367 msgid "Shared" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:368 +#: ../../Zotlabs/Storage/Browser.php:369 msgid "Add Files" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:383 +#: ../../Zotlabs/Storage/Browser.php:384 #: ../../Zotlabs/Module/Sharedwithme.php:110 msgid "Last Modified" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:384 +#: ../../Zotlabs/Storage/Browser.php:385 msgid "parent" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:389 +#: ../../Zotlabs/Storage/Browser.php:390 #: ../../Zotlabs/Module/Filestorage.php:206 msgid "Copy/paste this code to attach file to a post" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:390 +#: ../../Zotlabs/Storage/Browser.php:391 #: ../../Zotlabs/Module/Filestorage.php:207 msgid "Copy/paste this URL to link file from a web page" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:402 +#: ../../Zotlabs/Storage/Browser.php:403 msgid "Select All" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:403 +#: ../../Zotlabs/Storage/Browser.php:404 msgid "Bulk Actions" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:404 +#: ../../Zotlabs/Storage/Browser.php:405 msgid "Adjust Permissions" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:405 +#: ../../Zotlabs/Storage/Browser.php:406 msgid "Move or Copy" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:408 +#: ../../Zotlabs/Storage/Browser.php:409 msgid "Info" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:409 +#: ../../Zotlabs/Storage/Browser.php:410 msgid "Rename" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:411 +#: ../../Zotlabs/Storage/Browser.php:412 msgid "Attachment BBcode" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:412 +#: ../../Zotlabs/Storage/Browser.php:413 msgid "Embed BBcode" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:413 +#: ../../Zotlabs/Storage/Browser.php:414 msgid "Link BBcode" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:486 +#: ../../Zotlabs/Storage/Browser.php:487 #, php-format msgid "You are using %1$s of your available file storage." msgstr "" -#: ../../Zotlabs/Storage/Browser.php:491 +#: ../../Zotlabs/Storage/Browser.php:492 #, php-format msgid "You are using %1$s of %2$s available file storage. (%3$s%)" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:502 +#: ../../Zotlabs/Storage/Browser.php:503 msgid "WARNING:" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:543 +#: ../../Zotlabs/Storage/Browser.php:544 msgid "Create new folder" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:545 +#: ../../Zotlabs/Storage/Browser.php:546 msgid "Upload file" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:557 +#: ../../Zotlabs/Storage/Browser.php:558 msgid "Drop files here to immediately upload" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:558 +#: ../../Zotlabs/Storage/Browser.php:559 #: ../../Zotlabs/Module/Filestorage.php:211 msgid "Show in your contacts shared folder" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:560 +#: ../../Zotlabs/Storage/Browser.php:561 msgid "" "You can select files via the upload button or drop them right here or into " "an existing folder." @@ -8563,147 +8545,152 @@ msgid "" "non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:36 +#: ../../Zotlabs/Module/Import_progress.php:40 msgid "Item sync completed!" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:51 +#: ../../Zotlabs/Module/Import_progress.php:62 +#: ../../Zotlabs/Module/Import_progress.php:111 +msgid "Import host does not seem to be online or compatible" +msgstr "" + +#: ../../Zotlabs/Module/Import_progress.php:73 msgid "Item sync completed but no items were found!" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:68 +#: ../../Zotlabs/Module/Import_progress.php:90 msgid "File sync completed!" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:83 +#: ../../Zotlabs/Module/Import_progress.php:122 msgid "File sync completed but no files were found!" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:98 +#: ../../Zotlabs/Module/Import_progress.php:137 msgid "Channel clone status" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:99 +#: ../../Zotlabs/Module/Import_progress.php:138 msgid "Item sync status" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:100 +#: ../../Zotlabs/Module/Import_progress.php:139 msgid "File sync status" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:107 +#: ../../Zotlabs/Module/Import_progress.php:146 msgid "Channel cloning completed!" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:108 +#: ../../Zotlabs/Module/Import_progress.php:147 msgid "Resume" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:109 +#: ../../Zotlabs/Module/Import_progress.php:148 msgid "Only resume if sync stalled!" msgstr "" -#: ../../Zotlabs/Module/Display.php:26 ../../Zotlabs/Module/Search.php:23 +#: ../../Zotlabs/Module/Display.php:27 ../../Zotlabs/Module/Search.php:24 #: ../../Zotlabs/Module/Directory.php:72 ../../Zotlabs/Module/Directory.php:77 #: ../../Zotlabs/Module/Viewconnections.php:23 #: ../../Zotlabs/Module/Photos.php:511 msgid "Public access denied." msgstr "" -#: ../../Zotlabs/Module/Display.php:52 ../../Zotlabs/Module/Oep.php:82 -#: ../../Zotlabs/Module/Pubstream.php:54 ../../Zotlabs/Module/Channel.php:194 +#: ../../Zotlabs/Module/Display.php:53 ../../Zotlabs/Module/Oep.php:82 +#: ../../Zotlabs/Module/Pubstream.php:55 ../../Zotlabs/Module/Channel.php:195 msgid "Malformed message id." msgstr "" -#: ../../Zotlabs/Module/Display.php:94 ../../Zotlabs/Module/Network.php:213 -#: ../../Zotlabs/Module/Hq.php:108 ../../Zotlabs/Module/Pubstream.php:97 -#: ../../Zotlabs/Module/Channel.php:278 ../../Zotlabs/Module/Rpost.php:210 +#: ../../Zotlabs/Module/Display.php:95 ../../Zotlabs/Module/Network.php:213 +#: ../../Zotlabs/Module/Hq.php:99 ../../Zotlabs/Module/Pubstream.php:98 +#: ../../Zotlabs/Module/Channel.php:279 ../../Zotlabs/Module/Rpost.php:111 msgid "Reset form" msgstr "" -#: ../../Zotlabs/Module/Display.php:319 ../../Zotlabs/Module/Channel.php:500 +#: ../../Zotlabs/Module/Display.php:320 ../../Zotlabs/Module/Channel.php:501 msgid "" "You must enable javascript for your browser to be able to view this content." msgstr "" -#: ../../Zotlabs/Module/Display.php:339 +#: ../../Zotlabs/Module/Display.php:340 msgid "Article" msgstr "" -#: ../../Zotlabs/Module/Display.php:383 +#: ../../Zotlabs/Module/Display.php:384 msgid "Item has been removed." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:85 -#: ../../Zotlabs/Module/Profile_photo.php:128 +#: ../../Zotlabs/Module/Cover_photo.php:86 +#: ../../Zotlabs/Module/Profile_photo.php:129 msgid "Image uploaded but image cropping failed." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:194 -#: ../../Zotlabs/Module/Cover_photo.php:251 +#: ../../Zotlabs/Module/Cover_photo.php:195 +#: ../../Zotlabs/Module/Cover_photo.php:252 msgid "Cover Photos" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:210 -#: ../../Zotlabs/Module/Profile_photo.php:184 +#: ../../Zotlabs/Module/Cover_photo.php:211 +#: ../../Zotlabs/Module/Profile_photo.php:185 msgid "Image resize failed." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:262 -#: ../../Zotlabs/Module/Profile_photo.php:349 +#: ../../Zotlabs/Module/Cover_photo.php:263 +#: ../../Zotlabs/Module/Profile_photo.php:350 msgid "Image upload failed." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:279 -#: ../../Zotlabs/Module/Profile_photo.php:369 +#: ../../Zotlabs/Module/Cover_photo.php:280 +#: ../../Zotlabs/Module/Profile_photo.php:370 msgid "Unable to process image." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:324 -#: ../../Zotlabs/Module/Cover_photo.php:339 -#: ../../Zotlabs/Module/Profile_photo.php:431 -#: ../../Zotlabs/Module/Profile_photo.php:496 +#: ../../Zotlabs/Module/Cover_photo.php:325 +#: ../../Zotlabs/Module/Cover_photo.php:340 +#: ../../Zotlabs/Module/Profile_photo.php:432 +#: ../../Zotlabs/Module/Profile_photo.php:497 msgid "Photo not available." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:375 +#: ../../Zotlabs/Module/Cover_photo.php:376 msgid "Your cover photo may be visible to anybody on the internet" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:377 +#: ../../Zotlabs/Module/Cover_photo.php:378 msgid "Upload File:" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:378 +#: ../../Zotlabs/Module/Cover_photo.php:379 msgid "Select a profile:" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:379 +#: ../../Zotlabs/Module/Cover_photo.php:380 msgid "Change Cover Photo" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:383 #: ../../Zotlabs/Module/Cover_photo.php:384 -#: ../../Zotlabs/Module/Profile_photo.php:550 +#: ../../Zotlabs/Module/Cover_photo.php:385 #: ../../Zotlabs/Module/Profile_photo.php:551 +#: ../../Zotlabs/Module/Profile_photo.php:552 msgid "Use a photo from your albums" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:395 +#: ../../Zotlabs/Module/Cover_photo.php:396 msgid "Select existing photo" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:412 -#: ../../Zotlabs/Module/Profile_photo.php:580 +#: ../../Zotlabs/Module/Cover_photo.php:413 +#: ../../Zotlabs/Module/Profile_photo.php:581 msgid "Crop Image" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:413 -#: ../../Zotlabs/Module/Profile_photo.php:581 +#: ../../Zotlabs/Module/Cover_photo.php:414 +#: ../../Zotlabs/Module/Profile_photo.php:582 msgid "Please adjust the image cropping for optimum viewing." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:415 +#: ../../Zotlabs/Module/Cover_photo.php:416 msgid "Done Editing" msgstr "" @@ -8715,11 +8702,11 @@ msgstr "" msgid "Edit Webpage" msgstr "" -#: ../../Zotlabs/Module/Sse_bs.php:626 +#: ../../Zotlabs/Module/Sse_bs.php:631 msgid "Private forum" msgstr "" -#: ../../Zotlabs/Module/Sse_bs.php:626 +#: ../../Zotlabs/Module/Sse_bs.php:631 msgid "Public forum" msgstr "" @@ -8830,7 +8817,7 @@ msgstr "" msgid "Icon url" msgstr "" -#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Register.php:498 +#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Register.php:501 #: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:156 msgid "Optional" msgstr "" @@ -8863,7 +8850,7 @@ msgstr "" msgid "No such channel" msgstr "" -#: ../../Zotlabs/Module/Network.php:172 ../../Zotlabs/Module/Channel.php:245 +#: ../../Zotlabs/Module/Network.php:172 ../../Zotlabs/Module/Channel.php:246 msgid "Search Results For:" msgstr "" @@ -8968,7 +8955,7 @@ msgid "" msgstr "" #: ../../Zotlabs/Module/Removeme.php:60 ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:282 +#: ../../Zotlabs/Module/Settings/Channel.php:283 msgid "Remove Channel" msgstr "" @@ -9005,12 +8992,12 @@ msgid "Use this form to import existing posts and content from an export file." msgstr "" #: ../../Zotlabs/Module/Import_items.php:123 -#: ../../Zotlabs/Module/Import.php:594 +#: ../../Zotlabs/Module/Import.php:599 msgid "File to Upload" msgstr "" #: ../../Zotlabs/Module/Import_items.php:136 -#: ../../Zotlabs/Module/Import.php:107 +#: ../../Zotlabs/Module/Import.php:108 msgid "Imported file is empty." msgstr "" @@ -9042,7 +9029,7 @@ msgstr "" msgid "Webpages import completed" msgstr "" -#: ../../Zotlabs/Module/Regdir.php:52 ../../Zotlabs/Module/Dirsearch.php:23 +#: ../../Zotlabs/Module/Regdir.php:53 ../../Zotlabs/Module/Dirsearch.php:24 msgid "This site is not a directory server" msgstr "" @@ -9156,7 +9143,7 @@ msgid "This action is permanent and can not be undone!" msgstr "" #: ../../Zotlabs/Module/Removeaccount.php:61 -#: ../../Zotlabs/Module/Settings/Account.php:111 +#: ../../Zotlabs/Module/Settings/Account.php:113 msgid "Remove Account" msgstr "" @@ -9406,15 +9393,15 @@ msgstr "" #: ../../Zotlabs/Module/Contactedit.php:409 #: ../../Zotlabs/Module/Connedit.php:706 -#: ../../Zotlabs/Module/Settings/Channel.php:286 +#: ../../Zotlabs/Module/Settings/Channel.php:287 msgid "Only import posts with this text" msgstr "" #: ../../Zotlabs/Module/Contactedit.php:409 #: ../../Zotlabs/Module/Contactedit.php:410 #: ../../Zotlabs/Module/Connedit.php:706 ../../Zotlabs/Module/Connedit.php:707 -#: ../../Zotlabs/Module/Admin/Site.php:500 #: ../../Zotlabs/Module/Admin/Site.php:501 +#: ../../Zotlabs/Module/Admin/Site.php:502 msgid "" "words one per line or #tags or /patterns/ or lang=xx, leave blank to import " "all posts" @@ -9422,7 +9409,7 @@ msgstr "" #: ../../Zotlabs/Module/Contactedit.php:410 #: ../../Zotlabs/Module/Connedit.php:707 -#: ../../Zotlabs/Module/Settings/Channel.php:285 +#: ../../Zotlabs/Module/Settings/Channel.php:286 msgid "Do not import posts with this text" msgstr "" @@ -9608,146 +9595,146 @@ msgstr "" msgid "Delete this connection" msgstr "" -#: ../../Zotlabs/Module/Search.php:250 +#: ../../Zotlabs/Module/Search.php:251 #, php-format msgid "Items tagged with: %s" msgstr "" -#: ../../Zotlabs/Module/Search.php:252 +#: ../../Zotlabs/Module/Search.php:253 #, php-format msgid "Search results for: %s" msgstr "" -#: ../../Zotlabs/Module/Register.php:112 +#: ../../Zotlabs/Module/Register.php:113 msgid "Email address required" msgstr "" -#: ../../Zotlabs/Module/Register.php:156 +#: ../../Zotlabs/Module/Register.php:157 msgid "No password provided" msgstr "" -#: ../../Zotlabs/Module/Register.php:179 +#: ../../Zotlabs/Module/Register.php:180 msgid "Terms of Service not accepted" msgstr "" -#: ../../Zotlabs/Module/Register.php:241 +#: ../../Zotlabs/Module/Register.php:242 msgid "Invitation code succesfully applied" msgstr "" -#: ../../Zotlabs/Module/Register.php:261 +#: ../../Zotlabs/Module/Register.php:262 msgid "Invitation not in time or too late" msgstr "" -#: ../../Zotlabs/Module/Register.php:267 +#: ../../Zotlabs/Module/Register.php:268 msgid "Invitation email failed" msgstr "" -#: ../../Zotlabs/Module/Register.php:275 +#: ../../Zotlabs/Module/Register.php:276 msgid "Invitation code failed" msgstr "" -#: ../../Zotlabs/Module/Register.php:282 +#: ../../Zotlabs/Module/Register.php:283 msgid "Invitations are not available" msgstr "" -#: ../../Zotlabs/Module/Register.php:292 +#: ../../Zotlabs/Module/Register.php:293 msgid "Registration on this hub is by invitation only" msgstr "" -#: ../../Zotlabs/Module/Register.php:399 +#: ../../Zotlabs/Module/Register.php:400 msgid "New register request" msgstr "" -#: ../../Zotlabs/Module/Register.php:417 +#: ../../Zotlabs/Module/Register.php:418 msgid "Error creating dId A" msgstr "" -#: ../../Zotlabs/Module/Register.php:435 +#: ../../Zotlabs/Module/Register.php:437 msgid "Registration on this hub is disabled." msgstr "" -#: ../../Zotlabs/Module/Register.php:444 +#: ../../Zotlabs/Module/Register.php:446 +msgid "Why do you want to join this hub?" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:446 +msgid "This will help to review your registration" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:447 msgid "Registration on this hub is by approval only." msgstr "" -#: ../../Zotlabs/Module/Register.php:445 +#: ../../Zotlabs/Module/Register.php:448 msgid "Register at another affiliated hub in case when prefered" msgstr "" -#: ../../Zotlabs/Module/Register.php:458 +#: ../../Zotlabs/Module/Register.php:461 msgid "Registration on this hub is by invitation only." msgstr "" -#: ../../Zotlabs/Module/Register.php:459 +#: ../../Zotlabs/Module/Register.php:462 msgid "Register at another affiliated hub" msgstr "" -#: ../../Zotlabs/Module/Register.php:473 ../../Zotlabs/Module/Siteinfo.php:28 +#: ../../Zotlabs/Module/Register.php:476 ../../Zotlabs/Module/Siteinfo.php:29 msgid "Terms of Service" msgstr "" -#: ../../Zotlabs/Module/Register.php:479 +#: ../../Zotlabs/Module/Register.php:482 #, php-format msgid "I accept the %s for this website" msgstr "" -#: ../../Zotlabs/Module/Register.php:486 +#: ../../Zotlabs/Module/Register.php:489 #, php-format msgid "I am over %s years of age and accept the %s for this website" msgstr "" -#: ../../Zotlabs/Module/Register.php:496 +#: ../../Zotlabs/Module/Register.php:499 msgid "Your email address" msgstr "" -#: ../../Zotlabs/Module/Register.php:503 +#: ../../Zotlabs/Module/Register.php:506 msgid "Choose a password" msgstr "" -#: ../../Zotlabs/Module/Register.php:504 +#: ../../Zotlabs/Module/Register.php:507 msgid "Please re-enter your password" msgstr "" -#: ../../Zotlabs/Module/Register.php:506 +#: ../../Zotlabs/Module/Register.php:509 msgid "Please enter your invitation code" msgstr "" -#: ../../Zotlabs/Module/Register.php:508 +#: ../../Zotlabs/Module/Register.php:511 msgid "Your name" msgstr "" -#: ../../Zotlabs/Module/Register.php:508 +#: ../../Zotlabs/Module/Register.php:511 msgid "Real name is preferred" msgstr "" -#: ../../Zotlabs/Module/Register.php:510 -#: ../../Zotlabs/Module/New_channel.php:177 +#: ../../Zotlabs/Module/Register.php:513 +#: ../../Zotlabs/Module/New_channel.php:178 msgid "Choose a short nickname" msgstr "" -#: ../../Zotlabs/Module/Register.php:510 +#: ../../Zotlabs/Module/Register.php:513 msgid "" "Your nickname will be used to create an easy to remember channel address" msgstr "" -#: ../../Zotlabs/Module/Register.php:514 -msgid "Why do you want to join this hub?" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:514 -msgid "This will help to review your registration" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:520 -#: ../../Zotlabs/Module/Admin/Site.php:402 +#: ../../Zotlabs/Module/Register.php:521 +#: ../../Zotlabs/Module/Admin/Site.php:403 msgid "Registration" msgstr "" -#: ../../Zotlabs/Module/Register.php:528 +#: ../../Zotlabs/Module/Register.php:529 msgid "I have an invite code" msgstr "" -#: ../../Zotlabs/Module/Register.php:575 +#: ../../Zotlabs/Module/Register.php:576 msgid "" "This site has exceeded the number of allowed daily account registrations." msgstr "" @@ -9835,24 +9822,24 @@ msgstr "" msgid "Duplicate post suppressed." msgstr "" -#: ../../Zotlabs/Module/Item.php:1343 +#: ../../Zotlabs/Module/Item.php:1348 msgid "System error. Post not saved." msgstr "" -#: ../../Zotlabs/Module/Item.php:1377 +#: ../../Zotlabs/Module/Item.php:1382 msgid "Your comment is awaiting approval." msgstr "" -#: ../../Zotlabs/Module/Item.php:1514 +#: ../../Zotlabs/Module/Item.php:1519 msgid "Unable to obtain post information from database." msgstr "" -#: ../../Zotlabs/Module/Item.php:1521 +#: ../../Zotlabs/Module/Item.php:1526 #, php-format msgid "You have reached your limit of %1$.0f top level posts." msgstr "" -#: ../../Zotlabs/Module/Item.php:1528 +#: ../../Zotlabs/Module/Item.php:1533 #, php-format msgid "You have reached your limit of %1$.0f webpages." msgstr "" @@ -10041,8 +10028,8 @@ msgid "Website" msgstr "" #: ../../Zotlabs/Module/Connedit.php:739 ../../Zotlabs/Module/Locs.php:122 -#: ../../Zotlabs/Module/Admin/Channels.php:160 -#: ../../Zotlabs/Module/Profiles.php:468 ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Module/Admin/Channels.php:182 +#: ../../Zotlabs/Module/Profiles.php:469 ../../Zotlabs/Module/Cdav.php:1375 msgid "Address" msgstr "" @@ -10082,7 +10069,7 @@ msgstr "" msgid "ZIP Code" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:757 ../../Zotlabs/Module/Profiles.php:769 +#: ../../Zotlabs/Module/Connedit.php:757 ../../Zotlabs/Module/Profiles.php:772 #: ../../Zotlabs/Module/Cdav.php:1393 msgid "Country" msgstr "" @@ -10224,35 +10211,35 @@ msgstr "" msgid "No entries (some entries may be hidden)." msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:543 +#: ../../Zotlabs/Module/Profile_photo.php:544 msgid "" "This profile photo will be visible to anybody on the internet and may be " "distributed to other websites." msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:543 +#: ../../Zotlabs/Module/Profile_photo.php:544 msgid "" "This profile photo will be visible only to channels with permission to view " "this profile." msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:545 +#: ../../Zotlabs/Module/Profile_photo.php:546 msgid "Use Photo for Profile" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:545 +#: ../../Zotlabs/Module/Profile_photo.php:546 msgid "Change Profile Photo" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:547 +#: ../../Zotlabs/Module/Profile_photo.php:548 msgid "Reset to default" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:561 +#: ../../Zotlabs/Module/Profile_photo.php:562 msgid "Select existing" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:583 +#: ../../Zotlabs/Module/Profile_photo.php:584 msgid "Done editing" msgstr "" @@ -10287,19 +10274,19 @@ msgstr "" msgid "View Connections" msgstr "" -#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95 +#: ../../Zotlabs/Module/Api.php:76 ../../Zotlabs/Module/Api.php:97 msgid "Authorize application connection" msgstr "" -#: ../../Zotlabs/Module/Api.php:75 +#: ../../Zotlabs/Module/Api.php:77 msgid "Return to your app and insert this Security Code:" msgstr "" -#: ../../Zotlabs/Module/Api.php:85 +#: ../../Zotlabs/Module/Api.php:87 msgid "Please login to continue." msgstr "" -#: ../../Zotlabs/Module/Api.php:97 +#: ../../Zotlabs/Module/Api.php:99 msgid "" "Do you want to authorize this application to access your posts and contacts, " "and/or create new posts for you?" @@ -10321,7 +10308,7 @@ msgstr "" msgid "The main page content can not be edited!" msgstr "" -#: ../../Zotlabs/Module/Home.php:104 +#: ../../Zotlabs/Module/Home.php:105 #, php-format msgid "Welcome to %s" msgstr "" @@ -10419,11 +10406,11 @@ msgstr "" msgid "Use this form to drop the location if the hub is no longer operating." msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:26 +#: ../../Zotlabs/Module/Pubsites.php:27 msgid "Public Hubs" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:29 +#: ../../Zotlabs/Module/Pubsites.php:30 msgid "" "The listed hubs allow public registration for the $Projectname network. All " "hubs in the network are interlinked so membership on any of them conveys " @@ -10432,31 +10419,31 @@ msgid "" "additional details." msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Pubsites.php:36 msgid "Hub URL" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Pubsites.php:36 msgid "Access Type" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Pubsites.php:36 msgid "Registration Policy" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Pubsites.php:36 msgid "Stats" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Pubsites.php:36 msgid "Software" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:37 +#: ../../Zotlabs/Module/Pubsites.php:38 msgid "Ratings" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:51 +#: ../../Zotlabs/Module/Pubsites.php:52 msgid "Rate" msgstr "" @@ -10612,15 +10599,15 @@ msgid "Expired" msgstr "" #: ../../Zotlabs/Module/Admin/Accounts.php:307 -#: ../../Zotlabs/Module/Admin/Themes.php:137 -#: ../../Zotlabs/Module/Admin/Themes.php:171 -#: ../../Zotlabs/Module/Admin/Addons.php:345 -#: ../../Zotlabs/Module/Admin/Addons.php:443 -#: ../../Zotlabs/Module/Admin/Channels.php:145 -#: ../../Zotlabs/Module/Admin/Logs.php:82 -#: ../../Zotlabs/Module/Admin/Site.php:397 -#: ../../Zotlabs/Module/Admin/Security.php:105 -#: ../../Zotlabs/Module/Admin.php:140 +#: ../../Zotlabs/Module/Admin/Themes.php:138 +#: ../../Zotlabs/Module/Admin/Themes.php:172 +#: ../../Zotlabs/Module/Admin/Addons.php:346 +#: ../../Zotlabs/Module/Admin/Addons.php:444 +#: ../../Zotlabs/Module/Admin/Channels.php:167 +#: ../../Zotlabs/Module/Admin/Logs.php:83 +#: ../../Zotlabs/Module/Admin/Site.php:398 +#: ../../Zotlabs/Module/Admin/Security.php:106 +#: ../../Zotlabs/Module/Admin.php:142 msgid "Administration" msgstr "" @@ -10717,155 +10704,155 @@ msgstr "" msgid "Message" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:65 +#: ../../Zotlabs/Module/Admin/Queueworker.php:66 msgid "Max queueworker threads" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:67 +#: ../../Zotlabs/Module/Admin/Queueworker.php:68 msgid "Minimum 4, default 4" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:77 +#: ../../Zotlabs/Module/Admin/Queueworker.php:78 msgid "Assume workers dead after" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:79 +#: ../../Zotlabs/Module/Admin/Queueworker.php:80 msgid "Minimum 120, default 300 seconds" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:91 +#: ../../Zotlabs/Module/Admin/Queueworker.php:92 msgid "Pause before starting next task" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:93 +#: ../../Zotlabs/Module/Admin/Queueworker.php:94 msgid "Minimum 100, default 100 microseconds" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:102 +#: ../../Zotlabs/Module/Admin/Queueworker.php:103 msgid "Automatically adjust pause before starting next task" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:111 +#: ../../Zotlabs/Module/Admin/Queueworker.php:112 msgid "Queueworker Settings" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:26 +#: ../../Zotlabs/Module/Admin/Themes.php:27 msgid "Theme settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:61 +#: ../../Zotlabs/Module/Admin/Themes.php:62 msgid "No themes found." msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:110 -#: ../../Zotlabs/Module/Admin/Addons.php:314 +#: ../../Zotlabs/Module/Admin/Themes.php:111 +#: ../../Zotlabs/Module/Admin/Addons.php:315 msgid "Disable" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:112 -#: ../../Zotlabs/Module/Admin/Addons.php:317 +#: ../../Zotlabs/Module/Admin/Themes.php:113 +#: ../../Zotlabs/Module/Admin/Addons.php:318 msgid "Enable" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:131 +#: ../../Zotlabs/Module/Admin/Themes.php:132 msgid "Screenshot" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:139 -#: ../../Zotlabs/Module/Admin/Addons.php:347 +#: ../../Zotlabs/Module/Admin/Themes.php:140 +#: ../../Zotlabs/Module/Admin/Addons.php:348 msgid "Toggle" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:149 -#: ../../Zotlabs/Module/Admin/Addons.php:355 +#: ../../Zotlabs/Module/Admin/Themes.php:150 +#: ../../Zotlabs/Module/Admin/Addons.php:356 msgid "Author: " msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:150 -#: ../../Zotlabs/Module/Admin/Addons.php:356 +#: ../../Zotlabs/Module/Admin/Themes.php:151 +#: ../../Zotlabs/Module/Admin/Addons.php:357 msgid "Maintainer: " msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:177 +#: ../../Zotlabs/Module/Admin/Themes.php:178 msgid "[Experimental]" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:178 +#: ../../Zotlabs/Module/Admin/Themes.php:179 msgid "[Unsupported]" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:293 +#: ../../Zotlabs/Module/Admin/Addons.php:294 #, php-format msgid "Plugin %s disabled." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:298 +#: ../../Zotlabs/Module/Admin/Addons.php:299 #, php-format msgid "Plugin %s enabled." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:357 +#: ../../Zotlabs/Module/Admin/Addons.php:358 msgid "Minimum project version: " msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:358 +#: ../../Zotlabs/Module/Admin/Addons.php:359 msgid "Maximum project version: " msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:359 +#: ../../Zotlabs/Module/Admin/Addons.php:360 msgid "Minimum PHP version: " msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:360 +#: ../../Zotlabs/Module/Admin/Addons.php:361 msgid "Compatible Server Roles: " msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:361 +#: ../../Zotlabs/Module/Admin/Addons.php:362 msgid "Requires: " msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:362 -#: ../../Zotlabs/Module/Admin/Addons.php:449 +#: ../../Zotlabs/Module/Admin/Addons.php:363 +#: ../../Zotlabs/Module/Admin/Addons.php:450 msgid "Disabled - version incompatibility" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:418 +#: ../../Zotlabs/Module/Admin/Addons.php:419 msgid "Enter the public git repository URL of the addon repo." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:419 +#: ../../Zotlabs/Module/Admin/Addons.php:420 msgid "Addon repo git URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:420 +#: ../../Zotlabs/Module/Admin/Addons.php:421 msgid "Custom repo name" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:420 +#: ../../Zotlabs/Module/Admin/Addons.php:421 msgid "(optional)" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:421 +#: ../../Zotlabs/Module/Admin/Addons.php:422 msgid "Download Addon Repo" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:428 +#: ../../Zotlabs/Module/Admin/Addons.php:429 msgid "Install new repo" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:452 +#: ../../Zotlabs/Module/Admin/Addons.php:453 msgid "Manage Repos" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:453 +#: ../../Zotlabs/Module/Admin/Addons.php:454 msgid "Installed Addon Repositories" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:454 +#: ../../Zotlabs/Module/Admin/Addons.php:455 msgid "Install a New Addon Repository" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:461 +#: ../../Zotlabs/Module/Admin/Addons.php:462 msgid "Switch branch" msgstr "" @@ -10878,158 +10865,159 @@ msgstr "" msgid "Manage Additional Features" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:89 +#: ../../Zotlabs/Module/Admin/Profs.php:90 msgid "New Profile Field" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:90 -#: ../../Zotlabs/Module/Admin/Profs.php:110 +#: ../../Zotlabs/Module/Admin/Profs.php:91 +#: ../../Zotlabs/Module/Admin/Profs.php:111 msgid "Field nickname" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:90 -#: ../../Zotlabs/Module/Admin/Profs.php:110 -msgid "System name of field" -msgstr "" - #: ../../Zotlabs/Module/Admin/Profs.php:91 #: ../../Zotlabs/Module/Admin/Profs.php:111 -msgid "Input type" +msgid "System name of field" msgstr "" #: ../../Zotlabs/Module/Admin/Profs.php:92 #: ../../Zotlabs/Module/Admin/Profs.php:112 -msgid "Field Name" +msgid "Input type" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:92 -#: ../../Zotlabs/Module/Admin/Profs.php:112 -msgid "Label on profile pages" +#: ../../Zotlabs/Module/Admin/Profs.php:93 +#: ../../Zotlabs/Module/Admin/Profs.php:113 +msgid "Field Name" msgstr "" #: ../../Zotlabs/Module/Admin/Profs.php:93 #: ../../Zotlabs/Module/Admin/Profs.php:113 +msgid "Label on profile pages" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Profs.php:94 +#: ../../Zotlabs/Module/Admin/Profs.php:114 msgid "Help text" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:93 -#: ../../Zotlabs/Module/Admin/Profs.php:113 +#: ../../Zotlabs/Module/Admin/Profs.php:94 +#: ../../Zotlabs/Module/Admin/Profs.php:114 msgid "Additional info (optional)" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:103 +#: ../../Zotlabs/Module/Admin/Profs.php:104 msgid "Field definition not found" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:109 +#: ../../Zotlabs/Module/Admin/Profs.php:110 msgid "Edit Profile Field" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:169 +#: ../../Zotlabs/Module/Admin/Profs.php:170 msgid "Basic Profile Fields" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:170 +#: ../../Zotlabs/Module/Admin/Profs.php:171 msgid "Advanced Profile Fields" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:170 +#: ../../Zotlabs/Module/Admin/Profs.php:171 msgid "(In addition to basic fields)" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:172 +#: ../../Zotlabs/Module/Admin/Profs.php:173 msgid "All available fields" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:173 +#: ../../Zotlabs/Module/Admin/Profs.php:174 msgid "Custom Fields" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:177 +#: ../../Zotlabs/Module/Admin/Profs.php:178 msgid "Create Custom Field" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:31 +#: ../../Zotlabs/Module/Admin/Channels.php:28 +#: ../../Zotlabs/Module/Admin/Channels.php:80 +msgid "Channel not found" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Channels.php:48 #, php-format msgid "%s channel censored/uncensored" msgid_plural "%s channels censored/uncensored" msgstr[0] "" msgstr[1] "" -#: ../../Zotlabs/Module/Admin/Channels.php:40 +#: ../../Zotlabs/Module/Admin/Channels.php:57 #, php-format msgid "%s channel code allowed/disallowed" msgid_plural "%s channels code allowed/disallowed" msgstr[0] "" msgstr[1] "" -#: ../../Zotlabs/Module/Admin/Channels.php:46 +#: ../../Zotlabs/Module/Admin/Channels.php:63 #, php-format msgid "%s channel deleted" msgid_plural "%s channels deleted" msgstr[0] "" msgstr[1] "" -#: ../../Zotlabs/Module/Admin/Channels.php:65 -msgid "Channel not found" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:75 +#: ../../Zotlabs/Module/Admin/Channels.php:90 #, php-format msgid "Channel '%s' deleted" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:87 +#: ../../Zotlabs/Module/Admin/Channels.php:109 #, php-format msgid "Channel '%s' censored" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:87 +#: ../../Zotlabs/Module/Admin/Channels.php:109 #, php-format msgid "Channel '%s' uncensored" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:98 +#: ../../Zotlabs/Module/Admin/Channels.php:120 #, php-format msgid "Channel '%s' code allowed" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:98 +#: ../../Zotlabs/Module/Admin/Channels.php:120 #, php-format msgid "Channel '%s' code disallowed" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:148 +#: ../../Zotlabs/Module/Admin/Channels.php:170 msgid "select all" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:150 +#: ../../Zotlabs/Module/Admin/Channels.php:172 msgid "Censor" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:151 +#: ../../Zotlabs/Module/Admin/Channels.php:173 msgid "Uncensor" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:152 +#: ../../Zotlabs/Module/Admin/Channels.php:174 msgid "Allow Code" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:153 +#: ../../Zotlabs/Module/Admin/Channels.php:175 msgid "Disallow Code" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:158 +#: ../../Zotlabs/Module/Admin/Channels.php:180 msgid "UID" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:162 +#: ../../Zotlabs/Module/Admin/Channels.php:184 msgid "" "Selected channels will be deleted!\\n\\nEverything that was posted in these " "channels on this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:163 +#: ../../Zotlabs/Module/Admin/Channels.php:185 msgid "" "The channel {0} will be deleted!\\n\\nEverything that was posted in this " "channel on this site will be permanently deleted!\\n\\nAre you sure?" @@ -11123,29 +11111,29 @@ msgstr "" msgid "No failed updates." msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:28 +#: ../../Zotlabs/Module/Admin/Logs.php:29 msgid "Log settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:85 +#: ../../Zotlabs/Module/Admin/Logs.php:86 msgid "Clear" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:91 +#: ../../Zotlabs/Module/Admin/Logs.php:92 msgid "Debugging" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:92 +#: ../../Zotlabs/Module/Admin/Logs.php:93 msgid "Log file" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:92 +#: ../../Zotlabs/Module/Admin/Logs.php:93 msgid "" "Must be writable by web server. Relative to your top-level webserver " "directory." msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:93 +#: ../../Zotlabs/Module/Admin/Logs.php:94 msgid "Log level" msgstr "" @@ -11177,668 +11165,668 @@ msgstr "" msgid "Last known contact" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:111 +#: ../../Zotlabs/Module/Admin/Site.php:112 msgid "Invalid input" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:131 +#: ../../Zotlabs/Module/Admin/Site.php:132 msgid "Errors" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:219 +#: ../../Zotlabs/Module/Admin/Site.php:220 msgid "Site settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:242 -#: ../../Zotlabs/Module/Settings/Display.php:116 +#: ../../Zotlabs/Module/Admin/Site.php:243 +#: ../../Zotlabs/Module/Settings/Display.php:117 #, php-format msgid "%s - (Incompatible)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:249 +#: ../../Zotlabs/Module/Admin/Site.php:250 msgid "mobile" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:251 +#: ../../Zotlabs/Module/Admin/Site.php:252 msgid "experimental" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:253 +#: ../../Zotlabs/Module/Admin/Site.php:254 msgid "unsupported" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:306 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "Yes - with approval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "My site is not a public server" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "My site has paid access only" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:316 +#: ../../Zotlabs/Module/Admin/Site.php:317 msgid "My site has free access only" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:317 +#: ../../Zotlabs/Module/Admin/Site.php:318 msgid "My site offers free accounts with optional paid upgrades" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:335 +#: ../../Zotlabs/Module/Admin/Site.php:336 msgid "Default permission role for new accounts" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:335 +#: ../../Zotlabs/Module/Admin/Site.php:336 msgid "" "This role will be used for the first channel created after registration." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:342 ../../Zotlabs/Module/Invite.php:410 +#: ../../Zotlabs/Module/Admin/Site.php:343 ../../Zotlabs/Module/Invite.php:411 msgid "Minute(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:343 ../../Zotlabs/Module/Invite.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:344 ../../Zotlabs/Module/Invite.php:412 msgid "Hour(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:344 ../../Zotlabs/Module/Invite.php:412 +#: ../../Zotlabs/Module/Admin/Site.php:345 ../../Zotlabs/Module/Invite.php:413 msgid "Day(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:345 +#: ../../Zotlabs/Module/Admin/Site.php:346 msgid "Week(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:346 +#: ../../Zotlabs/Module/Admin/Site.php:347 msgid "Month(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:347 +#: ../../Zotlabs/Module/Admin/Site.php:348 msgid "Year(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:355 +#: ../../Zotlabs/Module/Admin/Site.php:356 msgid "Register verification delay" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:358 +#: ../../Zotlabs/Module/Admin/Site.php:359 msgid "Time to wait before a registration can be verified" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:361 -#: ../../Zotlabs/Module/Admin/Site.php:383 ../../Zotlabs/Module/Invite.php:421 +#: ../../Zotlabs/Module/Admin/Site.php:362 +#: ../../Zotlabs/Module/Admin/Site.php:384 ../../Zotlabs/Module/Invite.php:422 msgid "duration up from now" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:377 +#: ../../Zotlabs/Module/Admin/Site.php:378 msgid "Register verification expiration time" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:380 +#: ../../Zotlabs/Module/Admin/Site.php:381 msgid "Time before an unverified registration will expire" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:403 +#: ../../Zotlabs/Module/Admin/Site.php:404 msgid "File upload" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:404 +#: ../../Zotlabs/Module/Admin/Site.php:405 msgid "Policies" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:412 msgid "Banner/Logo" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:412 msgid "Unfiltered HTML/CSS/JS is allowed" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:412 +#: ../../Zotlabs/Module/Admin/Site.php:413 msgid "Administrator Information" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:412 +#: ../../Zotlabs/Module/Admin/Site.php:413 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:413 ../../Zotlabs/Module/Siteinfo.php:24 +#: ../../Zotlabs/Module/Admin/Site.php:414 ../../Zotlabs/Module/Siteinfo.php:25 msgid "Site Information" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:413 +#: ../../Zotlabs/Module/Admin/Site.php:414 msgid "" "Publicly visible description of this site. Displayed on siteinfo page. " "BBCode can be used here" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:414 +#: ../../Zotlabs/Module/Admin/Site.php:415 msgid "System theme" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:414 +#: ../../Zotlabs/Module/Admin/Site.php:415 msgid "" "Default system theme - may be over-ridden by user profiles - <a href='#' " "id='cnftheme'>change theme settings</a>" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:417 +#: ../../Zotlabs/Module/Admin/Site.php:418 msgid "Allow Feeds as Connections" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:417 +#: ../../Zotlabs/Module/Admin/Site.php:418 msgid "(Heavy system resource usage)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:418 +#: ../../Zotlabs/Module/Admin/Site.php:419 msgid "Maximum image size" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:418 +#: ../../Zotlabs/Module/Admin/Site.php:419 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:419 +#: ../../Zotlabs/Module/Admin/Site.php:420 msgid "Minimum age" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:419 +#: ../../Zotlabs/Module/Admin/Site.php:420 msgid "Minimum age (in years) for who may register on this site." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:420 +#: ../../Zotlabs/Module/Admin/Site.php:421 msgid "Which best describes the types of account offered by this hub?" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:420 +#: ../../Zotlabs/Module/Admin/Site.php:421 msgid "This is displayed on the public server site list." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:426 +#: ../../Zotlabs/Module/Admin/Site.php:427 msgid "Register text" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:428 +#: ../../Zotlabs/Module/Admin/Site.php:429 msgid "This text will be displayed prominently at the registration page" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:432 +#: ../../Zotlabs/Module/Admin/Site.php:433 msgid "Does this site allow new member registration?" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:439 +#: ../../Zotlabs/Module/Admin/Site.php:440 msgid "Configure the registration open days/hours" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:441 +#: ../../Zotlabs/Module/Admin/Site.php:442 msgid "Empty or '-:-' value will keep registration open 24/7 (default)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:442 +#: ../../Zotlabs/Module/Admin/Site.php:443 msgid "" "Weekdays and hours must be separated by colon ':', From-To ranges with a " "dash `-` example: 1:800-1200" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:443 +#: ../../Zotlabs/Module/Admin/Site.php:444 msgid "" "Weekday:Hour pairs must be separated by space ' ' example: 1:900-1700 " "2:900-1700" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:444 +#: ../../Zotlabs/Module/Admin/Site.php:445 msgid "" "From-To ranges must be separated by comma ',' example: 1:800-1200,1300-1700 " "or 1-2,4-5:900-1700" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:445 +#: ../../Zotlabs/Module/Admin/Site.php:446 msgid "Advanced examples:" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:445 -#: ../../Zotlabs/Module/Settings/Channel.php:183 +#: ../../Zotlabs/Module/Admin/Site.php:446 +#: ../../Zotlabs/Module/Settings/Channel.php:184 msgid "or" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:446 +#: ../../Zotlabs/Module/Admin/Site.php:447 msgid "Check your configuration" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:450 +#: ../../Zotlabs/Module/Admin/Site.php:451 msgid "Max account registrations per day" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:452 +#: ../../Zotlabs/Module/Admin/Site.php:453 msgid "Unlimited if zero or no value - default 50" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:456 +#: ../../Zotlabs/Module/Admin/Site.php:457 msgid "Max account registrations from same IP" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:458 +#: ../../Zotlabs/Module/Admin/Site.php:459 msgid "Unlimited if zero or no value - default 3" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:464 +#: ../../Zotlabs/Module/Admin/Site.php:465 msgid "Auto channel create" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:466 +#: ../../Zotlabs/Module/Admin/Site.php:467 msgid "" "If disabled the channel will be created in a separate step during the " "registration process" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:470 +#: ../../Zotlabs/Module/Admin/Site.php:471 msgid "Require invite code" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:475 +#: ../../Zotlabs/Module/Admin/Site.php:476 msgid "Allow invite code" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:480 +#: ../../Zotlabs/Module/Admin/Site.php:481 msgid "Require email address" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:482 +#: ../../Zotlabs/Module/Admin/Site.php:483 msgid "The provided email address will be verified (recommended)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:486 +#: ../../Zotlabs/Module/Admin/Site.php:487 msgid "Abandon account after x days" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:488 +#: ../../Zotlabs/Module/Admin/Site.php:489 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:493 +#: ../../Zotlabs/Module/Admin/Site.php:494 msgid "Site homepage to show visitors (default: login box)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:493 +#: ../../Zotlabs/Module/Admin/Site.php:494 msgid "" "example: 'pubstream' to show public stream, 'page/sys/home' to show a system " "webpage called 'home' or 'include:home.html' to include a file." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:494 +#: ../../Zotlabs/Module/Admin/Site.php:495 msgid "Preserve site homepage URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:494 +#: ../../Zotlabs/Module/Admin/Site.php:495 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:495 +#: ../../Zotlabs/Module/Admin/Site.php:496 msgid "Allowed friend domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:495 +#: ../../Zotlabs/Module/Admin/Site.php:496 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:496 +#: ../../Zotlabs/Module/Admin/Site.php:497 msgid "Force publish" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:496 +#: ../../Zotlabs/Module/Admin/Site.php:497 msgid "" "Check to force all profiles on this site to be listed in the site directory" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:497 +#: ../../Zotlabs/Module/Admin/Site.php:498 msgid "Enable public stream" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:497 +#: ../../Zotlabs/Module/Admin/Site.php:498 msgid "Enable the public stream. Warning: this content is unmoderated" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:498 +#: ../../Zotlabs/Module/Admin/Site.php:499 msgid "Site only public stream" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:498 +#: ../../Zotlabs/Module/Admin/Site.php:499 msgid "Restrict the public stream to content originating at this site" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:499 +#: ../../Zotlabs/Module/Admin/Site.php:500 msgid "Allow anybody on the internet to access the public streams" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:499 +#: ../../Zotlabs/Module/Admin/Site.php:500 msgid "Disable to require authentication before viewing" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:500 +#: ../../Zotlabs/Module/Admin/Site.php:501 msgid "Only import Public stream posts with this text" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:501 +#: ../../Zotlabs/Module/Admin/Site.php:502 msgid "Do not import Public stream posts with this text" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:504 +#: ../../Zotlabs/Module/Admin/Site.php:505 msgid "Login on Homepage" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:504 +#: ../../Zotlabs/Module/Admin/Site.php:505 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:505 +#: ../../Zotlabs/Module/Admin/Site.php:506 msgid "Enable context help" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:505 +#: ../../Zotlabs/Module/Admin/Site.php:506 msgid "" "Display contextual help for the current page when the help button is pressed." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:507 +#: ../../Zotlabs/Module/Admin/Site.php:508 msgid "Reply-to email address for system generated email." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:508 +#: ../../Zotlabs/Module/Admin/Site.php:509 msgid "Sender (From) email address for system generated email." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:509 +#: ../../Zotlabs/Module/Admin/Site.php:510 msgid "Name of email sender for system generated email." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:511 +#: ../../Zotlabs/Module/Admin/Site.php:512 msgid "Directory Server URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:511 +#: ../../Zotlabs/Module/Admin/Site.php:512 msgid "Default directory server" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:513 +#: ../../Zotlabs/Module/Admin/Site.php:514 msgid "Enable SSE Notifications" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:513 +#: ../../Zotlabs/Module/Admin/Site.php:514 msgid "" "If disabled, traditional polling will be used. Warning: this setting might " "not be suited for shared hosting" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:515 +#: ../../Zotlabs/Module/Admin/Site.php:516 msgid "Proxy user" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:516 +#: ../../Zotlabs/Module/Admin/Site.php:517 msgid "Proxy URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:517 +#: ../../Zotlabs/Module/Admin/Site.php:518 msgid "Network timeout" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:517 +#: ../../Zotlabs/Module/Admin/Site.php:518 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:518 +#: ../../Zotlabs/Module/Admin/Site.php:519 msgid "Delivery interval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:518 +#: ../../Zotlabs/Module/Admin/Site.php:519 msgid "" "Delay background delivery processes by this many seconds to reduce system " "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " "for large dedicated servers." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:519 +#: ../../Zotlabs/Module/Admin/Site.php:520 msgid "Deliveries per process" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:519 +#: ../../Zotlabs/Module/Admin/Site.php:520 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust " "if necessary to tune system performance. Recommend: 1-5." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:521 +#: ../../Zotlabs/Module/Admin/Site.php:522 msgid "Poll interval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:521 +#: ../../Zotlabs/Module/Admin/Site.php:522 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:522 +#: ../../Zotlabs/Module/Admin/Site.php:523 msgid "Path to ImageMagick convert program" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:522 +#: ../../Zotlabs/Module/Admin/Site.php:523 msgid "" "If set, use this program to generate photo thumbnails for huge images ( > " "4000 pixels in either dimension), otherwise memory exhaustion may occur. " "Example: /usr/bin/convert" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:523 +#: ../../Zotlabs/Module/Admin/Site.php:524 msgid "Maximum Load Average" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:523 +#: ../../Zotlabs/Module/Admin/Site.php:524 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:524 +#: ../../Zotlabs/Module/Admin/Site.php:525 msgid "Expiration period in days for imported (grid/network) content" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:524 +#: ../../Zotlabs/Module/Admin/Site.php:525 msgid "0 for no expiration of imported content" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:525 +#: ../../Zotlabs/Module/Admin/Site.php:526 msgid "" "Do not expire any posts which have comments less than this many days ago" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:526 +#: ../../Zotlabs/Module/Admin/Site.php:527 msgid "" "Public servers: Optional landing (marketing) webpage for new registrants" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:526 +#: ../../Zotlabs/Module/Admin/Site.php:527 #, php-format msgid "Create this page first. Default is %s/register" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:527 +#: ../../Zotlabs/Module/Admin/Site.php:528 msgid "Page to display after creating a new channel" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:527 +#: ../../Zotlabs/Module/Admin/Site.php:528 msgid "Default: profiles" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:528 +#: ../../Zotlabs/Module/Admin/Site.php:529 msgid "Optional: site location" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:528 +#: ../../Zotlabs/Module/Admin/Site.php:529 msgid "Region or country" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:613 #: ../../Zotlabs/Module/Admin/Site.php:614 +#: ../../Zotlabs/Module/Admin/Site.php:615 msgid "Invalid 24h time value (hhmm/hmm)" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:96 +#: ../../Zotlabs/Module/Admin/Security.php:97 msgid "" "By default, unfiltered HTML is allowed in embedded media. This is inherently " "insecure." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:99 +#: ../../Zotlabs/Module/Admin/Security.php:100 msgid "" "The recommended setting is to only allow unfiltered HTML from the following " "sites:" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:100 +#: ../../Zotlabs/Module/Admin/Security.php:101 msgid "" "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/" "<br />https://vimeo.com/<br />https://soundcloud.com/<br />" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:101 +#: ../../Zotlabs/Module/Admin/Security.php:102 msgid "" "All other embedded content will be filtered, <strong>unless</strong> " "embedded content from that site is explicitly blocked." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:108 +#: ../../Zotlabs/Module/Admin/Security.php:109 msgid "Block public" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:108 +#: ../../Zotlabs/Module/Admin/Security.php:109 msgid "" "Check to block public access to all otherwise public personal pages on this " "site unless you are currently authenticated." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:109 +#: ../../Zotlabs/Module/Admin/Security.php:110 msgid "Provide a cloud root directory" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:109 +#: ../../Zotlabs/Module/Admin/Security.php:110 msgid "" "The cloud root directory lists all channel names which provide public files" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:110 +#: ../../Zotlabs/Module/Admin/Security.php:111 msgid "Show total disk space available to cloud uploads" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:111 +#: ../../Zotlabs/Module/Admin/Security.php:112 msgid "Set \"Transport Security\" HTTP header" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:112 +#: ../../Zotlabs/Module/Admin/Security.php:113 msgid "Set \"Content Security Policy\" HTTP header" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:113 +#: ../../Zotlabs/Module/Admin/Security.php:114 msgid "Allowed email domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:113 +#: ../../Zotlabs/Module/Admin/Security.php:114 msgid "" "Comma separated list of domains which are allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:114 +#: ../../Zotlabs/Module/Admin/Security.php:115 msgid "Not allowed email domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:114 +#: ../../Zotlabs/Module/Admin/Security.php:115 msgid "" "Comma separated list of domains which are not allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains, unless allowed domains have been defined." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:115 +#: ../../Zotlabs/Module/Admin/Security.php:116 msgid "Allow communications only from these sites" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:115 +#: ../../Zotlabs/Module/Admin/Security.php:116 msgid "" "One site per line. Leave empty to allow communication from anywhere by " "default" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:116 +#: ../../Zotlabs/Module/Admin/Security.php:117 msgid "Block communications from these sites" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:117 +#: ../../Zotlabs/Module/Admin/Security.php:118 msgid "Allow communications only from these channels" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:117 +#: ../../Zotlabs/Module/Admin/Security.php:118 msgid "" "One channel (hash) per line. Leave empty to allow from any channel by default" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:118 +#: ../../Zotlabs/Module/Admin/Security.php:119 msgid "Block communications from these channels" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:119 +#: ../../Zotlabs/Module/Admin/Security.php:120 msgid "Only allow embeds from secure (SSL) websites and links." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:120 +#: ../../Zotlabs/Module/Admin/Security.php:121 msgid "Allow unfiltered embedded HTML content only from these domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:120 +#: ../../Zotlabs/Module/Admin/Security.php:121 msgid "One site per line. By default embedded content is filtered." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:121 +#: ../../Zotlabs/Module/Admin/Security.php:122 msgid "Block embedded HTML from these domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:122 +#: ../../Zotlabs/Module/Admin/Security.php:123 msgid "Allow SVG thumbnails in file browser" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:122 +#: ../../Zotlabs/Module/Admin/Security.php:123 msgid "WARNING: SVG images may contain malicious code." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:123 +#: ../../Zotlabs/Module/Admin/Security.php:124 msgid "Allow embedded (inline) PDF files" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:125 +#: ../../Zotlabs/Module/Admin/Security.php:126 msgid "Additional trusted directory server URLs" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:125 +#: ../../Zotlabs/Module/Admin/Security.php:126 msgid "" "Accept directory flags (spam, nsfw) from those servers. One per line like " "https://example.tld" msgstr "" -#: ../../Zotlabs/Module/Manage.php:130 ../../Zotlabs/Module/New_channel.php:147 +#: ../../Zotlabs/Module/Manage.php:130 ../../Zotlabs/Module/New_channel.php:148 #, php-format msgid "You have created %1$.0f of %2$.0f allowed channels." msgstr "" @@ -11873,7 +11861,7 @@ msgid "Delegated Channel" msgstr "" #: ../../Zotlabs/Module/Email_resend.php:12 -#: ../../Zotlabs/Module/Email_validation.php:24 +#: ../../Zotlabs/Module/Email_validation.php:25 msgid "Token verification failed." msgstr "" @@ -11968,7 +11956,7 @@ msgid "Previous" msgstr "" #: ../../Zotlabs/Module/Cal.php:200 ../../Zotlabs/Module/Photos.php:955 -#: ../../Zotlabs/Module/Setup.php:272 ../../Zotlabs/Module/Cdav.php:1027 +#: ../../Zotlabs/Module/Setup.php:275 ../../Zotlabs/Module/Cdav.php:1027 msgid "Next" msgstr "" @@ -12023,55 +12011,55 @@ msgstr "" msgid "Affinity Tool Settings" msgstr "" -#: ../../Zotlabs/Module/Admin.php:96 +#: ../../Zotlabs/Module/Admin.php:98 msgid "Blocked accounts" msgstr "" -#: ../../Zotlabs/Module/Admin.php:97 +#: ../../Zotlabs/Module/Admin.php:99 msgid "Expired accounts" msgstr "" -#: ../../Zotlabs/Module/Admin.php:98 +#: ../../Zotlabs/Module/Admin.php:100 msgid "Expiring accounts" msgstr "" -#: ../../Zotlabs/Module/Admin.php:122 +#: ../../Zotlabs/Module/Admin.php:124 msgid "Message queues" msgstr "" -#: ../../Zotlabs/Module/Admin.php:136 +#: ../../Zotlabs/Module/Admin.php:138 msgid "Your software should be updated" msgstr "" -#: ../../Zotlabs/Module/Admin.php:141 +#: ../../Zotlabs/Module/Admin.php:143 msgid "Summary" msgstr "" -#: ../../Zotlabs/Module/Admin.php:144 +#: ../../Zotlabs/Module/Admin.php:146 msgid "Registered accounts" msgstr "" -#: ../../Zotlabs/Module/Admin.php:145 +#: ../../Zotlabs/Module/Admin.php:147 msgid "Pending registrations" msgstr "" -#: ../../Zotlabs/Module/Admin.php:146 +#: ../../Zotlabs/Module/Admin.php:148 msgid "Registered channels" msgstr "" -#: ../../Zotlabs/Module/Admin.php:147 ../../Zotlabs/Module/Siteinfo.php:41 +#: ../../Zotlabs/Module/Admin.php:149 ../../Zotlabs/Module/Siteinfo.php:42 msgid "Active addons" msgstr "" -#: ../../Zotlabs/Module/Admin.php:148 +#: ../../Zotlabs/Module/Admin.php:150 msgid "Version" msgstr "" -#: ../../Zotlabs/Module/Admin.php:149 +#: ../../Zotlabs/Module/Admin.php:151 msgid "Repository version (master)" msgstr "" -#: ../../Zotlabs/Module/Admin.php:150 +#: ../../Zotlabs/Module/Admin.php:152 msgid "Repository version (dev)" msgstr "" @@ -12146,89 +12134,97 @@ msgstr "" msgid "Lookup xchan beginning with (or webbie): " msgstr "" -#: ../../Zotlabs/Module/Group.php:47 +#: ../../Zotlabs/Module/Group.php:48 msgid "Privacy group created." msgstr "" -#: ../../Zotlabs/Module/Group.php:50 +#: ../../Zotlabs/Module/Group.php:51 msgid "Could not create privacy group." msgstr "" -#: ../../Zotlabs/Module/Group.php:82 +#: ../../Zotlabs/Module/Group.php:83 msgid "Privacy group updated." msgstr "" -#: ../../Zotlabs/Module/Group.php:137 ../../Zotlabs/Module/Group.php:301 +#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:302 msgid "Post to this group by default" msgstr "" -#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:302 +#: ../../Zotlabs/Module/Group.php:139 ../../Zotlabs/Module/Group.php:303 msgid "Add new contacts to this group by default" msgstr "" -#: ../../Zotlabs/Module/Group.php:146 +#: ../../Zotlabs/Module/Group.php:147 msgid "Privacy group name" msgstr "" -#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:249 +#: ../../Zotlabs/Module/Group.php:148 ../../Zotlabs/Module/Group.php:250 msgid "Members are visible to other channels" msgstr "" -#: ../../Zotlabs/Module/Group.php:175 +#: ../../Zotlabs/Module/Group.php:176 msgid "Privacy group removed." msgstr "" -#: ../../Zotlabs/Module/Group.php:178 +#: ../../Zotlabs/Module/Group.php:179 msgid "Unable to remove privacy group." msgstr "" -#: ../../Zotlabs/Module/Group.php:244 +#: ../../Zotlabs/Module/Group.php:245 #, php-format msgid "Privacy Group: %s" msgstr "" -#: ../../Zotlabs/Module/Group.php:246 +#: ../../Zotlabs/Module/Group.php:247 msgid "Privacy group name: " msgstr "" -#: ../../Zotlabs/Module/Group.php:262 +#: ../../Zotlabs/Module/Group.php:263 msgid "Group members" msgstr "" -#: ../../Zotlabs/Module/Group.php:264 +#: ../../Zotlabs/Module/Group.php:265 msgid "Not in this group" msgstr "" -#: ../../Zotlabs/Module/Group.php:296 +#: ../../Zotlabs/Module/Group.php:297 msgid "Click a channel to toggle membership" msgstr "" -#: ../../Zotlabs/Module/Help.php:25 +#: ../../Zotlabs/Module/Help.php:68 msgid "Documentation Search" msgstr "" -#: ../../Zotlabs/Module/Help.php:86 +#: ../../Zotlabs/Module/Help.php:172 +msgid "Not Found" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:225 +msgid "$Projectname Documentation" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:236 +msgid "Contents" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:243 msgid "Members" msgstr "" -#: ../../Zotlabs/Module/Help.php:87 +#: ../../Zotlabs/Module/Help.php:244 msgid "Administrators" msgstr "" -#: ../../Zotlabs/Module/Help.php:88 +#: ../../Zotlabs/Module/Help.php:245 msgid "Developers" msgstr "" -#: ../../Zotlabs/Module/Help.php:89 +#: ../../Zotlabs/Module/Help.php:246 msgid "Tutorials" msgstr "" -#: ../../Zotlabs/Module/Help.php:101 -msgid "$Projectname Documentation" -msgstr "" - -#: ../../Zotlabs/Module/Help.php:102 -msgid "Contents" +#: ../../Zotlabs/Module/Help.php:264 +msgid "Help:" msgstr "" #: ../../Zotlabs/Module/Tagger.php:50 @@ -12240,168 +12236,168 @@ msgstr "" msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" -#: ../../Zotlabs/Module/Invite.php:69 +#: ../../Zotlabs/Module/Invite.php:70 msgid "Invite App" msgstr "" -#: ../../Zotlabs/Module/Invite.php:81 +#: ../../Zotlabs/Module/Invite.php:82 msgid "Register is closed" msgstr "" -#: ../../Zotlabs/Module/Invite.php:115 ../../Zotlabs/Module/Invite.php:562 +#: ../../Zotlabs/Module/Invite.php:116 ../../Zotlabs/Module/Invite.php:563 msgid "Note, the invitation code is valid up to" msgstr "" -#: ../../Zotlabs/Module/Invite.php:128 +#: ../../Zotlabs/Module/Invite.php:129 #, php-format msgid "Too many recipients for one invitation (max %d)" msgstr "" -#: ../../Zotlabs/Module/Invite.php:132 +#: ../../Zotlabs/Module/Invite.php:133 msgid "No recipients for this invitation" msgstr "" -#: ../../Zotlabs/Module/Invite.php:151 +#: ../../Zotlabs/Module/Invite.php:152 #, php-format msgid "(%s) : Not a real email address" msgstr "" -#: ../../Zotlabs/Module/Invite.php:158 +#: ../../Zotlabs/Module/Invite.php:159 #, php-format msgid "(%s) : Not allowed email address" msgstr "" -#: ../../Zotlabs/Module/Invite.php:171 +#: ../../Zotlabs/Module/Invite.php:172 #, php-format msgid "(%s) : email address already in use" msgstr "" -#: ../../Zotlabs/Module/Invite.php:178 +#: ../../Zotlabs/Module/Invite.php:179 #, php-format msgid "(%s) : Accepted email address" msgstr "" -#: ../../Zotlabs/Module/Invite.php:270 +#: ../../Zotlabs/Module/Invite.php:271 #, php-format msgid "To %s : Message delivery success." msgstr "" -#: ../../Zotlabs/Module/Invite.php:302 +#: ../../Zotlabs/Module/Invite.php:303 #, php-format msgid "%1$d mail(s) sent, %2$d mail error(s)" msgstr "" -#: ../../Zotlabs/Module/Invite.php:327 +#: ../../Zotlabs/Module/Invite.php:328 msgid "Invites not proposed by configuration" msgstr "" -#: ../../Zotlabs/Module/Invite.php:328 +#: ../../Zotlabs/Module/Invite.php:329 msgid "Contact the site admin" msgstr "" -#: ../../Zotlabs/Module/Invite.php:344 +#: ../../Zotlabs/Module/Invite.php:345 msgid "Invites by users not enabled" msgstr "" -#: ../../Zotlabs/Module/Invite.php:349 +#: ../../Zotlabs/Module/Invite.php:350 msgid "You have no more invitations available" msgstr "" -#: ../../Zotlabs/Module/Invite.php:365 +#: ../../Zotlabs/Module/Invite.php:366 msgid "Not on xchan" msgstr "" -#: ../../Zotlabs/Module/Invite.php:398 +#: ../../Zotlabs/Module/Invite.php:399 msgid "All users invitation limit exceeded." msgstr "" -#: ../../Zotlabs/Module/Invite.php:416 +#: ../../Zotlabs/Module/Invite.php:417 msgid "Invitation expires after" msgstr "" -#: ../../Zotlabs/Module/Invite.php:517 ../../Zotlabs/Module/Invite.php:556 +#: ../../Zotlabs/Module/Invite.php:518 ../../Zotlabs/Module/Invite.php:557 msgid "Invitation" msgstr "" -#: ../../Zotlabs/Module/Invite.php:547 +#: ../../Zotlabs/Module/Invite.php:548 msgid "Send invitations" msgstr "" -#: ../../Zotlabs/Module/Invite.php:548 +#: ../../Zotlabs/Module/Invite.php:549 msgid "Invitations I am using" msgstr "" -#: ../../Zotlabs/Module/Invite.php:549 +#: ../../Zotlabs/Module/Invite.php:550 msgid "Invitations we are using" msgstr "" -#: ../../Zotlabs/Module/Invite.php:550 +#: ../../Zotlabs/Module/Invite.php:551 msgid "§ Note, the email(s) sent will be recorded in the system logs" msgstr "" -#: ../../Zotlabs/Module/Invite.php:551 +#: ../../Zotlabs/Module/Invite.php:552 msgid "Enter email addresses, one per line:" msgstr "" -#: ../../Zotlabs/Module/Invite.php:552 +#: ../../Zotlabs/Module/Invite.php:553 msgid "Your message:" msgstr "" -#: ../../Zotlabs/Module/Invite.php:553 +#: ../../Zotlabs/Module/Invite.php:554 msgid "Invite template" msgstr "" -#: ../../Zotlabs/Module/Invite.php:555 +#: ../../Zotlabs/Module/Invite.php:556 msgid "Subject:" msgstr "" -#: ../../Zotlabs/Module/Invite.php:561 +#: ../../Zotlabs/Module/Invite.php:562 msgid "Here you may enter personal notes to the recipient(s)" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:21 +#: ../../Zotlabs/Module/Siteinfo.php:22 msgid "About this site" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:22 +#: ../../Zotlabs/Module/Siteinfo.php:23 msgid "Site Name" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:26 +#: ../../Zotlabs/Module/Siteinfo.php:27 msgid "Administrator" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:29 +#: ../../Zotlabs/Module/Siteinfo.php:30 msgid "Software and Project information" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:30 +#: ../../Zotlabs/Module/Siteinfo.php:31 msgid "This site is powered by $Projectname" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:31 +#: ../../Zotlabs/Module/Siteinfo.php:32 msgid "" -"Federated and decentralised networking and identity services provided by Zot" +"Federated and decentralised networking and identity services provided by" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:34 +#: ../../Zotlabs/Module/Siteinfo.php:35 msgid "Additional federated transport protocols:" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:36 +#: ../../Zotlabs/Module/Siteinfo.php:37 #, php-format msgid "Version %s" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:37 +#: ../../Zotlabs/Module/Siteinfo.php:38 msgid "Project homepage" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:38 +#: ../../Zotlabs/Module/Siteinfo.php:39 msgid "Developer homepage" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:42 +#: ../../Zotlabs/Module/Siteinfo.php:43 msgid "Blocked sites" msgstr "" @@ -12672,51 +12668,51 @@ msgstr "" msgid "Use arrows to move the corresponding app up or down in the app tray" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:159 +#: ../../Zotlabs/Module/New_channel.php:160 msgid "Your real name is recommended." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:160 +#: ../../Zotlabs/Module/New_channel.php:161 msgid "" "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation " "Group\"" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:165 +#: ../../Zotlabs/Module/New_channel.php:166 msgid "" "This will be used to create a unique network address (like an email address)." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:167 +#: ../../Zotlabs/Module/New_channel.php:168 msgid "Allowed characters are a-z 0-9, - and _" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:175 +#: ../../Zotlabs/Module/New_channel.php:176 msgid "Channel name" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:178 -#: ../../Zotlabs/Module/Settings/Channel.php:233 +#: ../../Zotlabs/Module/New_channel.php:179 +#: ../../Zotlabs/Module/Settings/Channel.php:234 msgid "Channel role" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:181 +#: ../../Zotlabs/Module/New_channel.php:182 msgid "Create a Channel" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:182 +#: ../../Zotlabs/Module/New_channel.php:183 msgid "" "A channel is a unique network identity. It can represent a person (social " "network profile), a forum (group), a business or celebrity page, a newsfeed, " "and many other things." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:183 +#: ../../Zotlabs/Module/New_channel.php:184 msgid "" "or <a href=\"import\">import an existing channel</a> from another location." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:188 +#: ../../Zotlabs/Module/New_channel.php:189 msgid "Validate" msgstr "" @@ -12872,17 +12868,17 @@ msgstr "" msgid "You must be logged in to see this page." msgstr "" -#: ../../Zotlabs/Module/Hcard.php:37 ../../Zotlabs/Module/Channel.php:149 +#: ../../Zotlabs/Module/Hcard.php:37 ../../Zotlabs/Module/Channel.php:150 #: ../../Zotlabs/Module/Profile.php:62 msgid "Posts and comments" msgstr "" -#: ../../Zotlabs/Module/Hcard.php:44 ../../Zotlabs/Module/Channel.php:156 +#: ../../Zotlabs/Module/Hcard.php:44 ../../Zotlabs/Module/Channel.php:157 #: ../../Zotlabs/Module/Profile.php:69 msgid "Only posts" msgstr "" -#: ../../Zotlabs/Module/Channel.php:230 +#: ../../Zotlabs/Module/Channel.php:231 msgid "Insufficient permissions. Request redirected to profile page." msgstr "" @@ -12970,260 +12966,260 @@ msgstr "" msgid "Unable to remove source." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:22 ../../Zotlabs/Module/Profiles.php:210 -#: ../../Zotlabs/Module/Profiles.php:638 +#: ../../Zotlabs/Module/Profiles.php:23 ../../Zotlabs/Module/Profiles.php:211 +#: ../../Zotlabs/Module/Profiles.php:641 msgid "Profile not found." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:42 +#: ../../Zotlabs/Module/Profiles.php:43 msgid "Profile deleted." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:66 ../../Zotlabs/Module/Profiles.php:103 +#: ../../Zotlabs/Module/Profiles.php:67 ../../Zotlabs/Module/Profiles.php:104 msgid "Profile-" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:88 ../../Zotlabs/Module/Profiles.php:125 +#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:126 msgid "New profile created." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:109 +#: ../../Zotlabs/Module/Profiles.php:110 msgid "Profile unavailable to clone." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:144 +#: ../../Zotlabs/Module/Profiles.php:145 msgid "Profile unavailable to export." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:220 +#: ../../Zotlabs/Module/Profiles.php:221 msgid "Profile Name is required." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:425 +#: ../../Zotlabs/Module/Profiles.php:426 msgid "Marital Status" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:429 +#: ../../Zotlabs/Module/Profiles.php:430 msgid "Romantic Partner" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:433 ../../Zotlabs/Module/Profiles.php:784 +#: ../../Zotlabs/Module/Profiles.php:434 ../../Zotlabs/Module/Profiles.php:787 msgid "Likes" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:437 ../../Zotlabs/Module/Profiles.php:785 +#: ../../Zotlabs/Module/Profiles.php:438 ../../Zotlabs/Module/Profiles.php:788 msgid "Dislikes" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:441 ../../Zotlabs/Module/Profiles.php:792 +#: ../../Zotlabs/Module/Profiles.php:442 ../../Zotlabs/Module/Profiles.php:795 msgid "Work/Employment" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:444 +#: ../../Zotlabs/Module/Profiles.php:445 msgid "Religion" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:448 +#: ../../Zotlabs/Module/Profiles.php:449 msgid "Political Views" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:456 +#: ../../Zotlabs/Module/Profiles.php:457 msgid "Sexual Preference" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:460 +#: ../../Zotlabs/Module/Profiles.php:461 msgid "Homepage" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:464 +#: ../../Zotlabs/Module/Profiles.php:465 msgid "Interests" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:572 +#: ../../Zotlabs/Module/Profiles.php:573 msgid "Profile updated." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:668 +#: ../../Zotlabs/Module/Profiles.php:671 msgid "Hide my connections from viewers of this profile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Profiles.php:684 msgid "Publish my default profile in the network directory" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:689 +#: ../../Zotlabs/Module/Profiles.php:692 msgid "Suggest me as a potential contact to new members" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:693 +#: ../../Zotlabs/Module/Profiles.php:696 msgid "Reveal my online status" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:734 +#: ../../Zotlabs/Module/Profiles.php:737 msgid "Edit Profile Details" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:736 +#: ../../Zotlabs/Module/Profiles.php:739 msgid "View this profile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:738 +#: ../../Zotlabs/Module/Profiles.php:741 msgid "Profile Tools" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:739 +#: ../../Zotlabs/Module/Profiles.php:742 msgid "Change cover photo" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:741 +#: ../../Zotlabs/Module/Profiles.php:744 msgid "Create a new profile using these settings" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:742 +#: ../../Zotlabs/Module/Profiles.php:745 msgid "Clone this profile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:743 +#: ../../Zotlabs/Module/Profiles.php:746 msgid "Delete this profile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:744 +#: ../../Zotlabs/Module/Profiles.php:747 msgid "Add profile things" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:745 +#: ../../Zotlabs/Module/Profiles.php:748 msgid "Basic" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:747 +#: ../../Zotlabs/Module/Profiles.php:750 msgid "Relationship" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:750 +#: ../../Zotlabs/Module/Profiles.php:753 msgid "Import profile from file" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:751 +#: ../../Zotlabs/Module/Profiles.php:754 msgid "Export profile to file" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:752 +#: ../../Zotlabs/Module/Profiles.php:755 msgid "Your gender" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:753 +#: ../../Zotlabs/Module/Profiles.php:756 msgid "Marital status" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:754 +#: ../../Zotlabs/Module/Profiles.php:757 msgid "Sexual preference" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Profiles.php:760 msgid "Profile name" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:759 +#: ../../Zotlabs/Module/Profiles.php:762 msgid "This is your default profile." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:761 +#: ../../Zotlabs/Module/Profiles.php:764 msgid "Your full name" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:762 +#: ../../Zotlabs/Module/Profiles.php:765 msgid "Short title/description" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:762 +#: ../../Zotlabs/Module/Profiles.php:765 msgid "Maximal 190 characters" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:765 +#: ../../Zotlabs/Module/Profiles.php:768 msgid "Street address" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:766 +#: ../../Zotlabs/Module/Profiles.php:769 msgid "Locality/City" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:767 +#: ../../Zotlabs/Module/Profiles.php:770 msgid "Region/State" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:768 +#: ../../Zotlabs/Module/Profiles.php:771 msgid "Postal/Zip code" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:774 +#: ../../Zotlabs/Module/Profiles.php:777 msgid "Who (if applicable)" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:774 +#: ../../Zotlabs/Module/Profiles.php:777 msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:775 +#: ../../Zotlabs/Module/Profiles.php:778 msgid "Since (date)" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:778 +#: ../../Zotlabs/Module/Profiles.php:781 msgid "Tell us about yourself" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:780 +#: ../../Zotlabs/Module/Profiles.php:783 msgid "Hometown" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:781 +#: ../../Zotlabs/Module/Profiles.php:784 msgid "Political views" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:782 +#: ../../Zotlabs/Module/Profiles.php:785 msgid "Religious views" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:783 +#: ../../Zotlabs/Module/Profiles.php:786 msgid "Keywords used in directory listings" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:783 +#: ../../Zotlabs/Module/Profiles.php:786 msgid "Example: fishing photography software" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:786 +#: ../../Zotlabs/Module/Profiles.php:789 msgid "Musical interests" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:787 +#: ../../Zotlabs/Module/Profiles.php:790 msgid "Books, literature" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Profiles.php:791 msgid "Television" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:789 +#: ../../Zotlabs/Module/Profiles.php:792 msgid "Film/Dance/Culture/Entertainment" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:790 +#: ../../Zotlabs/Module/Profiles.php:793 msgid "Hobbies/Interests" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Profiles.php:794 msgid "Love/Romance" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:793 +#: ../../Zotlabs/Module/Profiles.php:796 msgid "School/Education" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:794 +#: ../../Zotlabs/Module/Profiles.php:797 msgid "Contact information and social networks" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:795 +#: ../../Zotlabs/Module/Profiles.php:798 msgid "My other channels" msgstr "" @@ -13243,19 +13239,19 @@ msgstr "" msgid "Remove this file" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:93 +#: ../../Zotlabs/Module/Rbmark.php:72 msgid "Select a bookmark folder" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:98 +#: ../../Zotlabs/Module/Rbmark.php:80 msgid "Save Bookmark" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:99 +#: ../../Zotlabs/Module/Rbmark.php:81 msgid "URL of bookmark" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:104 +#: ../../Zotlabs/Module/Rbmark.php:86 msgid "Or enter new bookmark folder name" msgstr "" @@ -13264,7 +13260,7 @@ msgid "Remote privacy information not available" msgstr "" #: ../../Zotlabs/Module/Lockview.php:144 ../../Zotlabs/Module/Lockview.php:203 -#: ../../Zotlabs/Module/Acl.php:123 +#: ../../Zotlabs/Module/Acl.php:124 msgctxt "acl" msgid "Profile" msgstr "" @@ -13329,58 +13325,58 @@ msgstr "" msgid "Failed to remove event" msgstr "" -#: ../../Zotlabs/Module/Go.php:21 +#: ../../Zotlabs/Module/Go.php:22 msgid "This page is available only to site members" msgstr "" -#: ../../Zotlabs/Module/Go.php:29 +#: ../../Zotlabs/Module/Go.php:30 msgid "What would you like to do?" msgstr "" -#: ../../Zotlabs/Module/Go.php:31 +#: ../../Zotlabs/Module/Go.php:32 msgid "" "Please bookmark this page if you would like to return to it in the future" msgstr "" -#: ../../Zotlabs/Module/Go.php:35 +#: ../../Zotlabs/Module/Go.php:36 msgid "Upload a profile photo" msgstr "" -#: ../../Zotlabs/Module/Go.php:36 +#: ../../Zotlabs/Module/Go.php:37 msgid "Upload a cover photo" msgstr "" -#: ../../Zotlabs/Module/Go.php:37 +#: ../../Zotlabs/Module/Go.php:38 msgid "Edit your default profile" msgstr "" -#: ../../Zotlabs/Module/Go.php:39 +#: ../../Zotlabs/Module/Go.php:40 msgid "View the channel directory" msgstr "" -#: ../../Zotlabs/Module/Go.php:40 +#: ../../Zotlabs/Module/Go.php:41 msgid "View/edit your channel settings" msgstr "" -#: ../../Zotlabs/Module/Go.php:41 +#: ../../Zotlabs/Module/Go.php:42 msgid "View the site or project documentation" msgstr "" -#: ../../Zotlabs/Module/Go.php:42 +#: ../../Zotlabs/Module/Go.php:43 msgid "Visit your channel homepage" msgstr "" -#: ../../Zotlabs/Module/Go.php:43 +#: ../../Zotlabs/Module/Go.php:44 msgid "" "View your connections and/or add somebody whose address you already know" msgstr "" -#: ../../Zotlabs/Module/Go.php:44 +#: ../../Zotlabs/Module/Go.php:45 msgid "" "View your personal stream (this may be empty until you add some connections)" msgstr "" -#: ../../Zotlabs/Module/Go.php:52 +#: ../../Zotlabs/Module/Go.php:53 msgid "View the public stream. Warning: this content is not moderated" msgstr "" @@ -13441,130 +13437,130 @@ msgstr "" msgid "min" msgstr "" -#: ../../Zotlabs/Module/Regate.php:84 +#: ../../Zotlabs/Module/Regate.php:85 msgid "Email resent" msgstr "" -#: ../../Zotlabs/Module/Regate.php:84 +#: ../../Zotlabs/Module/Regate.php:85 msgid "Email resend failed" msgstr "" -#: ../../Zotlabs/Module/Regate.php:109 +#: ../../Zotlabs/Module/Regate.php:110 msgid "Verification successful" msgstr "" -#: ../../Zotlabs/Module/Regate.php:153 +#: ../../Zotlabs/Module/Regate.php:154 msgid "Account successfull created" msgstr "" -#: ../../Zotlabs/Module/Regate.php:211 +#: ../../Zotlabs/Module/Regate.php:212 msgid "Channel successfull created" msgstr "" -#: ../../Zotlabs/Module/Regate.php:217 +#: ../../Zotlabs/Module/Regate.php:218 msgid "Automatic channel creation failed. Please create a channel." msgstr "" -#: ../../Zotlabs/Module/Regate.php:229 +#: ../../Zotlabs/Module/Regate.php:230 msgid "Account creation error" msgstr "" -#: ../../Zotlabs/Module/Regate.php:241 +#: ../../Zotlabs/Module/Regate.php:242 msgid "Verify failed" msgstr "" -#: ../../Zotlabs/Module/Regate.php:246 +#: ../../Zotlabs/Module/Regate.php:247 msgid "Token verification failed" msgstr "" -#: ../../Zotlabs/Module/Regate.php:251 +#: ../../Zotlabs/Module/Regate.php:252 msgid "Request not inside time frame" msgstr "" -#: ../../Zotlabs/Module/Regate.php:257 ../../Zotlabs/Module/Regate.php:287 +#: ../../Zotlabs/Module/Regate.php:258 ../../Zotlabs/Module/Regate.php:288 msgid "Identity unknown" msgstr "" -#: ../../Zotlabs/Module/Regate.php:263 +#: ../../Zotlabs/Module/Regate.php:264 msgid "dId2 mistaken" msgstr "" -#: ../../Zotlabs/Module/Regate.php:291 +#: ../../Zotlabs/Module/Regate.php:292 msgid "Your Registration ID" msgstr "" -#: ../../Zotlabs/Module/Regate.php:304 ../../Zotlabs/Module/Regate.php:396 -#: ../../Zotlabs/Module/Regate.php:428 +#: ../../Zotlabs/Module/Regate.php:305 ../../Zotlabs/Module/Regate.php:397 +#: ../../Zotlabs/Module/Regate.php:429 msgid "Registration verification" msgstr "" -#: ../../Zotlabs/Module/Regate.php:311 ../../Zotlabs/Module/Regate.php:433 +#: ../../Zotlabs/Module/Regate.php:312 ../../Zotlabs/Module/Regate.php:434 msgid "Hold on, you can start verification in" msgstr "" -#: ../../Zotlabs/Module/Regate.php:312 +#: ../../Zotlabs/Module/Regate.php:313 msgid "Please remember your verification token for ID" msgstr "" -#: ../../Zotlabs/Module/Regate.php:314 +#: ../../Zotlabs/Module/Regate.php:315 msgid "Token validity" msgstr "" -#: ../../Zotlabs/Module/Regate.php:350 +#: ../../Zotlabs/Module/Regate.php:351 msgid "Resend email" msgstr "" -#: ../../Zotlabs/Module/Regate.php:355 +#: ../../Zotlabs/Module/Regate.php:356 msgid "Registration status" msgstr "" -#: ../../Zotlabs/Module/Regate.php:358 +#: ../../Zotlabs/Module/Regate.php:359 msgid "Verification successful!" msgstr "" -#: ../../Zotlabs/Module/Regate.php:359 +#: ../../Zotlabs/Module/Regate.php:360 msgid "Your login ID is" msgstr "" -#: ../../Zotlabs/Module/Regate.php:360 +#: ../../Zotlabs/Module/Regate.php:361 msgid "" "After your account has been approved by our administrator you will be able " "to login with your login ID and your provided password." msgstr "" -#: ../../Zotlabs/Module/Regate.php:372 +#: ../../Zotlabs/Module/Regate.php:373 msgid "Registration request revoked" msgstr "" -#: ../../Zotlabs/Module/Regate.php:373 +#: ../../Zotlabs/Module/Regate.php:374 msgid "Sorry for any inconvience. Thank you for your response." msgstr "" -#: ../../Zotlabs/Module/Regate.php:397 +#: ../../Zotlabs/Module/Regate.php:398 msgid "Please enter your verification token for ID" msgstr "" -#: ../../Zotlabs/Module/Regate.php:398 ../../Zotlabs/Module/Regate.php:425 +#: ../../Zotlabs/Module/Regate.php:399 ../../Zotlabs/Module/Regate.php:426 msgid "Please check your email!" msgstr "" -#: ../../Zotlabs/Module/Regate.php:408 +#: ../../Zotlabs/Module/Regate.php:409 msgid "Verification token" msgstr "" -#: ../../Zotlabs/Module/Regate.php:419 +#: ../../Zotlabs/Module/Regate.php:420 msgid "ID expired" msgstr "" -#: ../../Zotlabs/Module/Regate.php:434 +#: ../../Zotlabs/Module/Regate.php:435 msgid "You will require the verification token for ID" msgstr "" -#: ../../Zotlabs/Module/Regate.php:443 +#: ../../Zotlabs/Module/Regate.php:444 msgid "Unknown or expired ID" msgstr "" -#: ../../Zotlabs/Module/Regate.php:454 +#: ../../Zotlabs/Module/Regate.php:455 msgid "dId2 malformed" msgstr "" @@ -13572,434 +13568,434 @@ msgstr "" msgid "Edit Layout" msgstr "" -#: ../../Zotlabs/Module/Setup.php:179 +#: ../../Zotlabs/Module/Setup.php:180 msgid "$Projectname Server - Setup" msgstr "" -#: ../../Zotlabs/Module/Setup.php:183 +#: ../../Zotlabs/Module/Setup.php:184 msgid "Could not connect to database." msgstr "" -#: ../../Zotlabs/Module/Setup.php:187 +#: ../../Zotlabs/Module/Setup.php:188 msgid "" "Could not connect to specified site URL. Possible SSL certificate or DNS " "issue." msgstr "" -#: ../../Zotlabs/Module/Setup.php:194 +#: ../../Zotlabs/Module/Setup.php:195 msgid "Could not create table." msgstr "" -#: ../../Zotlabs/Module/Setup.php:200 +#: ../../Zotlabs/Module/Setup.php:201 msgid "Your site database has been installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:206 +#: ../../Zotlabs/Module/Setup.php:207 msgid "" "You may need to import the file \"install/schema_xxx.sql\" manually using a " "database client." msgstr "" -#: ../../Zotlabs/Module/Setup.php:207 ../../Zotlabs/Module/Setup.php:271 -#: ../../Zotlabs/Module/Setup.php:796 +#: ../../Zotlabs/Module/Setup.php:208 ../../Zotlabs/Module/Setup.php:274 +#: ../../Zotlabs/Module/Setup.php:799 msgid "Please see the file \"install/INSTALL.txt\"." msgstr "" -#: ../../Zotlabs/Module/Setup.php:268 +#: ../../Zotlabs/Module/Setup.php:271 msgid "System check" msgstr "" -#: ../../Zotlabs/Module/Setup.php:273 +#: ../../Zotlabs/Module/Setup.php:276 msgid "Check again" msgstr "" -#: ../../Zotlabs/Module/Setup.php:294 +#: ../../Zotlabs/Module/Setup.php:297 msgid "Database connection" msgstr "" -#: ../../Zotlabs/Module/Setup.php:295 +#: ../../Zotlabs/Module/Setup.php:298 msgid "" "In order to install $Projectname we need to know how to connect to your " "database." msgstr "" -#: ../../Zotlabs/Module/Setup.php:296 +#: ../../Zotlabs/Module/Setup.php:299 msgid "" "Please contact your hosting provider or site administrator if you have " "questions about these settings." msgstr "" -#: ../../Zotlabs/Module/Setup.php:297 +#: ../../Zotlabs/Module/Setup.php:300 msgid "" "The database you specify below should already exist. If it does not, please " "create it before continuing." msgstr "" -#: ../../Zotlabs/Module/Setup.php:301 +#: ../../Zotlabs/Module/Setup.php:304 msgid "Database Server Name" msgstr "" -#: ../../Zotlabs/Module/Setup.php:301 +#: ../../Zotlabs/Module/Setup.php:304 msgid "Default is 127.0.0.1" msgstr "" -#: ../../Zotlabs/Module/Setup.php:302 +#: ../../Zotlabs/Module/Setup.php:305 msgid "Database Port" msgstr "" -#: ../../Zotlabs/Module/Setup.php:302 +#: ../../Zotlabs/Module/Setup.php:305 msgid "Communication port number - use 0 for default" msgstr "" -#: ../../Zotlabs/Module/Setup.php:303 +#: ../../Zotlabs/Module/Setup.php:306 msgid "Database Login Name" msgstr "" -#: ../../Zotlabs/Module/Setup.php:304 +#: ../../Zotlabs/Module/Setup.php:307 msgid "Database Login Password" msgstr "" -#: ../../Zotlabs/Module/Setup.php:305 +#: ../../Zotlabs/Module/Setup.php:308 msgid "Database Name" msgstr "" -#: ../../Zotlabs/Module/Setup.php:306 +#: ../../Zotlabs/Module/Setup.php:309 msgid "Database Type" msgstr "" -#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:348 +#: ../../Zotlabs/Module/Setup.php:311 ../../Zotlabs/Module/Setup.php:351 msgid "Site administrator email address" msgstr "" -#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:348 +#: ../../Zotlabs/Module/Setup.php:311 ../../Zotlabs/Module/Setup.php:351 msgid "" "Your account email address must match this in order to use the web admin " "panel." msgstr "" -#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:350 +#: ../../Zotlabs/Module/Setup.php:312 ../../Zotlabs/Module/Setup.php:353 msgid "Website URL" msgstr "" -#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:350 +#: ../../Zotlabs/Module/Setup.php:312 ../../Zotlabs/Module/Setup.php:353 msgid "Please use SSL (https) URL if available." msgstr "" -#: ../../Zotlabs/Module/Setup.php:310 ../../Zotlabs/Module/Setup.php:352 +#: ../../Zotlabs/Module/Setup.php:313 ../../Zotlabs/Module/Setup.php:355 msgid "Please select a default timezone for your website" msgstr "" -#: ../../Zotlabs/Module/Setup.php:337 +#: ../../Zotlabs/Module/Setup.php:340 msgid "Site settings" msgstr "" -#: ../../Zotlabs/Module/Setup.php:391 +#: ../../Zotlabs/Module/Setup.php:394 msgid "PHP version 8.0 or greater is required." msgstr "" -#: ../../Zotlabs/Module/Setup.php:392 +#: ../../Zotlabs/Module/Setup.php:395 msgid "PHP version" msgstr "" -#: ../../Zotlabs/Module/Setup.php:408 +#: ../../Zotlabs/Module/Setup.php:411 msgid "Could not find a command line version of PHP in the web server PATH." msgstr "" -#: ../../Zotlabs/Module/Setup.php:409 +#: ../../Zotlabs/Module/Setup.php:412 msgid "" "If you don't have a command line version of PHP installed on server, you " "will not be able to run background polling via cron." msgstr "" -#: ../../Zotlabs/Module/Setup.php:413 +#: ../../Zotlabs/Module/Setup.php:416 msgid "PHP executable path" msgstr "" -#: ../../Zotlabs/Module/Setup.php:413 +#: ../../Zotlabs/Module/Setup.php:416 msgid "" "Enter full path to php executable. You can leave this blank to continue the " "installation." msgstr "" -#: ../../Zotlabs/Module/Setup.php:418 +#: ../../Zotlabs/Module/Setup.php:421 msgid "Command line PHP" msgstr "" -#: ../../Zotlabs/Module/Setup.php:428 +#: ../../Zotlabs/Module/Setup.php:431 msgid "" "Unable to check command line PHP, as shell_exec() is disabled. This is " "required." msgstr "" -#: ../../Zotlabs/Module/Setup.php:432 +#: ../../Zotlabs/Module/Setup.php:435 msgid "" "The command line version of PHP on your system does not have " "\"register_argc_argv\" enabled." msgstr "" -#: ../../Zotlabs/Module/Setup.php:433 +#: ../../Zotlabs/Module/Setup.php:436 msgid "This is required for message delivery to work." msgstr "" -#: ../../Zotlabs/Module/Setup.php:436 +#: ../../Zotlabs/Module/Setup.php:439 msgid "PHP register_argc_argv" msgstr "" -#: ../../Zotlabs/Module/Setup.php:456 +#: ../../Zotlabs/Module/Setup.php:459 msgid "" "This is not sufficient to upload larger images or files. You should be able " "to upload at least 4 MB at once." msgstr "" -#: ../../Zotlabs/Module/Setup.php:458 +#: ../../Zotlabs/Module/Setup.php:461 #, php-format msgid "" "Your max allowed total upload size is set to %s. Maximum size of one file to " "upload is set to %s. You are allowed to upload up to %d files at once." msgstr "" -#: ../../Zotlabs/Module/Setup.php:464 +#: ../../Zotlabs/Module/Setup.php:467 msgid "You can adjust these settings in the server php.ini file." msgstr "" -#: ../../Zotlabs/Module/Setup.php:466 +#: ../../Zotlabs/Module/Setup.php:469 msgid "PHP upload limits" msgstr "" -#: ../../Zotlabs/Module/Setup.php:489 +#: ../../Zotlabs/Module/Setup.php:492 msgid "" "Error: the \"openssl_pkey_new\" function on this system is not able to " "generate encryption keys" msgstr "" -#: ../../Zotlabs/Module/Setup.php:490 +#: ../../Zotlabs/Module/Setup.php:493 msgid "" "If running under Windows, please see \"http://www.php.net/manual/en/openssl." "installation.php\"." msgstr "" -#: ../../Zotlabs/Module/Setup.php:493 +#: ../../Zotlabs/Module/Setup.php:496 msgid "Generate encryption keys" msgstr "" -#: ../../Zotlabs/Module/Setup.php:497 +#: ../../Zotlabs/Module/Setup.php:500 msgid "Error: the sodium encryption library is not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:499 +#: ../../Zotlabs/Module/Setup.php:502 msgid "Generate ed25519 encryption keys" msgstr "" -#: ../../Zotlabs/Module/Setup.php:504 +#: ../../Zotlabs/Module/Setup.php:507 msgid "" "Error: one of \"bcmath\" or \"gmp\" (bigmath library) extensions are " "required." msgstr "" -#: ../../Zotlabs/Module/Setup.php:506 +#: ../../Zotlabs/Module/Setup.php:509 msgid "Bigmath library (either bcmath or gmp)" msgstr "" -#: ../../Zotlabs/Module/Setup.php:523 +#: ../../Zotlabs/Module/Setup.php:526 msgid "libCurl PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:524 +#: ../../Zotlabs/Module/Setup.php:527 msgid "GD graphics PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:525 +#: ../../Zotlabs/Module/Setup.php:528 msgid "OpenSSL PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:526 +#: ../../Zotlabs/Module/Setup.php:529 msgid "PDO database PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:527 +#: ../../Zotlabs/Module/Setup.php:530 msgid "mb_string PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:528 +#: ../../Zotlabs/Module/Setup.php:531 msgid "xml PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:529 +#: ../../Zotlabs/Module/Setup.php:532 msgid "zip PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:530 +#: ../../Zotlabs/Module/Setup.php:533 msgid "intl PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:534 ../../Zotlabs/Module/Setup.php:536 +#: ../../Zotlabs/Module/Setup.php:537 ../../Zotlabs/Module/Setup.php:539 msgid "Apache mod_rewrite module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:534 +#: ../../Zotlabs/Module/Setup.php:537 msgid "" "Error: Apache webserver mod-rewrite module is required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:540 ../../Zotlabs/Module/Setup.php:543 +#: ../../Zotlabs/Module/Setup.php:543 ../../Zotlabs/Module/Setup.php:546 msgid "exec" msgstr "" -#: ../../Zotlabs/Module/Setup.php:540 +#: ../../Zotlabs/Module/Setup.php:543 msgid "" "Error: exec is required but is either not installed or has been disabled in " "php.ini" msgstr "" -#: ../../Zotlabs/Module/Setup.php:546 ../../Zotlabs/Module/Setup.php:549 +#: ../../Zotlabs/Module/Setup.php:549 ../../Zotlabs/Module/Setup.php:552 msgid "shell_exec" msgstr "" -#: ../../Zotlabs/Module/Setup.php:546 +#: ../../Zotlabs/Module/Setup.php:549 msgid "" "Error: shell_exec is required but is either not installed or has been " "disabled in php.ini" msgstr "" -#: ../../Zotlabs/Module/Setup.php:554 +#: ../../Zotlabs/Module/Setup.php:557 msgid "Error: libCURL PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:558 +#: ../../Zotlabs/Module/Setup.php:561 msgid "" "Error: GD PHP module with JPEG support or ImageMagick graphics library " "required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:562 +#: ../../Zotlabs/Module/Setup.php:565 msgid "Error: openssl PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:568 +#: ../../Zotlabs/Module/Setup.php:571 msgid "" "Error: PDO database PHP module missing a driver for either mysql or pgsql." msgstr "" -#: ../../Zotlabs/Module/Setup.php:573 +#: ../../Zotlabs/Module/Setup.php:576 msgid "Error: PDO database PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:577 +#: ../../Zotlabs/Module/Setup.php:580 msgid "Error: mb_string PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:581 +#: ../../Zotlabs/Module/Setup.php:584 msgid "Error: xml PHP module required for DAV but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:585 +#: ../../Zotlabs/Module/Setup.php:588 msgid "Error: zip PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:589 +#: ../../Zotlabs/Module/Setup.php:592 msgid "Error: intl PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:608 ../../Zotlabs/Module/Setup.php:617 +#: ../../Zotlabs/Module/Setup.php:611 ../../Zotlabs/Module/Setup.php:620 msgid ".htconfig.php is writable" msgstr "" -#: ../../Zotlabs/Module/Setup.php:613 +#: ../../Zotlabs/Module/Setup.php:616 msgid "" "The web installer needs to be able to create a file called \".htconfig.php\" " "in the top folder of your web server and it is unable to do so." msgstr "" -#: ../../Zotlabs/Module/Setup.php:614 +#: ../../Zotlabs/Module/Setup.php:617 msgid "" "This is most often a permission setting, as the web server may not be able " "to write files in your folder - even if you can." msgstr "" -#: ../../Zotlabs/Module/Setup.php:615 +#: ../../Zotlabs/Module/Setup.php:618 msgid "Please see install/INSTALL.txt for additional information." msgstr "" -#: ../../Zotlabs/Module/Setup.php:631 +#: ../../Zotlabs/Module/Setup.php:634 msgid "" "This software uses the Smarty3 template engine to render its web views. " "Smarty3 compiles templates to PHP to speed up rendering." msgstr "" -#: ../../Zotlabs/Module/Setup.php:632 +#: ../../Zotlabs/Module/Setup.php:635 #, php-format msgid "" "In order to store these compiled templates, the web server needs to have " "write access to the directory %s under the top level web folder." msgstr "" -#: ../../Zotlabs/Module/Setup.php:633 ../../Zotlabs/Module/Setup.php:654 +#: ../../Zotlabs/Module/Setup.php:636 ../../Zotlabs/Module/Setup.php:657 msgid "" "Please ensure that the user that your web server runs as (e.g. www-data) has " "write access to this folder." msgstr "" -#: ../../Zotlabs/Module/Setup.php:634 +#: ../../Zotlabs/Module/Setup.php:637 #, php-format msgid "" "Note: as a security measure, you should give the web server write access to " "%s only--not the template files (.tpl) that it contains." msgstr "" -#: ../../Zotlabs/Module/Setup.php:637 +#: ../../Zotlabs/Module/Setup.php:640 #, php-format msgid "%s is writable" msgstr "" -#: ../../Zotlabs/Module/Setup.php:653 +#: ../../Zotlabs/Module/Setup.php:656 msgid "" "This software uses the store directory to save uploaded files. The web " "server needs to have write access to the store directory under the top level " "web folder" msgstr "" -#: ../../Zotlabs/Module/Setup.php:657 +#: ../../Zotlabs/Module/Setup.php:660 msgid "store is writable" msgstr "" -#: ../../Zotlabs/Module/Setup.php:689 +#: ../../Zotlabs/Module/Setup.php:692 msgid "" "SSL certificate cannot be validated. Fix certificate or disable https access " "to this site." msgstr "" -#: ../../Zotlabs/Module/Setup.php:690 +#: ../../Zotlabs/Module/Setup.php:693 msgid "" "If you have https access to your website or allow connections to TCP port " "443 (the https: port), you MUST use a browser-valid certificate. You MUST " "NOT use self-signed certificates!" msgstr "" -#: ../../Zotlabs/Module/Setup.php:691 +#: ../../Zotlabs/Module/Setup.php:694 msgid "" "This restriction is incorporated because public posts from you may for " "example contain references to images on your own hub." msgstr "" -#: ../../Zotlabs/Module/Setup.php:692 +#: ../../Zotlabs/Module/Setup.php:695 msgid "" "If your certificate is not recognized, members of other sites (who may " "themselves have valid certificates) will get a warning message on their own " "site complaining about security issues." msgstr "" -#: ../../Zotlabs/Module/Setup.php:693 +#: ../../Zotlabs/Module/Setup.php:696 msgid "" "This can cause usability issues elsewhere (not just on your own site) so we " "must insist on this requirement." msgstr "" -#: ../../Zotlabs/Module/Setup.php:694 +#: ../../Zotlabs/Module/Setup.php:697 msgid "" "Providers are available that issue free certificates which are browser-valid." msgstr "" -#: ../../Zotlabs/Module/Setup.php:695 +#: ../../Zotlabs/Module/Setup.php:698 msgid "" "If you are confident that the certificate is valid and signed by a trusted " "authority, check to see if you have failed to install an intermediate cert. " @@ -14007,32 +14003,32 @@ msgid "" "server communications." msgstr "" -#: ../../Zotlabs/Module/Setup.php:697 +#: ../../Zotlabs/Module/Setup.php:700 msgid "SSL certificate validation" msgstr "" -#: ../../Zotlabs/Module/Setup.php:703 +#: ../../Zotlabs/Module/Setup.php:706 msgid "" "Url rewrite in .htaccess is not working. Check your server configuration." "Test: " msgstr "" -#: ../../Zotlabs/Module/Setup.php:706 +#: ../../Zotlabs/Module/Setup.php:709 msgid "Url rewrite is working" msgstr "" -#: ../../Zotlabs/Module/Setup.php:719 +#: ../../Zotlabs/Module/Setup.php:722 msgid "" "The database configuration file \".htconfig.php\" could not be written. " "Please use the enclosed text to create a configuration file in your web " "server root." msgstr "" -#: ../../Zotlabs/Module/Setup.php:794 +#: ../../Zotlabs/Module/Setup.php:797 msgid "<h1>What next?</h1>" msgstr "" -#: ../../Zotlabs/Module/Setup.php:795 +#: ../../Zotlabs/Module/Setup.php:798 msgid "" "IMPORTANT: You will need to [manually] setup a scheduled task for the poller." msgstr "" @@ -14041,23 +14037,23 @@ msgstr "" msgid "toggle full screen mode" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 +#: ../../Zotlabs/Module/Profperm.php:35 ../../Zotlabs/Module/Profperm.php:64 msgid "Invalid profile identifier." msgstr "" -#: ../../Zotlabs/Module/Profperm.php:111 +#: ../../Zotlabs/Module/Profperm.php:112 msgid "Profile Visibility Editor" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:115 +#: ../../Zotlabs/Module/Profperm.php:116 msgid "Click on a contact to add or remove." msgstr "" -#: ../../Zotlabs/Module/Profperm.php:124 +#: ../../Zotlabs/Module/Profperm.php:125 msgid "Visible To" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:140 +#: ../../Zotlabs/Module/Profperm.php:141 #: ../../Zotlabs/Module/Connections.php:221 msgid "All Connections" msgstr "" @@ -14066,7 +14062,7 @@ msgstr "" msgid "Language App" msgstr "" -#: ../../Zotlabs/Module/Rpost.php:217 ../../Zotlabs/Module/Editpost.php:113 +#: ../../Zotlabs/Module/Rpost.php:117 ../../Zotlabs/Module/Editpost.php:113 msgid "Edit post" msgstr "" @@ -14276,7 +14272,7 @@ msgstr "" msgid "Default Addressbook" msgstr "" -#: ../../Zotlabs/Module/Dirsearch.php:31 +#: ../../Zotlabs/Module/Dirsearch.php:32 msgid "This directory server requires an access token" msgstr "" @@ -14312,74 +14308,74 @@ msgstr "" msgid "Connected OAuth2 Apps" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:125 +#: ../../Zotlabs/Module/Settings/Display.php:126 #, php-format msgid "%s - (Experimental)" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:182 +#: ../../Zotlabs/Module/Settings/Display.php:183 msgid "Display Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:183 +#: ../../Zotlabs/Module/Settings/Display.php:184 msgid "Theme Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:184 +#: ../../Zotlabs/Module/Settings/Display.php:185 msgid "Custom Theme Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:185 +#: ../../Zotlabs/Module/Settings/Display.php:186 msgid "Content Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:191 +#: ../../Zotlabs/Module/Settings/Display.php:192 msgid "Display Theme:" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:192 +#: ../../Zotlabs/Module/Settings/Display.php:193 msgid "Select scheme" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:194 +#: ../../Zotlabs/Module/Settings/Display.php:195 msgid "Preload images before rendering the page" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:194 +#: ../../Zotlabs/Module/Settings/Display.php:195 msgid "" "The subjective page load time will be longer but the page will be ready when " "displayed" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:195 +#: ../../Zotlabs/Module/Settings/Display.php:196 msgid "Enable user zoom on mobile devices" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:196 +#: ../../Zotlabs/Module/Settings/Display.php:197 msgid "Update browser every xx seconds" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:196 +#: ../../Zotlabs/Module/Settings/Display.php:197 msgid "Minimum of 10 seconds, no maximum" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:197 +#: ../../Zotlabs/Module/Settings/Display.php:198 msgid "Maximum number of conversations to load at any time:" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:197 +#: ../../Zotlabs/Module/Settings/Display.php:198 msgid "Maximum of 30 items" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:198 +#: ../../Zotlabs/Module/Settings/Display.php:199 msgid "Show emoticons (smilies) as images" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:199 +#: ../../Zotlabs/Module/Settings/Display.php:200 msgid "Link post titles to source" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:201 +#: ../../Zotlabs/Module/Settings/Display.php:202 msgid "Display new member quick links menu" msgstr "" @@ -14405,67 +14401,67 @@ msgstr "" msgid "Channel Home Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:21 +#: ../../Zotlabs/Module/Settings/Account.php:23 msgid "Not valid email." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:24 +#: ../../Zotlabs/Module/Settings/Account.php:26 msgid "Protected email address. Cannot change to that email." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:33 +#: ../../Zotlabs/Module/Settings/Account.php:35 msgid "System failure storing new email. Please try again." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:51 +#: ../../Zotlabs/Module/Settings/Account.php:53 msgid "Password verification failed." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:58 +#: ../../Zotlabs/Module/Settings/Account.php:60 msgid "Passwords do not match. Password unchanged." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:62 +#: ../../Zotlabs/Module/Settings/Account.php:64 msgid "Empty passwords are not allowed. Password unchanged." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:76 +#: ../../Zotlabs/Module/Settings/Account.php:78 msgid "Password changed." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:78 +#: ../../Zotlabs/Module/Settings/Account.php:80 msgid "Password update failed. Please try again." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:103 +#: ../../Zotlabs/Module/Settings/Account.php:105 msgid "Account Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:104 +#: ../../Zotlabs/Module/Settings/Account.php:106 msgid "Current Password" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:105 +#: ../../Zotlabs/Module/Settings/Account.php:107 msgid "Enter New Password" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:106 +#: ../../Zotlabs/Module/Settings/Account.php:108 msgid "Confirm New Password" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:106 +#: ../../Zotlabs/Module/Settings/Account.php:108 msgid "Leave password fields blank unless changing" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:108 +#: ../../Zotlabs/Module/Settings/Account.php:110 msgid "Multi-Factor Authentication" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:109 +#: ../../Zotlabs/Module/Settings/Account.php:111 msgid "DId2 or Email Address:" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:112 +#: ../../Zotlabs/Module/Settings/Account.php:114 msgid "Remove this account including all its channels" msgstr "" @@ -14497,103 +14493,103 @@ msgstr "" msgid "Channel Manager Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:48 +#: ../../Zotlabs/Module/Settings/Privacy.php:49 msgid "Privacy settings updated." msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:66 +#: ../../Zotlabs/Module/Settings/Privacy.php:67 msgid "Only those you specifically allow" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:67 +#: ../../Zotlabs/Module/Settings/Privacy.php:68 msgid "Approved connections" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:68 +#: ../../Zotlabs/Module/Settings/Privacy.php:69 msgid "Any connections" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:69 +#: ../../Zotlabs/Module/Settings/Privacy.php:70 msgid "Anybody on this website" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:70 +#: ../../Zotlabs/Module/Settings/Privacy.php:71 msgid "Anybody in this network" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:71 +#: ../../Zotlabs/Module/Settings/Privacy.php:72 msgid "Anybody authenticated" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:72 +#: ../../Zotlabs/Module/Settings/Privacy.php:73 msgid "Anybody on the internet" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:82 +#: ../../Zotlabs/Module/Settings/Privacy.php:83 msgid "" "Advise: set to \"Anybody on the internet\" and use privacy groups to " "restrict access" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:121 +#: ../../Zotlabs/Module/Settings/Privacy.php:122 msgid "Privacy Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:126 +#: ../../Zotlabs/Module/Settings/Privacy.php:127 msgid "Advanced configuration" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:128 +#: ../../Zotlabs/Module/Settings/Privacy.php:129 msgid "Proceed with caution" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:129 +#: ../../Zotlabs/Module/Settings/Privacy.php:130 msgid "" "Changing advanced configuration settings can impact your, and your contacts " "channels functionality and security." msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:130 +#: ../../Zotlabs/Module/Settings/Privacy.php:131 msgid "Accept the risk and continue" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:132 +#: ../../Zotlabs/Module/Settings/Privacy.php:133 msgid "Automatically approve new contacts" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:133 +#: ../../Zotlabs/Module/Settings/Privacy.php:134 msgid "Opt-out of search engine indexing" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:134 +#: ../../Zotlabs/Module/Settings/Privacy.php:135 msgid "Group actor" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:134 +#: ../../Zotlabs/Module/Settings/Privacy.php:135 msgid "Allow this channel to act as a forum" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:135 +#: ../../Zotlabs/Module/Settings/Privacy.php:136 msgid "Accept all messages which mention you" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:135 +#: ../../Zotlabs/Module/Settings/Privacy.php:136 msgid "This setting bypasses normal permissions" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:136 +#: ../../Zotlabs/Module/Settings/Privacy.php:137 msgid "Accept unsolicited comments for moderation" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:136 +#: ../../Zotlabs/Module/Settings/Privacy.php:137 msgid "Otherwise they will be silently dropped" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:137 +#: ../../Zotlabs/Module/Settings/Privacy.php:138 msgid "Enable OCAP access" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:137 +#: ../../Zotlabs/Module/Settings/Privacy.php:138 msgid "Grant limited posts the right to access linked private media" msgstr "" @@ -14617,271 +14613,271 @@ msgstr "" msgid "Conversation Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:105 -#: ../../Zotlabs/Module/Settings/Channel.php:217 +#: ../../Zotlabs/Module/Settings/Channel.php:106 +#: ../../Zotlabs/Module/Settings/Channel.php:218 msgid "Please select a channel role" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:194 +#: ../../Zotlabs/Module/Settings/Channel.php:195 msgid "Your channel address is" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:197 +#: ../../Zotlabs/Module/Settings/Channel.php:198 msgid "Your files/photos are accessible via WebDAV at" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:228 +#: ../../Zotlabs/Module/Settings/Channel.php:229 msgid "Channel Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:235 +#: ../../Zotlabs/Module/Settings/Channel.php:236 msgid "Basic Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:236 +#: ../../Zotlabs/Module/Settings/Channel.php:237 msgid "Channel timezone:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:237 +#: ../../Zotlabs/Module/Settings/Channel.php:238 msgid "Default post location:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:237 +#: ../../Zotlabs/Module/Settings/Channel.php:238 msgid "Geographical location to display on your posts" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:238 +#: ../../Zotlabs/Module/Settings/Channel.php:239 msgid "Use browser location" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:239 +#: ../../Zotlabs/Module/Settings/Channel.php:240 msgid "Adult content" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:239 +#: ../../Zotlabs/Module/Settings/Channel.php:240 msgid "This channel frequently or regularly publishes adult content" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:240 +#: ../../Zotlabs/Module/Settings/Channel.php:241 msgid "Maximum Friend Requests/Day:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:240 +#: ../../Zotlabs/Module/Settings/Channel.php:241 msgid "May reduce spam activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:242 +#: ../../Zotlabs/Module/Settings/Channel.php:243 msgid "By default post a status message when:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:243 +#: ../../Zotlabs/Module/Settings/Channel.php:244 msgid "accepting a friend request" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:244 +#: ../../Zotlabs/Module/Settings/Channel.php:245 msgid "joining a forum/community" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:245 +#: ../../Zotlabs/Module/Settings/Channel.php:246 msgid "making an <em>interesting</em> profile change" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:246 +#: ../../Zotlabs/Module/Settings/Channel.php:247 msgid "Send a notification email when:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:247 +#: ../../Zotlabs/Module/Settings/Channel.php:248 msgid "You receive a connection request" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:248 +#: ../../Zotlabs/Module/Settings/Channel.php:249 msgid "Your connections are confirmed" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:249 +#: ../../Zotlabs/Module/Settings/Channel.php:250 msgid "Someone writes on your profile wall" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:250 +#: ../../Zotlabs/Module/Settings/Channel.php:251 msgid "Someone writes a followup comment" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:251 +#: ../../Zotlabs/Module/Settings/Channel.php:252 msgid "You receive a private message" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:252 +#: ../../Zotlabs/Module/Settings/Channel.php:253 msgid "You receive a friend suggestion" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:253 +#: ../../Zotlabs/Module/Settings/Channel.php:254 msgid "You are tagged in a post" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:254 +#: ../../Zotlabs/Module/Settings/Channel.php:255 msgid "You are poked/prodded/etc. in a post" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:255 +#: ../../Zotlabs/Module/Settings/Channel.php:256 msgid "Someone likes your post/comment" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:256 +#: ../../Zotlabs/Module/Settings/Channel.php:257 msgid "Show visual notifications including:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:257 +#: ../../Zotlabs/Module/Settings/Channel.php:258 msgid "Unseen stream activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:258 +#: ../../Zotlabs/Module/Settings/Channel.php:259 msgid "Unseen channel activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:259 +#: ../../Zotlabs/Module/Settings/Channel.php:260 msgid "Unseen private messages" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:259 -#: ../../Zotlabs/Module/Settings/Channel.php:264 +#: ../../Zotlabs/Module/Settings/Channel.php:260 #: ../../Zotlabs/Module/Settings/Channel.php:265 #: ../../Zotlabs/Module/Settings/Channel.php:266 +#: ../../Zotlabs/Module/Settings/Channel.php:267 msgid "Recommended" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:260 +#: ../../Zotlabs/Module/Settings/Channel.php:261 msgid "Upcoming events" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:261 +#: ../../Zotlabs/Module/Settings/Channel.php:262 msgid "Events today" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:262 +#: ../../Zotlabs/Module/Settings/Channel.php:263 msgid "Upcoming birthdays" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:262 +#: ../../Zotlabs/Module/Settings/Channel.php:263 msgid "Not available in all themes" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:263 +#: ../../Zotlabs/Module/Settings/Channel.php:264 msgid "System (personal) notifications" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:264 +#: ../../Zotlabs/Module/Settings/Channel.php:265 msgid "System info messages" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:265 +#: ../../Zotlabs/Module/Settings/Channel.php:266 msgid "System critical alerts" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:266 +#: ../../Zotlabs/Module/Settings/Channel.php:267 msgid "New connections" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:267 +#: ../../Zotlabs/Module/Settings/Channel.php:268 msgid "System Registrations" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:268 +#: ../../Zotlabs/Module/Settings/Channel.php:269 msgid "Unseen shared files" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:269 +#: ../../Zotlabs/Module/Settings/Channel.php:270 msgid "Unseen public stream activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:270 +#: ../../Zotlabs/Module/Settings/Channel.php:271 msgid "Unseen likes and dislikes" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:271 +#: ../../Zotlabs/Module/Settings/Channel.php:272 msgid "Unseen forum posts" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:272 +#: ../../Zotlabs/Module/Settings/Channel.php:273 msgid "Email notification hub (hostname)" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:272 +#: ../../Zotlabs/Module/Settings/Channel.php:273 #, php-format msgid "" "If your channel is mirrored to multiple hubs, set this to your preferred " "location. This will prevent duplicate email notifications. Example: %s" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:273 +#: ../../Zotlabs/Module/Settings/Channel.php:274 msgid "Show new wall posts, private messages and connections under Notices" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:274 +#: ../../Zotlabs/Module/Settings/Channel.php:275 msgid "Mark all notices of the thread read if a notice is clicked" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:274 +#: ../../Zotlabs/Module/Settings/Channel.php:275 msgid "If no, only the clicked notice will be marked read" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:275 +#: ../../Zotlabs/Module/Settings/Channel.php:276 msgid "" "Desktop notifications are unavailable because the required browser " "permission has not been granted" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:276 +#: ../../Zotlabs/Module/Settings/Channel.php:277 msgid "Grant permission" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:277 +#: ../../Zotlabs/Module/Settings/Channel.php:278 msgid "Notify me of events this many days in advance" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:277 +#: ../../Zotlabs/Module/Settings/Channel.php:278 msgid "Must be greater than 0" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:280 +#: ../../Zotlabs/Module/Settings/Channel.php:281 msgid "Default photo upload folder" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:280 #: ../../Zotlabs/Module/Settings/Channel.php:281 +#: ../../Zotlabs/Module/Settings/Channel.php:282 msgid "%Y - current year, %m - current month" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:281 +#: ../../Zotlabs/Module/Settings/Channel.php:282 msgid "Default file upload folder" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:283 +#: ../../Zotlabs/Module/Settings/Channel.php:284 msgid "Remove this channel." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:284 +#: ../../Zotlabs/Module/Settings/Channel.php:285 msgid "Expire other channel content after this many days" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:284 +#: ../../Zotlabs/Module/Settings/Channel.php:285 msgid "0 or blank to use the website limit." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:284 +#: ../../Zotlabs/Module/Settings/Channel.php:285 #, php-format msgid "This website expires after %d days." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:284 +#: ../../Zotlabs/Module/Settings/Channel.php:285 msgid "This website does not expire imported content." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:284 +#: ../../Zotlabs/Module/Settings/Channel.php:285 msgid "The website limit takes precedence if lower than your limit." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:285 #: ../../Zotlabs/Module/Settings/Channel.php:286 +#: ../../Zotlabs/Module/Settings/Channel.php:287 msgid "" "Words one per line or #tags, $categories, /patterns/, lang=xx, lang!=xx - " "leave blank to import all posts" @@ -14961,11 +14957,11 @@ msgstr "" msgid "Edit Block" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:36 +#: ../../Zotlabs/Module/Email_validation.php:37 msgid "Email Verification Required" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:37 +#: ../../Zotlabs/Module/Email_validation.php:38 #, php-format msgid "" "A verification token was sent to your email address [%s]. Enter that token " @@ -14973,73 +14969,73 @@ msgid "" "for delivery, and check your spam folder if you do not see the message." msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:38 +#: ../../Zotlabs/Module/Email_validation.php:39 msgid "Resend Email" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:41 +#: ../../Zotlabs/Module/Email_validation.php:42 msgid "Validation token" msgstr "" -#: ../../Zotlabs/Module/Import.php:70 +#: ../../Zotlabs/Module/Import.php:71 msgid "Nothing to import." msgstr "" -#: ../../Zotlabs/Module/Import.php:86 ../../Zotlabs/Module/Import.php:100 +#: ../../Zotlabs/Module/Import.php:87 ../../Zotlabs/Module/Import.php:101 msgid "Unable to download data from old server" msgstr "" -#: ../../Zotlabs/Module/Import.php:163 +#: ../../Zotlabs/Module/Import.php:164 #, php-format msgid "Your service plan only allows %d channels." msgstr "" -#: ../../Zotlabs/Module/Import.php:190 +#: ../../Zotlabs/Module/Import.php:191 msgid "No channel. Import failed." msgstr "" -#: ../../Zotlabs/Module/Import.php:557 +#: ../../Zotlabs/Module/Import.php:562 msgid "" "Automatic content and files import was not possible due to API version " "incompatiblity. Please import content and files manually!" msgstr "" -#: ../../Zotlabs/Module/Import.php:585 +#: ../../Zotlabs/Module/Import.php:590 msgid "You must be logged in to use this feature." msgstr "" -#: ../../Zotlabs/Module/Import.php:592 +#: ../../Zotlabs/Module/Import.php:597 msgid "Channel Import" msgstr "" -#: ../../Zotlabs/Module/Import.php:593 +#: ../../Zotlabs/Module/Import.php:598 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 "" -#: ../../Zotlabs/Module/Import.php:595 +#: ../../Zotlabs/Module/Import.php:600 msgid "Or provide the old server/hub details" msgstr "" -#: ../../Zotlabs/Module/Import.php:597 +#: ../../Zotlabs/Module/Import.php:602 msgid "Your old identity address (xyz@example.com)" msgstr "" -#: ../../Zotlabs/Module/Import.php:598 +#: ../../Zotlabs/Module/Import.php:603 msgid "Your old login email address" msgstr "" -#: ../../Zotlabs/Module/Import.php:599 +#: ../../Zotlabs/Module/Import.php:604 msgid "Your old login password" msgstr "" -#: ../../Zotlabs/Module/Import.php:600 +#: ../../Zotlabs/Module/Import.php:605 msgid "Import your items and files (limited by available memory)" msgstr "" -#: ../../Zotlabs/Module/Import.php:602 +#: ../../Zotlabs/Module/Import.php:607 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 " @@ -15047,31 +15043,31 @@ msgid "" "location for files, photos, and media." msgstr "" -#: ../../Zotlabs/Module/Import.php:604 +#: ../../Zotlabs/Module/Import.php:609 msgid "Make this hub my primary location" msgstr "" -#: ../../Zotlabs/Module/Import.php:605 +#: ../../Zotlabs/Module/Import.php:610 msgid "Move this channel (disable all previous locations)" msgstr "" -#: ../../Zotlabs/Module/Import.php:606 +#: ../../Zotlabs/Module/Import.php:611 msgid "Use this channel nickname instead of the one provided" msgstr "" -#: ../../Zotlabs/Module/Import.php:606 +#: ../../Zotlabs/Module/Import.php:611 msgid "" "Leave blank to keep your existing channel nickname. You will be randomly " "assigned a similar nickname if either name is already allocated on this site." msgstr "" -#: ../../Zotlabs/Module/Import.php:608 +#: ../../Zotlabs/Module/Import.php:613 msgid "" "This process may take several minutes to complete. Please submit the form " "only once and leave this page open until finished." msgstr "" -#: ../../Zotlabs/Module/Acl.php:370 +#: ../../Zotlabs/Module/Acl.php:371 msgid "network" msgstr "" diff --git a/util/service_class b/util/service_class index b8a1f2386..afad4c709 100755 --- a/util/service_class +++ b/util/service_class @@ -7,10 +7,12 @@ require_once('include/cli_startup.php'); cli_startup(); +use Zotlabs\Lib\Config; + if($argc > 3) { - $d = get_config('service_class', $argv[1]); + $d = Config::Get('service_class', $argv[1]); $d[$argv[2]] = $argv[3]; - set_config('service_class', $argv[1], $d); + Config::Set('service_class', $argv[1], $d); echo 'Updated service class "' . $argv[1] . '" service "' . $argv[2] . '" to ' . $argv[3] . "\n"; } @@ -24,7 +26,7 @@ if($argc == 3) { ); if(!$r) die('could not find channel'); - + $acct = intval($r[0]['channel_account_id']); } else { exit(); @@ -34,28 +36,28 @@ if($argc == 3) { ); if(!$r) die('could not find account'); - + $c = q('SELECT channel_address FROM channel WHERE channel_account_id=%d', intval($acct) ); - + echo "Account $acct: "; - + foreach($c as $chan) echo $chan['channel_address'] . ', '; - + echo "\n\033[1mProperty Old\t\tNew\033[0m\n"; - + if(empty($r[0]['account_service_class'])) { $oclass = 'None'; $old = false; } else { $oclass = $r[0]['account_service_class']; - $old = get_config('service_class', $oclass); + $old = Config::Get('service_class', $oclass); } echo "service_class $oclass\t\t\033[1m" . $argv[2] . "\033[0m\n"; - - $new = get_config('service_class', $argv[2]); + + $new = Config::Get('service_class', $argv[2]); foreach(array('photo_upload_limit','total_items','total_pages','total_identities','total_channels','total_feeds','attach_upload_limit','minimum_feedcheck_minutes','chatrooms','chatters_inroom','access_tokens') as $prop) { echo $prop . str_repeat(' ',26 - strlen($prop)) . (($old && $old[$prop]) ? $old[$prop] : 'unlimited') . "\t\t\033[1m" . (($new && $new[$prop]) ? $new[$prop] : 'unlimited') . "\033[0m\n"; } @@ -67,7 +69,7 @@ if($argc == 3) { } if($r == 'n') die('no update done'); - + $r = q("UPDATE account SET account_service_class='%s' WHERE account_id=%d", dbesc($argv[2]), intval($acct) @@ -77,11 +79,11 @@ if($argc == 3) { } else { echo "failed\n"; } -} +} if($argc == 2) { - $d = get_config('service_class', $argv[1]); + $d = Config::Get('service_class', $argv[1]); echo $argv[1] . ":\n"; foreach($d as $k => $v) { echo "$k = $v\n"; @@ -89,7 +91,7 @@ if($argc == 2) { } if($argc == 1) { - load_config('service_class'); + Config::Load('service_class'); if(is_array(App::$config['service_class']) && App::$config['service_class']) { foreach(App::$config['service_class'] as $class=>$props) { echo "$class:\n"; @@ -106,4 +108,4 @@ if($argc == 1) { } } } -}
\ No newline at end of file +} diff --git a/util/storageconv b/util/storageconv index 676425038..fe12137a3 100755 --- a/util/storageconv +++ b/util/storageconv @@ -18,6 +18,7 @@ require_once('include/cli_startup.php'); cli_startup(); +use Zotlabs\Lib\Config; use Zotlabs\Lib\Hashpath; if($argc == 1) { @@ -26,8 +27,8 @@ if($argc == 1) { } if($argc == 2) { - - $storage = (intval(get_config('system','photo_storage_type', 1)) > 0 ? 1 : 0); + + $storage = (intval(Config::Get('system','photo_storage_type', 1)) > 0 ? 1 : 0); echo 'Current storage set to: ' . ($storage ? 'filesystem' : 'SQL database') . PHP_EOL; switch($argv[1]) { case 'stats': @@ -38,14 +39,14 @@ if($argc == 2) { $xx = intval($x[0]['qty']); $x = q("SELECT COUNT(resource_id) AS qty FROM photo WHERE photo_usage IN (1, 2)"); echo 'Imported profiles thumbnails: ' . $x[0]['qty'] . PHP_EOL; - $xx += intval($x[0]['qty']); + $xx += intval($x[0]['qty']); echo 'Thumbnails total: ' . $xx . PHP_EOL; $x = q("SELECT COUNT(id) AS qty FROM photo WHERE os_storage != %d AND imgscale > 0", $storage ); echo 'Thumbnails to convert: ' . $x[0]['qty'] . PHP_EOL; break; - + case 'fs': if($storage == 0) { echo 'Please set system.photo_storage_type to 1 before move thumbnails to filesystem storage' . PHP_EOL; @@ -101,7 +102,7 @@ if($argc == 2) { } echo $i . PHP_EOL . 'Total thumbnails processed: ' . $i; break; - + case 'db': if($storage == 1) { echo 'Please set system.photo_storage_type to 0 before move thumbnails to SQL database storage' . PHP_EOL; @@ -119,15 +120,15 @@ if($argc == 2) { $x = q("SELECT id, uid, resource_id, content, imgscale FROM photo WHERE id > %d AND os_storage = 1 AND imgscale > 0 ORDER BY id LIMIT 10", intval($cur_id) ); - + if($x) { foreach($x as $xx) { - + $filename = dbunescbin($xx['content']); $content = file_get_contents($filename); if($content) { - + $z = q("UPDATE photo SET content = '%s', os_storage = 0 WHERE id = %d", dbescbin($content), intval($xx['id']) @@ -136,7 +137,7 @@ if($argc == 2) { echo PHP_EOL . 'Failed to update stored file metadata ' . $filename . PHP_EOL; continue; } - + @unlink($filename); } else @@ -152,7 +153,7 @@ if($argc == 2) { } echo $i . PHP_EOL . 'Total files processed: ' . $i; break; - + default: usage(); return; diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 9df6511aa..69ec2d8ca 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -1312,6 +1312,7 @@ return array( 'Zotlabs\\Lib\\ThreadItem' => $baseDir . '/Zotlabs/Lib/ThreadItem.php', 'Zotlabs\\Lib\\ThreadListener' => $baseDir . '/Zotlabs/Lib/ThreadListener.php', 'Zotlabs\\Lib\\ThreadStream' => $baseDir . '/Zotlabs/Lib/ThreadStream.php', + 'Zotlabs\\Lib\\Traits\\HelpHelperTrait' => $baseDir . '/Zotlabs/Lib/Traits/HelpHelperTrait.php', 'Zotlabs\\Lib\\Verify' => $baseDir . '/Zotlabs/Lib/Verify.php', 'Zotlabs\\Lib\\Webfinger' => $baseDir . '/Zotlabs/Lib/Webfinger.php', 'Zotlabs\\Lib\\XConfig' => $baseDir . '/Zotlabs/Lib/XConfig.php', @@ -1512,8 +1513,6 @@ return array( 'Zotlabs\\Module\\Tasks' => $baseDir . '/Zotlabs/Module/Tasks.php', 'Zotlabs\\Module\\Theme_info' => $baseDir . '/Zotlabs/Module/Theme_info.php', 'Zotlabs\\Module\\Thing' => $baseDir . '/Zotlabs/Module/Thing.php', - 'Zotlabs\\Module\\Toggle_mobile' => $baseDir . '/Zotlabs/Module/Toggle_mobile.php', - 'Zotlabs\\Module\\Toggle_safesearch' => $baseDir . '/Zotlabs/Module/Toggle_safesearch.php', 'Zotlabs\\Module\\Token' => $baseDir . '/Zotlabs/Module/Token.php', 'Zotlabs\\Module\\Tokens' => $baseDir . '/Zotlabs/Module/Tokens.php', 'Zotlabs\\Module\\Totp_check' => $baseDir . '/Zotlabs/Module/Totp_check.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index d6f2c2f9d..1b958f6a8 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -1559,6 +1559,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Lib\\ThreadItem' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadItem.php', 'Zotlabs\\Lib\\ThreadListener' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadListener.php', 'Zotlabs\\Lib\\ThreadStream' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadStream.php', + 'Zotlabs\\Lib\\Traits\\HelpHelperTrait' => __DIR__ . '/../..' . '/Zotlabs/Lib/Traits/HelpHelperTrait.php', 'Zotlabs\\Lib\\Verify' => __DIR__ . '/../..' . '/Zotlabs/Lib/Verify.php', 'Zotlabs\\Lib\\Webfinger' => __DIR__ . '/../..' . '/Zotlabs/Lib/Webfinger.php', 'Zotlabs\\Lib\\XConfig' => __DIR__ . '/../..' . '/Zotlabs/Lib/XConfig.php', @@ -1759,8 +1760,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Module\\Tasks' => __DIR__ . '/../..' . '/Zotlabs/Module/Tasks.php', 'Zotlabs\\Module\\Theme_info' => __DIR__ . '/../..' . '/Zotlabs/Module/Theme_info.php', 'Zotlabs\\Module\\Thing' => __DIR__ . '/../..' . '/Zotlabs/Module/Thing.php', - 'Zotlabs\\Module\\Toggle_mobile' => __DIR__ . '/../..' . '/Zotlabs/Module/Toggle_mobile.php', - 'Zotlabs\\Module\\Toggle_safesearch' => __DIR__ . '/../..' . '/Zotlabs/Module/Toggle_safesearch.php', 'Zotlabs\\Module\\Token' => __DIR__ . '/../..' . '/Zotlabs/Module/Token.php', 'Zotlabs\\Module\\Tokens' => __DIR__ . '/../..' . '/Zotlabs/Module/Tokens.php', 'Zotlabs\\Module\\Totp_check' => __DIR__ . '/../..' . '/Zotlabs/Module/Totp_check.php', diff --git a/view/css/mod_help.css b/view/css/mod_help.css index 1799493b8..3c3bc195f 100644 --- a/view/css/mod_help.css +++ b/view/css/mod_help.css @@ -1,11 +1,11 @@ .doco-list-group-item > a { font-weight: bold; -} +} .sub-menu { margin: 3px 0px 10px 10px; } - + #doco-content h3 { border-bottom: #ccc 3px solid; padding-bottom: 0.3em; @@ -24,6 +24,3 @@ padding-left: 20px; } -#doco-side-toc { - padding-top: 10px; -} diff --git a/view/es-es/hmessages.po b/view/es-es/hmessages.po index 3af7a30ab..20afa3ffc 100644 --- a/view/es-es/hmessages.po +++ b/view/es-es/hmessages.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: hubzilla\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-10 08:15+0000\n" +"POT-Creation-Date: 2024-03-15 18:45+0000\n" "PO-Revision-Date: 2015-09-27 06:48+0000\n" "Last-Translator: Manuel Jiménez Friaza <mjfriaza@disroot.org>, 2017-2024\n" "Language-Team: Spanish (Spain) (http://app.transifex.com/Friendica/hubzilla/language/es_ES/)\n" @@ -29,22 +29,23 @@ msgstr "" msgid "Source channel not found." msgstr "No se ha encontrado el canal de origen." -#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3509 +#: ../../view/theme/redbasic/php/config.php:18 ../../include/text.php:3514 #: ../../addon/cart/submodules/orderoptions.php:335 #: ../../addon/cart/submodules/orderoptions.php:359 #: ../../addon/cart/submodules/orderoptions.php:435 #: ../../addon/cart/submodules/orderoptions.php:459 -#: ../../Zotlabs/Module/Admin/Site.php:245 +#: ../../Zotlabs/Module/Admin/Site.php:231 msgid "Default" msgstr "Predeterminado" -#: ../../view/theme/redbasic/php/config.php:16 #: ../../view/theme/redbasic/php/config.php:19 +#: ../../view/theme/redbasic/php/config.php:22 msgid "Focus (Hubzilla default)" msgstr "Focus (predefinido)" -#: ../../view/theme/redbasic/php/config.php:98 ../../include/js_strings.php:23 -#: ../../addon/irc/irc.php:45 ../../addon/smileybutton/Mod_Smileybutton.php:53 +#: ../../view/theme/redbasic/php/config.php:188 +#: ../../include/js_strings.php:23 ../../addon/irc/irc.php:45 +#: ../../addon/smileybutton/Mod_Smileybutton.php:53 #: ../../addon/socialauth/Mod_SocialAuth.php:341 #: ../../addon/hubwall/hubwall.php:95 #: ../../addon/openclipatar/openclipatar.php:54 @@ -54,14 +55,14 @@ msgstr "Focus (predefinido)" #: ../../addon/ijpost/Mod_Ijpost.php:72 ../../addon/redred/Mod_Redred.php:88 #: ../../addon/startpage/Mod_Startpage.php:71 #: ../../addon/libertree/Mod_Libertree.php:68 ../../addon/logrot/logrot.php:35 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:62 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:61 #: ../../addon/dwpost/Mod_Dwpost.php:78 ../../addon/diaspora/diaspora.php:90 #: ../../addon/diaspora/Mod_Diaspora.php:101 #: ../../addon/fuzzloc/Mod_Fuzzloc.php:54 #: ../../addon/mailtest/mailtest.php:100 ../../addon/nsfw/Mod_Nsfw.php:59 #: ../../addon/pumpio/Mod_Pumpio.php:113 ../../addon/wppost/Mod_Wppost.php:107 #: ../../addon/wiki/Mod_Wiki.php:218 ../../addon/wiki/Mod_Wiki.php:907 -#: ../../addon/wiki/Widget/Wiki_pages.php:69 ../../addon/xmpp/Mod_Xmpp.php:70 +#: ../../addon/wiki/Widget/Wiki_pages.php:72 ../../addon/xmpp/Mod_Xmpp.php:70 #: ../../addon/statusnet/statusnet.php:602 #: ../../addon/statusnet/Mod_Statusnet.php:191 #: ../../addon/statusnet/Mod_Statusnet.php:249 @@ -73,7 +74,7 @@ msgstr "Focus (predefinido)" #: ../../addon/cart/submodules/manualcat.php:248 #: ../../addon/cart/submodules/orderoptions.php:312 #: ../../addon/cart/submodules/orderoptions.php:412 -#: ../../addon/cart/cart.php:1425 ../../addon/cart/Settings/Cart.php:132 +#: ../../addon/cart/cart.php:1424 ../../addon/cart/Settings/Cart.php:132 #: ../../addon/cart/Settings/Cart.php:142 #: ../../addon/twitter/Mod_Twitter.php:182 #: ../../addon/redfiles/redfiles.php:124 @@ -88,16 +89,16 @@ msgstr "Focus (predefinido)" #: ../../addon/rtof/Mod_Rtof.php:70 ../../addon/nofed/Mod_Nofed.php:51 #: ../../addon/photocache/Mod_Photocache.php:63 #: ../../addon/likebanner/likebanner.php:57 -#: ../../Zotlabs/Lib/ThreadItem.php:832 ../../Zotlabs/Storage/Browser.php:385 +#: ../../Zotlabs/Lib/ThreadItem.php:862 ../../Zotlabs/Storage/Browser.php:385 #: ../../Zotlabs/Module/Oauth.php:109 #: ../../Zotlabs/Module/Import_items.php:125 -#: ../../Zotlabs/Module/Thing.php:328 ../../Zotlabs/Module/Thing.php:381 +#: ../../Zotlabs/Module/Thing.php:357 ../../Zotlabs/Module/Thing.php:409 #: ../../Zotlabs/Module/Tokens.php:294 ../../Zotlabs/Module/Pdledit.php:137 #: ../../Zotlabs/Module/Connect.php:107 #: ../../Zotlabs/Module/Filestorage.php:208 -#: ../../Zotlabs/Module/Contactedit.php:429 -#: ../../Zotlabs/Module/Contactedit.php:462 ../../Zotlabs/Module/Mood.php:156 -#: ../../Zotlabs/Module/Pconfig.php:117 ../../Zotlabs/Module/Appman.php:220 +#: ../../Zotlabs/Module/Contactedit.php:415 +#: ../../Zotlabs/Module/Contactedit.php:448 +#: ../../Zotlabs/Module/Pconfig.php:117 ../../Zotlabs/Module/Appman.php:230 #: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Defperms.php:262 #: ../../Zotlabs/Module/Locs.php:125 #: ../../Zotlabs/Module/Admin/Accounts.php:309 @@ -108,19 +109,18 @@ msgstr "Focus (predefinido)" #: ../../Zotlabs/Module/Admin/Channels.php:147 #: ../../Zotlabs/Module/Admin/Account_edit.php:73 #: ../../Zotlabs/Module/Admin/Logs.php:84 -#: ../../Zotlabs/Module/Admin/Site.php:415 +#: ../../Zotlabs/Module/Admin/Site.php:401 #: ../../Zotlabs/Module/Admin/Security.php:129 -#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Module/Affinity.php:84 -#: ../../Zotlabs/Module/Permcats.php:257 ../../Zotlabs/Module/Xchan.php:15 -#: ../../Zotlabs/Module/Group.php:150 ../../Zotlabs/Module/Group.php:159 -#: ../../Zotlabs/Module/Invite.php:563 ../../Zotlabs/Module/Mitem.php:259 -#: ../../Zotlabs/Module/Photos.php:1056 ../../Zotlabs/Module/Photos.php:1095 -#: ../../Zotlabs/Module/Photos.php:1208 ../../Zotlabs/Module/Sources.php:123 -#: ../../Zotlabs/Module/Sources.php:160 ../../Zotlabs/Module/Profiles.php:739 -#: ../../Zotlabs/Module/Chat.php:208 ../../Zotlabs/Module/Chat.php:247 -#: ../../Zotlabs/Module/Regate.php:407 ../../Zotlabs/Module/Setup.php:316 -#: ../../Zotlabs/Module/Setup.php:356 ../../Zotlabs/Module/Editpost.php:88 -#: ../../Zotlabs/Module/Oauth2.php:114 +#: ../../Zotlabs/Module/Affinity.php:84 ../../Zotlabs/Module/Permcats.php:257 +#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Group.php:150 +#: ../../Zotlabs/Module/Group.php:159 ../../Zotlabs/Module/Invite.php:563 +#: ../../Zotlabs/Module/Mitem.php:259 ../../Zotlabs/Module/Photos.php:1056 +#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1208 +#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:160 +#: ../../Zotlabs/Module/Profiles.php:735 ../../Zotlabs/Module/Chat.php:208 +#: ../../Zotlabs/Module/Chat.php:247 ../../Zotlabs/Module/Regate.php:407 +#: ../../Zotlabs/Module/Setup.php:316 ../../Zotlabs/Module/Setup.php:356 +#: ../../Zotlabs/Module/Editpost.php:88 ../../Zotlabs/Module/Oauth2.php:114 #: ../../Zotlabs/Module/Settings/Display.php:187 #: ../../Zotlabs/Module/Settings/Network.php:62 #: ../../Zotlabs/Module/Settings/Channel_home.php:91 @@ -143,36 +143,64 @@ msgstr "Focus (predefinido)" msgid "Submit" msgstr "Enviar" -#: ../../view/theme/redbasic/php/config.php:102 +#: ../../view/theme/redbasic/php/config.php:192 msgid "Theme settings" msgstr "Ajustes del tema" -#: ../../view/theme/redbasic/php/config.php:103 +#: ../../view/theme/redbasic/php/config.php:193 msgid "Dark style" msgstr "Estilo oscuro" -#: ../../view/theme/redbasic/php/config.php:104 +#: ../../view/theme/redbasic/php/config.php:194 msgid "Light style" msgstr "Estilo claro" -#: ../../view/theme/redbasic/php/config.php:105 +#: ../../view/theme/redbasic/php/config.php:195 msgid "Common settings" msgstr "Ajustes comunes" -#: ../../view/theme/redbasic/php/config.php:106 +#: ../../view/theme/redbasic/php/config.php:196 +msgid "Primary theme color" +msgstr "Color del tema principal" + +#: ../../view/theme/redbasic/php/config.php:196 +#: ../../view/theme/redbasic/php/config.php:197 +#: ../../view/theme/redbasic/php/config.php:198 +#: ../../view/theme/redbasic/php/config.php:199 +#: ../../view/theme/redbasic/php/config.php:200 +msgid "Current color, leave empty for default" +msgstr "Color actual, dejar vacío por defecto" + +#: ../../view/theme/redbasic/php/config.php:197 +msgid "Success theme color" +msgstr "Éxito en el color del tema" + +#: ../../view/theme/redbasic/php/config.php:198 +msgid "Info theme color" +msgstr "Información del color del tema" + +#: ../../view/theme/redbasic/php/config.php:199 +msgid "Warning theme color" +msgstr "Advertencia sobre el color del tema" + +#: ../../view/theme/redbasic/php/config.php:200 +msgid "Danger theme color" +msgstr "Peligro en el color del tema" + +#: ../../view/theme/redbasic/php/config.php:201 msgid "Default to dark mode" msgstr "Modo oscuro por defecto" -#: ../../view/theme/redbasic/php/config.php:106 -#: ../../view/theme/redbasic/php/config.php:107 -#: ../../view/theme/redbasic/php/config.php:108 -#: ../../view/theme/redbasic/php/config.php:124 -#: ../../include/conversation.php:1492 +#: ../../view/theme/redbasic/php/config.php:201 +#: ../../view/theme/redbasic/php/config.php:202 +#: ../../view/theme/redbasic/php/config.php:203 +#: ../../view/theme/redbasic/php/config.php:215 +#: ../../include/conversation.php:1265 #: ../../addon/smileybutton/Mod_Smileybutton.php:42 #: ../../addon/socialauth/Mod_SocialAuth.php:218 #: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/redred/Mod_Redred.php:61 #: ../../addon/libertree/Mod_Libertree.php:57 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:42 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 #: ../../addon/dwpost/Mod_Dwpost.php:59 ../../addon/dwpost/Mod_Dwpost.php:63 #: ../../addon/diaspora/Mod_Diaspora.php:70 #: ../../addon/pumpio/Mod_Pumpio.php:92 ../../addon/pumpio/Mod_Pumpio.php:96 @@ -201,26 +229,26 @@ msgstr "Modo oscuro por defecto" #: ../../addon/cart/submodules/orderoptions.php:362 #: ../../addon/cart/submodules/orderoptions.php:438 #: ../../addon/cart/submodules/orderoptions.php:462 -#: ../../addon/cart/cart.php:1419 ../../addon/cart/Settings/Cart.php:61 +#: ../../addon/cart/cart.php:1418 ../../addon/cart/Settings/Cart.php:61 #: ../../addon/cart/Settings/Cart.php:73 #: ../../addon/twitter/Mod_Twitter.php:160 #: ../../addon/twitter/Mod_Twitter.php:169 #: ../../addon/content_import/Mod_content_import.php:135 #: ../../addon/content_import/Mod_content_import.php:136 #: ../../addon/rtof/Mod_Rtof.php:47 ../../addon/nofed/Mod_Nofed.php:40 -#: ../../boot.php:1753 ../../Zotlabs/Lib/Libzotdir.php:165 +#: ../../boot.php:1751 ../../Zotlabs/Lib/Libzotdir.php:165 #: ../../Zotlabs/Lib/Libzotdir.php:166 ../../Zotlabs/Lib/Libzotdir.php:168 #: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:310 #: ../../Zotlabs/Storage/Browser.php:311 ../../Zotlabs/Storage/Browser.php:392 #: ../../Zotlabs/Storage/Browser.php:394 ../../Zotlabs/Storage/Browser.php:558 #: ../../Zotlabs/Module/Filestorage.php:203 #: ../../Zotlabs/Module/Filestorage.php:211 -#: ../../Zotlabs/Module/Contactedit.php:284 -#: ../../Zotlabs/Module/Contactedit.php:329 +#: ../../Zotlabs/Module/Contactedit.php:270 +#: ../../Zotlabs/Module/Contactedit.php:315 #: ../../Zotlabs/Module/Register.php:512 ../../Zotlabs/Module/Connedit.php:622 #: ../../Zotlabs/Module/Defperms.php:195 ../../Zotlabs/Module/Api.php:99 #: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 -#: ../../Zotlabs/Module/Admin/Site.php:319 +#: ../../Zotlabs/Module/Admin/Site.php:305 #: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:137 #: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:147 #: ../../Zotlabs/Module/Group.php:249 ../../Zotlabs/Module/Group.php:301 @@ -228,8 +256,8 @@ msgstr "Modo oscuro por defecto" #: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 #: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Photos.php:666 #: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:157 -#: ../../Zotlabs/Module/Profiles.php:675 ../../Zotlabs/Module/Profiles.php:685 -#: ../../Zotlabs/Module/Profiles.php:693 ../../Zotlabs/Module/Profiles.php:697 +#: ../../Zotlabs/Module/Profiles.php:671 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:693 #: ../../Zotlabs/Module/Settings/Display.php:86 #: ../../Zotlabs/Module/Settings/Privacy.php:132 #: ../../Zotlabs/Module/Settings/Privacy.php:133 @@ -244,16 +272,16 @@ msgstr "Modo oscuro por defecto" msgid "No" msgstr "No" -#: ../../view/theme/redbasic/php/config.php:106 -#: ../../view/theme/redbasic/php/config.php:107 -#: ../../view/theme/redbasic/php/config.php:108 -#: ../../view/theme/redbasic/php/config.php:124 -#: ../../include/conversation.php:1492 +#: ../../view/theme/redbasic/php/config.php:201 +#: ../../view/theme/redbasic/php/config.php:202 +#: ../../view/theme/redbasic/php/config.php:203 +#: ../../view/theme/redbasic/php/config.php:215 +#: ../../include/conversation.php:1265 #: ../../addon/smileybutton/Mod_Smileybutton.php:42 #: ../../addon/socialauth/Mod_SocialAuth.php:218 #: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/redred/Mod_Redred.php:61 #: ../../addon/libertree/Mod_Libertree.php:57 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:42 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 #: ../../addon/dwpost/Mod_Dwpost.php:59 ../../addon/dwpost/Mod_Dwpost.php:63 #: ../../addon/diaspora/Mod_Diaspora.php:70 #: ../../addon/pumpio/Mod_Pumpio.php:92 ../../addon/pumpio/Mod_Pumpio.php:96 @@ -282,24 +310,24 @@ msgstr "No" #: ../../addon/cart/submodules/orderoptions.php:361 #: ../../addon/cart/submodules/orderoptions.php:437 #: ../../addon/cart/submodules/orderoptions.php:461 -#: ../../addon/cart/cart.php:1419 ../../addon/cart/Settings/Cart.php:61 +#: ../../addon/cart/cart.php:1418 ../../addon/cart/Settings/Cart.php:61 #: ../../addon/cart/Settings/Cart.php:73 #: ../../addon/twitter/Mod_Twitter.php:160 #: ../../addon/twitter/Mod_Twitter.php:169 #: ../../addon/content_import/Mod_content_import.php:135 #: ../../addon/content_import/Mod_content_import.php:136 #: ../../addon/rtof/Mod_Rtof.php:47 ../../addon/nofed/Mod_Nofed.php:40 -#: ../../boot.php:1753 ../../Zotlabs/Lib/Libzotdir.php:165 +#: ../../boot.php:1751 ../../Zotlabs/Lib/Libzotdir.php:165 #: ../../Zotlabs/Lib/Libzotdir.php:166 ../../Zotlabs/Lib/Libzotdir.php:168 #: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:310 #: ../../Zotlabs/Storage/Browser.php:311 ../../Zotlabs/Storage/Browser.php:392 #: ../../Zotlabs/Storage/Browser.php:394 ../../Zotlabs/Storage/Browser.php:558 #: ../../Zotlabs/Module/Filestorage.php:203 #: ../../Zotlabs/Module/Filestorage.php:211 -#: ../../Zotlabs/Module/Contactedit.php:284 +#: ../../Zotlabs/Module/Contactedit.php:270 #: ../../Zotlabs/Module/Register.php:512 ../../Zotlabs/Module/Defperms.php:195 #: ../../Zotlabs/Module/Api.php:98 ../../Zotlabs/Module/Menu.php:163 -#: ../../Zotlabs/Module/Menu.php:222 ../../Zotlabs/Module/Admin/Site.php:321 +#: ../../Zotlabs/Module/Menu.php:222 ../../Zotlabs/Module/Admin/Site.php:307 #: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:137 #: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:147 #: ../../Zotlabs/Module/Group.php:249 ../../Zotlabs/Module/Group.php:301 @@ -307,8 +335,8 @@ msgstr "No" #: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 #: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Photos.php:666 #: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:157 -#: ../../Zotlabs/Module/Profiles.php:675 ../../Zotlabs/Module/Profiles.php:685 -#: ../../Zotlabs/Module/Profiles.php:693 ../../Zotlabs/Module/Profiles.php:697 +#: ../../Zotlabs/Module/Profiles.php:671 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:693 #: ../../Zotlabs/Module/Settings/Display.php:86 #: ../../Zotlabs/Module/Settings/Privacy.php:132 #: ../../Zotlabs/Module/Settings/Privacy.php:133 @@ -323,91 +351,80 @@ msgstr "No" msgid "Yes" msgstr "Sí" -#: ../../view/theme/redbasic/php/config.php:107 +#: ../../view/theme/redbasic/php/config.php:202 msgid "Always use light icons for navbar" msgstr "Utilizar siempre iconos claros para la barra de navegación" -#: ../../view/theme/redbasic/php/config.php:107 +#: ../../view/theme/redbasic/php/config.php:202 msgid "Enable this option if you use a dark navbar color in light mode" msgstr "Active esta opción si utiliza un color oscuro para la barra de navegación en el modo claro." -#: ../../view/theme/redbasic/php/config.php:108 +#: ../../view/theme/redbasic/php/config.php:203 msgid "Narrow navbar" msgstr "Estrechar la barra de navegación" -#: ../../view/theme/redbasic/php/config.php:109 +#: ../../view/theme/redbasic/php/config.php:204 msgid "Navigation bar background color" msgstr "Color de fondo de la barra de navegación" -#: ../../view/theme/redbasic/php/config.php:110 +#: ../../view/theme/redbasic/php/config.php:205 msgid "Dark navigation bar background color" msgstr "Color de fondo oscuro de la barra de navegación" -#: ../../view/theme/redbasic/php/config.php:111 -msgid "Link color" -msgstr "Color del enlace" - -#: ../../view/theme/redbasic/php/config.php:112 -msgid "Dark link color" -msgstr "Color oscuro del enlace" - -#: ../../view/theme/redbasic/php/config.php:113 -msgid "Link hover color" -msgstr "Color de los enlaces al pasar por encima" - -#: ../../view/theme/redbasic/php/config.php:114 -msgid "Dark link hover color" -msgstr "Color oscuro del enlace flotante" - -#: ../../view/theme/redbasic/php/config.php:115 +#: ../../view/theme/redbasic/php/config.php:206 msgid "Set the background color" msgstr "Ajustar el color de fondo" -#: ../../view/theme/redbasic/php/config.php:116 +#: ../../view/theme/redbasic/php/config.php:207 msgid "Set the dark background color" msgstr "Establecer el color de fondo oscuro" -#: ../../view/theme/redbasic/php/config.php:117 +#: ../../view/theme/redbasic/php/config.php:208 msgid "Set the background image" msgstr "Ajustar la imagen de fondo" -#: ../../view/theme/redbasic/php/config.php:118 +#: ../../view/theme/redbasic/php/config.php:209 msgid "Set the dark background image" msgstr "Establecer la imagen de fondo oscuro" -#: ../../view/theme/redbasic/php/config.php:119 +#: ../../view/theme/redbasic/php/config.php:210 msgid "Set font-size for the entire application" msgstr "Ajustar el tamaño de letra para toda la aplicación" -#: ../../view/theme/redbasic/php/config.php:119 +#: ../../view/theme/redbasic/php/config.php:210 msgid "Examples: 1rem, 100%, 16px" msgstr "Ejemplos: 1rem, 100%, 16px" -#: ../../view/theme/redbasic/php/config.php:120 -msgid "Set radius of corners" -msgstr "Establecer el radio de curvatura de las esquinas" +#: ../../view/theme/redbasic/php/config.php:211 +msgid "Set radius of corners in rem" +msgstr "Fijar el radio de las esquinas en rem" -#: ../../view/theme/redbasic/php/config.php:120 -msgid "Example: 4px" -msgstr "Ejemplo: 4px" +#: ../../view/theme/redbasic/php/config.php:211 +msgid "Leave empty for default radius" +msgstr "Dejar vacío para el radio por defecto" -#: ../../view/theme/redbasic/php/config.php:121 +#: ../../view/theme/redbasic/php/config.php:212 msgid "Set maximum width of content region in rem" msgstr "Ajustar la anchura máxima de la región de contenido, en rem" -#: ../../view/theme/redbasic/php/config.php:121 +#: ../../view/theme/redbasic/php/config.php:212 msgid "Leave empty for default width" msgstr "Dejar en blanco para la anchura predeterminada" -#: ../../view/theme/redbasic/php/config.php:122 +#: ../../view/theme/redbasic/php/config.php:213 msgid "Set size of conversation author photo" msgstr "Ajustar el tamaño de la foto del autor de la conversación" -#: ../../view/theme/redbasic/php/config.php:123 +#: ../../view/theme/redbasic/php/config.php:213 +#: ../../view/theme/redbasic/php/config.php:214 +msgid "Leave empty for default size" +msgstr "Dejar vacío para el tamaño por defecto" + +#: ../../view/theme/redbasic/php/config.php:214 msgid "Set size of followup author photos" msgstr "Ajustar el tamaño de foto de los seguidores del autor" -#: ../../view/theme/redbasic/php/config.php:124 +#: ../../view/theme/redbasic/php/config.php:215 msgid "Show advanced settings" msgstr "Mostrar ajustes avanzados" @@ -453,15 +470,15 @@ msgstr "por" msgid " on " msgstr "en" -#: ../../include/oembed.php:421 +#: ../../include/oembed.php:425 msgid "Embedded content" msgstr "Contenido incorporado" -#: ../../include/oembed.php:430 +#: ../../include/oembed.php:434 msgid "Embedding disabled" msgstr "Incrustación deshabilitada" -#: ../../include/event.php:34 ../../include/event.php:129 +#: ../../include/event.php:34 ../../include/event.php:132 msgid "l F d, Y \\@ g:i A" msgstr "l d de F, Y \\@ G:i" @@ -473,91 +490,91 @@ msgstr "Comienza:" msgid "Finishes:" msgstr "Finaliza:" -#: ../../include/event.php:64 ../../include/event.php:154 -#: ../../include/channel.php:1631 ../../Zotlabs/Module/Directory.php:354 +#: ../../include/event.php:66 ../../include/event.php:157 +#: ../../include/channel.php:1639 ../../Zotlabs/Module/Directory.php:354 msgid "Location:" msgstr "Ubicación:" -#: ../../include/event.php:129 +#: ../../include/event.php:132 msgid "l F d, Y" msgstr "l F d, Y" -#: ../../include/event.php:133 +#: ../../include/event.php:136 msgid "Start:" msgstr "Iniciar: " -#: ../../include/event.php:137 +#: ../../include/event.php:140 msgid "End:" msgstr "Finalizar: " -#: ../../include/event.php:142 ../../addon/openid/MysqlProvider.php:67 +#: ../../include/event.php:145 ../../addon/openid/MysqlProvider.php:67 msgid "Timezone" msgstr "Zona horaria" -#: ../../include/event.php:1242 +#: ../../include/event.php:1245 msgid "This event has been added to your calendar." msgstr "Este evento ha sido añadido a su calendario." -#: ../../include/event.php:1396 ../../include/conversation.php:151 +#: ../../include/event.php:1399 ../../include/conversation.php:151 #: ../../include/text.php:2355 ../../Zotlabs/Module/Tagger.php:75 -#: ../../Zotlabs/Module/Like.php:455 +#: ../../Zotlabs/Module/Like.php:450 #: ../../Zotlabs/Module/Channel_calendar.php:221 msgid "event" msgstr "el/su evento" -#: ../../include/event.php:1475 +#: ../../include/event.php:1478 msgid "Not specified" msgstr "Sin especificar" -#: ../../include/event.php:1476 +#: ../../include/event.php:1479 msgid "Needs Action" msgstr "Necesita de una intervención" -#: ../../include/event.php:1477 +#: ../../include/event.php:1480 msgid "Completed" msgstr "Completado/a" -#: ../../include/event.php:1478 +#: ../../include/event.php:1481 msgid "In Process" msgstr "En proceso" -#: ../../include/event.php:1479 +#: ../../include/event.php:1482 msgid "Cancelled" msgstr "Cancelado/a" -#: ../../include/event.php:1560 ../../include/connections.php:781 +#: ../../include/event.php:1563 ../../include/connections.php:781 #: ../../Zotlabs/Module/Connedit.php:741 ../../Zotlabs/Module/Cdav.php:1377 msgid "Mobile" msgstr "Móvil" -#: ../../include/event.php:1561 ../../include/connections.php:782 +#: ../../include/event.php:1564 ../../include/connections.php:782 #: ../../Zotlabs/Widget/Notifications.php:43 #: ../../Zotlabs/Module/Connedit.php:742 ../../Zotlabs/Module/Cdav.php:1378 msgid "Home" msgstr "Inicio" -#: ../../include/event.php:1562 ../../include/connections.php:783 +#: ../../include/event.php:1565 ../../include/connections.php:783 msgid "Home, Voice" msgstr "Llamadas particulares" -#: ../../include/event.php:1563 ../../include/connections.php:784 +#: ../../include/event.php:1566 ../../include/connections.php:784 msgid "Home, Fax" msgstr "Fax particular" -#: ../../include/event.php:1564 ../../include/connections.php:785 +#: ../../include/event.php:1567 ../../include/connections.php:785 #: ../../Zotlabs/Module/Connedit.php:743 ../../Zotlabs/Module/Cdav.php:1379 msgid "Work" msgstr "Trabajo" -#: ../../include/event.php:1565 ../../include/connections.php:786 +#: ../../include/event.php:1568 ../../include/connections.php:786 msgid "Work, Voice" msgstr "Llamadas de trabajo" -#: ../../include/event.php:1566 ../../include/connections.php:787 +#: ../../include/event.php:1569 ../../include/connections.php:787 msgid "Work, Fax" msgstr "Fax de trabajo" -#: ../../include/event.php:1567 ../../include/event.php:1574 +#: ../../include/event.php:1570 ../../include/event.php:1577 #: ../../include/selectors.php:64 ../../include/selectors.php:81 #: ../../include/selectors.php:119 ../../include/selectors.php:155 #: ../../include/connections.php:788 ../../include/connections.php:795 @@ -566,70 +583,71 @@ msgstr "Fax de trabajo" msgid "Other" msgstr "Otro" -#: ../../include/feedutils.php:871 ../../include/text.php:1581 +#: ../../include/feedutils.php:849 ../../include/text.php:1579 msgid "unknown" msgstr "desconocido" #: ../../include/items.php:448 ../../addon/hzfiles/hzfiles.php:75 #: ../../addon/redphotos/redphotos.php:119 -#: ../../addon/redfiles/redfiles.php:109 ../../Zotlabs/Module/Share.php:78 +#: ../../addon/redfiles/redfiles.php:109 #: ../../Zotlabs/Module/Import_items.php:116 -#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:55 +#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:54 #: ../../Zotlabs/Module/Subthread.php:89 ../../Zotlabs/Module/Group.php:108 -#: ../../Zotlabs/Module/Like.php:348 ../../Zotlabs/Module/Profperm.php:28 +#: ../../Zotlabs/Module/Like.php:344 ../../Zotlabs/Module/Profperm.php:28 #: ../../Zotlabs/Web/WebServer.php:118 msgid "Permission denied" msgstr "Permiso denegado" -#: ../../include/items.php:1235 +#: ../../include/items.php:1233 msgid "Visible to anybody on the internet." msgstr "Visible para cualquiera en internet." -#: ../../include/items.php:1237 +#: ../../include/items.php:1235 msgid "Visible to you only." msgstr "Visible sólo para usted." -#: ../../include/items.php:1239 +#: ../../include/items.php:1237 msgid "Visible to anybody in this network." msgstr "Visible para cualquiera en esta red." -#: ../../include/items.php:1241 +#: ../../include/items.php:1239 msgid "Visible to anybody authenticated." msgstr "Visible para cualquiera que esté autenticado." -#: ../../include/items.php:1243 +#: ../../include/items.php:1241 #, php-format msgid "Visible to anybody on %s." msgstr "Visible para cualquiera en %s." -#: ../../include/items.php:1245 +#: ../../include/items.php:1243 msgid "Visible to all connections." msgstr "Visible para todas las conexiones." -#: ../../include/items.php:1247 +#: ../../include/items.php:1245 msgid "Visible to approved connections." msgstr "Visible para las conexiones permitidas." -#: ../../include/items.php:1249 +#: ../../include/items.php:1247 msgid "Visible to specific connections." msgstr "Visible para conexiones específicas." -#: ../../include/items.php:3374 ../../Zotlabs/Module/Share.php:110 +#: ../../include/items.php:3340 ../../Zotlabs/Lib/Activity.php:2177 +#: ../../Zotlabs/Module/Share.php:118 #, php-format msgid "🔁 Repeated %1$s's %2$s" -msgstr "🔁 Repetidos %2$sde %1$s" +msgstr "🔁 Repitió %2$sde %1$s" -#: ../../include/items.php:3877 ../../addon/flashcards/Mod_Flashcards.php:291 +#: ../../include/items.php:3843 ../../addon/flashcards/Mod_Flashcards.php:291 #: ../../addon/flashcards/Mod_Flashcards.php:292 -#: ../../Zotlabs/Module/Display.php:51 ../../Zotlabs/Module/Display.php:112 -#: ../../Zotlabs/Module/Display.php:390 ../../Zotlabs/Module/Thing.php:96 +#: ../../Zotlabs/Module/Display.php:58 ../../Zotlabs/Module/Display.php:119 +#: ../../Zotlabs/Module/Display.php:390 ../../Zotlabs/Module/Thing.php:113 #: ../../Zotlabs/Module/Filestorage.php:29 ../../Zotlabs/Module/Viewsrc.php:25 #: ../../Zotlabs/Module/Admin/Themes.php:72 #: ../../Zotlabs/Module/Admin/Addons.php:263 ../../Zotlabs/Module/Admin.php:61 msgid "Item not found." msgstr "Elemento no encontrado." -#: ../../include/items.php:3957 ../../include/attach.php:156 +#: ../../include/items.php:3923 ../../include/attach.php:156 #: ../../include/attach.php:205 ../../include/attach.php:278 #: ../../include/attach.php:329 ../../include/attach.php:431 #: ../../include/attach.php:445 ../../include/attach.php:452 @@ -643,29 +661,29 @@ msgstr "Elemento no encontrado." #: ../../addon/wiki/Mod_Wiki.php:288 ../../addon/wiki/Mod_Wiki.php:425 #: ../../Zotlabs/Lib/Chatroom.php:135 ../../Zotlabs/Module/Page.php:34 #: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Display.php:386 -#: ../../Zotlabs/Module/Cover_photo.php:341 -#: ../../Zotlabs/Module/Cover_photo.php:354 +#: ../../Zotlabs/Module/Cover_photo.php:298 +#: ../../Zotlabs/Module/Cover_photo.php:311 #: ../../Zotlabs/Module/Editwebpage.php:68 #: ../../Zotlabs/Module/Editwebpage.php:89 #: ../../Zotlabs/Module/Editwebpage.php:107 #: ../../Zotlabs/Module/Editwebpage.php:121 #: ../../Zotlabs/Module/Webpages.php:131 ../../Zotlabs/Module/Network.php:18 #: ../../Zotlabs/Module/Service_limits.php:11 -#: ../../Zotlabs/Module/Thing.php:282 ../../Zotlabs/Module/Thing.php:302 -#: ../../Zotlabs/Module/Thing.php:343 ../../Zotlabs/Module/Pdledit.php:35 +#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:331 +#: ../../Zotlabs/Module/Thing.php:372 ../../Zotlabs/Module/Pdledit.php:35 #: ../../Zotlabs/Module/Filestorage.php:20 #: ../../Zotlabs/Module/Filestorage.php:78 #: ../../Zotlabs/Module/Filestorage.php:96 #: ../../Zotlabs/Module/Filestorage.php:119 -#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Mood.php:126 -#: ../../Zotlabs/Module/Register.php:200 ../../Zotlabs/Module/Appman.php:153 -#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Item.php:513 -#: ../../Zotlabs/Module/Item.php:532 ../../Zotlabs/Module/Item.php:542 -#: ../../Zotlabs/Module/Item.php:1443 ../../Zotlabs/Module/Achievements.php:34 +#: ../../Zotlabs/Module/Filestorage.php:165 +#: ../../Zotlabs/Module/Register.php:200 ../../Zotlabs/Module/Appman.php:163 +#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Item.php:512 +#: ../../Zotlabs/Module/Item.php:531 ../../Zotlabs/Module/Item.php:541 +#: ../../Zotlabs/Module/Item.php:1457 ../../Zotlabs/Module/Achievements.php:34 #: ../../Zotlabs/Module/Connedit.php:299 ../../Zotlabs/Module/Defperms.php:181 #: ../../Zotlabs/Module/Suggest.php:32 ../../Zotlabs/Module/Regmod.php:20 -#: ../../Zotlabs/Module/Profile_photo.php:390 -#: ../../Zotlabs/Module/Profile_photo.php:421 +#: ../../Zotlabs/Module/Profile_photo.php:389 +#: ../../Zotlabs/Module/Profile_photo.php:420 #: ../../Zotlabs/Module/Viewconnections.php:28 #: ../../Zotlabs/Module/Viewconnections.php:33 #: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74 @@ -673,21 +691,20 @@ msgstr "Elemento no encontrado." #: ../../Zotlabs/Module/Layouts.php:78 ../../Zotlabs/Module/Layouts.php:89 #: ../../Zotlabs/Module/Common.php:38 ../../Zotlabs/Module/Locs.php:98 #: ../../Zotlabs/Module/Menu.php:130 ../../Zotlabs/Module/Menu.php:141 -#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Poke.php:141 -#: ../../Zotlabs/Module/Bookmarks.php:70 +#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Bookmarks.php:70 #: ../../Zotlabs/Module/Attach_edit.php:90 #: ../../Zotlabs/Module/Attach_edit.php:99 #: ../../Zotlabs/Module/Attach_edit.php:106 ../../Zotlabs/Module/Group.php:14 #: ../../Zotlabs/Module/Group.php:30 ../../Zotlabs/Module/Invite.php:64 -#: ../../Zotlabs/Module/Invite.php:315 ../../Zotlabs/Module/Like.php:248 +#: ../../Zotlabs/Module/Invite.php:315 ../../Zotlabs/Module/Like.php:242 #: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 #: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/New_channel.php:105 #: ../../Zotlabs/Module/New_channel.php:130 ../../Zotlabs/Module/Photos.php:71 -#: ../../Zotlabs/Module/Channel.php:222 ../../Zotlabs/Module/Channel.php:379 -#: ../../Zotlabs/Module/Channel.php:418 ../../Zotlabs/Module/Profile.php:99 +#: ../../Zotlabs/Module/Channel.php:233 ../../Zotlabs/Module/Channel.php:390 +#: ../../Zotlabs/Module/Channel.php:428 ../../Zotlabs/Module/Profile.php:99 #: ../../Zotlabs/Module/Profile.php:114 ../../Zotlabs/Module/Moderate.php:15 -#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Module/Profiles.php:171 -#: ../../Zotlabs/Module/Profiles.php:614 +#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Module/Profiles.php:167 +#: ../../Zotlabs/Module/Profiles.php:610 #: ../../Zotlabs/Module/Sharedwithme.php:19 #: ../../Zotlabs/Module/Authtest.php:13 #: ../../Zotlabs/Module/Channel_calendar.php:232 @@ -701,71 +718,29 @@ msgstr "Elemento no encontrado." msgid "Permission denied." msgstr "Acceso denegado." -#: ../../include/items.php:4459 ../../Zotlabs/Module/Group.php:62 +#: ../../include/items.php:4425 ../../Zotlabs/Module/Group.php:62 #: ../../Zotlabs/Module/Group.php:206 msgid "Privacy group not found." msgstr "Grupo de canales no encontrado." -#: ../../include/items.php:4475 +#: ../../include/items.php:4441 msgid "Privacy group is empty." msgstr "El grupo de canales está vacío." -#: ../../include/items.php:4482 +#: ../../include/items.php:4448 #, php-format msgid "Privacy group: %s" msgstr "Grupo de canales: %s" -#: ../../include/items.php:4492 +#: ../../include/items.php:4458 #, php-format msgid "Connection: %s" msgstr "Conexión: %s" -#: ../../include/items.php:4494 +#: ../../include/items.php:4460 msgid "Connection not found." msgstr "Conexión no encontrada" -#: ../../include/items.php:4841 ../../Zotlabs/Module/Cover_photo.php:297 -msgid "female" -msgstr "mujer" - -#: ../../include/items.php:4842 ../../Zotlabs/Module/Cover_photo.php:298 -#, php-format -msgid "%1$s updated her %2$s" -msgstr "%1$s ha actualizado su %2$s" - -#: ../../include/items.php:4843 ../../Zotlabs/Module/Cover_photo.php:299 -msgid "male" -msgstr "hombre" - -#: ../../include/items.php:4844 ../../Zotlabs/Module/Cover_photo.php:300 -#, php-format -msgid "%1$s updated his %2$s" -msgstr "%1$s ha actualizado su %2$s" - -#: ../../include/items.php:4846 ../../Zotlabs/Module/Cover_photo.php:302 -#, php-format -msgid "%1$s updated their %2$s" -msgstr "%1$s ha actualizado su %2$s" - -#: ../../include/items.php:4848 -msgid "profile photo" -msgstr "foto del perfil" - -#: ../../include/items.php:5175 -#, php-format -msgid "[Edited %s]" -msgstr "[se ha editado %s]" - -#: ../../include/items.php:5175 -msgctxt "edit_activity" -msgid "Post" -msgstr "Publicar" - -#: ../../include/items.php:5175 -msgctxt "edit_activity" -msgid "Comment" -msgstr "Comentar" - #: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 #: ../../Zotlabs/Module/Admin/Features.php:56 #: ../../Zotlabs/Module/Settings/Features.php:38 @@ -778,8 +753,8 @@ msgstr "Desactivado" msgid "On" msgstr "Activado" -#: ../../include/features.php:82 ../../include/nav.php:476 -#: ../../include/nav.php:479 ../../Zotlabs/Lib/Apps.php:351 +#: ../../include/features.php:82 ../../include/nav.php:488 +#: ../../include/nav.php:491 ../../Zotlabs/Lib/Apps.php:351 msgid "Calendar" msgstr "Calendario" @@ -827,7 +802,7 @@ msgstr "Usar el modo blog/lista" msgid "Comments will be displayed separately" msgstr "Los comentarios se mostrarán por separado" -#: ../../include/features.php:133 ../../include/text.php:1058 +#: ../../include/features.php:133 ../../include/text.php:1077 #: ../../Zotlabs/Lib/Apps.php:338 ../../Zotlabs/Module/Connections.php:399 msgid "Connections" msgstr "Conexiones" @@ -1048,7 +1023,7 @@ msgstr "Filtro de entradas personales" msgid "Ability to display only posts that you've interacted on" msgstr "Posibilidad de mostrar sólo los mensajes en los que usted haya interactuado" -#: ../../include/features.php:368 ../../include/nav.php:457 +#: ../../include/features.php:368 ../../include/nav.php:469 #: ../../Zotlabs/Lib/Apps.php:350 #: ../../Zotlabs/Widget/Channel_activities.php:93 #: ../../Zotlabs/Module/Fbrowser.php:29 @@ -1073,8 +1048,8 @@ msgid "" "view" msgstr "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada" -#: ../../include/features.php:390 ../../Zotlabs/Lib/Apps.php:368 -#: ../../Zotlabs/Module/Contactedit.php:444 +#: ../../include/features.php:390 ../../Zotlabs/Lib/Apps.php:366 +#: ../../Zotlabs/Module/Contactedit.php:430 msgid "Profiles" msgstr "Perfiles" @@ -1169,21 +1144,21 @@ msgstr "el almacenamiento en la base de datos ha fallado." msgid "Empty path" msgstr "Ruta vacía" -#: ../../include/attach.php:2147 +#: ../../include/attach.php:1984 #, php-format msgid "%s shared an %s with you" msgstr "%s ha compartido un/una %s con usted" -#: ../../include/attach.php:2147 +#: ../../include/attach.php:1984 #, php-format msgid "%s shared a %s with you" msgstr "%s ha compartido un/una %s con usted" -#: ../../include/attach.php:2147 +#: ../../include/attach.php:1984 ../../Zotlabs/Module/Like.php:447 msgid "image" msgstr "Imagen" -#: ../../include/attach.php:2147 ../../addon/redfiles/redfilehelper.php:64 +#: ../../include/attach.php:1984 ../../addon/redfiles/redfilehelper.php:64 msgid "file" msgstr "fichero" @@ -1216,12 +1191,12 @@ msgid "Monthly" msgstr "Mensualmente" #: ../../include/selectors.php:64 ../../include/selectors.php:81 -#: ../../include/channel.php:1720 ../../addon/openid/Mod_Id.php:85 +#: ../../include/channel.php:1728 ../../addon/openid/Mod_Id.php:85 msgid "Male" msgstr "Hombre" #: ../../include/selectors.php:64 ../../include/selectors.php:81 -#: ../../include/channel.php:1718 ../../addon/openid/Mod_Id.php:87 +#: ../../include/channel.php:1726 ../../addon/openid/Mod_Id.php:87 msgid "Female" msgstr "Mujer" @@ -1257,11 +1232,11 @@ msgstr "Transexual" msgid "Hermaphrodite" msgstr "Hermafrodita" -#: ../../include/selectors.php:64 ../../include/channel.php:1724 +#: ../../include/selectors.php:64 ../../include/channel.php:1732 msgid "Neuter" msgstr "Neutral" -#: ../../include/selectors.php:64 ../../include/channel.php:1726 +#: ../../include/selectors.php:64 ../../include/channel.php:1734 msgid "Non-specific" msgstr "No especificado" @@ -1357,9 +1332,9 @@ msgstr "Infiel" msgid "Sex Addict" msgstr "Con adicción al sexo" -#: ../../include/selectors.php:138 ../../include/channel.php:456 -#: ../../include/channel.php:459 ../../Zotlabs/Widget/Affinity.php:38 -#: ../../Zotlabs/Module/Contactedit.php:297 +#: ../../include/selectors.php:138 ../../include/channel.php:464 +#: ../../include/channel.php:467 ../../Zotlabs/Widget/Affinity.php:38 +#: ../../Zotlabs/Module/Contactedit.php:283 #: ../../Zotlabs/Module/Connedit.php:581 msgid "Friends" msgstr "Amigos/as" @@ -1448,28 +1423,41 @@ msgstr "No me importa" msgid "Ask me" msgstr "Pregúnteme" -#: ../../include/activities.php:42 +#: ../../include/activities.php:30 msgid " and " msgstr " y " -#: ../../include/activities.php:50 +#: ../../include/activities.php:32 +msgid ", " +msgstr ", " + +#: ../../include/activities.php:36 ../../include/activities.php:38 +#: ../../addon/openid/MysqlProvider.php:58 +#: ../../addon/openid/MysqlProvider.php:59 +#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:364 +#: ../../Zotlabs/Module/Profile_photo.php:226 +msgid "Profile Photo" +msgstr "Foto del perfil" + +#: ../../include/activities.php:36 +#: ../../store/[data]/smarty3/compiled/2cbde885645602969010e846a38817a1297aafb9_0.file.cover_photo.tpl.php:127 +#: ../../Zotlabs/Module/Cover_photo.php:229 +msgid "Cover Photo" +msgstr "Imagen de portada del perfil" + +#: ../../include/activities.php:45 msgid "public profile" msgstr "el perfil público" -#: ../../include/activities.php:59 -#, php-format -msgid "%1$s changed %2$s to “%3$s”" -msgstr "%1$s ha cambiado %2$s a “%3$s”" - -#: ../../include/activities.php:60 +#: ../../include/activities.php:62 #, php-format -msgid "Visit %1$s's %2$s" -msgstr "Visitar %2$s de %1$s" +msgid "%1$s %2$s has been updated to %3$s." +msgstr "%1$s%2$sse ha actualizado a %3$s." -#: ../../include/activities.php:63 +#: ../../include/activities.php:65 #, php-format -msgid "%1$s has an updated %2$s, changing %3$s." -msgstr "%1$s ha actualizado %2$s, cambiando %3$s." +msgid "%1$s updated the %2$s. Changed %3$s." +msgstr "%1$sactualizó el %2$s. Ha cambiado %3$s." #: ../../include/contact_widgets.php:11 #, php-format @@ -1480,7 +1468,7 @@ msgstr[1] "%d invitaciones disponibles" msgstr[2] "%d invitaciones disponibles" #: ../../include/contact_widgets.php:16 ../../include/acl_selectors.php:145 -#: ../../Zotlabs/Module/Admin/Site.php:419 +#: ../../Zotlabs/Module/Admin/Site.php:405 msgid "Advanced" msgstr "Avanzado" @@ -1559,10 +1547,10 @@ msgid "Summary: " msgstr "Resumen: " #: ../../include/cdav.php:158 ../../include/cdav.php:159 -#: ../../include/cdav.php:167 ../../include/conversation.php:1226 -#: ../../Zotlabs/Lib/Apps.php:1169 ../../Zotlabs/Lib/Apps.php:1253 -#: ../../Zotlabs/Lib/Activity.php:1678 ../../Zotlabs/Widget/Album.php:90 -#: ../../Zotlabs/Widget/Pinned.php:275 ../../Zotlabs/Widget/Portfolio.php:99 +#: ../../include/cdav.php:167 ../../include/conversation.php:999 +#: ../../Zotlabs/Lib/Apps.php:1167 ../../Zotlabs/Lib/Apps.php:1251 +#: ../../Zotlabs/Lib/Activity.php:1675 ../../Zotlabs/Widget/Album.php:90 +#: ../../Zotlabs/Widget/Pinned.php:255 ../../Zotlabs/Widget/Portfolio.php:99 #: ../../Zotlabs/Module/Embedphotos.php:177 #: ../../Zotlabs/Module/Photos.php:788 ../../Zotlabs/Module/Photos.php:1246 msgid "Unknown" @@ -1600,7 +1588,7 @@ msgid "edit" msgstr "editar" #: ../../include/group.php:327 ../../include/acl_selectors.php:87 -#: ../../Zotlabs/Lib/Apps.php:369 ../../Zotlabs/Widget/Activity_filter.php:95 +#: ../../Zotlabs/Lib/Apps.php:367 ../../Zotlabs/Widget/Activity_filter.php:95 #: ../../Zotlabs/Module/Group.php:143 msgid "Privacy Groups" msgstr "Grupos de canales" @@ -1650,7 +1638,7 @@ msgstr "quiero" msgid "wants" msgstr "quiere" -#: ../../include/taxonomy.php:587 ../../Zotlabs/Lib/ThreadItem.php:310 +#: ../../include/taxonomy.php:587 ../../Zotlabs/Lib/ThreadItem.php:333 msgid "like" msgstr "me gusta" @@ -1658,7 +1646,7 @@ msgstr "me gusta" msgid "likes" msgstr "gusta de" -#: ../../include/taxonomy.php:588 ../../Zotlabs/Lib/ThreadItem.php:311 +#: ../../include/taxonomy.php:588 ../../Zotlabs/Lib/ThreadItem.php:334 msgid "dislike" msgstr "no me gusta" @@ -1666,9 +1654,8 @@ msgstr "no me gusta" msgid "dislikes" msgstr "no gusta de" -#: ../../include/taxonomy.php:675 ../../include/conversation.php:1777 -#: ../../include/channel.php:1779 ../../Zotlabs/Lib/ThreadItem.php:233 -#: ../../Zotlabs/Module/Photos.php:1130 +#: ../../include/taxonomy.php:675 ../../include/conversation.php:1550 +#: ../../Zotlabs/Module/Photos.php:1129 msgctxt "noun" msgid "Like" msgid_plural "Likes" @@ -1676,9 +1663,9 @@ msgstr[0] "Me gusta" msgstr[1] "Me gusta" msgstr[2] "Me gusta" -#: ../../include/photo/photo_driver.php:450 +#: ../../include/photo/photo_driver.php:457 #: ../../Zotlabs/Module/Profile_photo.php:167 -#: ../../Zotlabs/Module/Profile_photo.php:337 +#: ../../Zotlabs/Module/Profile_photo.php:336 msgid "Profile Photos" msgstr "Fotos del perfil" @@ -1783,7 +1770,7 @@ msgid "Help:" msgstr "Ayuda:" #: ../../include/help.php:119 ../../include/help.php:127 -#: ../../include/nav.php:181 ../../include/nav.php:328 +#: ../../include/nav.php:193 ../../include/nav.php:340 #: ../../Zotlabs/Lib/Apps.php:353 ../../Zotlabs/Module/Layouts.php:184 msgid "Help" msgstr "Ayuda" @@ -1795,7 +1782,7 @@ msgstr "No encontrado" #: ../../include/help.php:134 ../../addon/cards/cards.php:104 #: ../../addon/articles/articles.php:105 #: ../../addon/wiki/Lib/NativeWikiPage.php:545 -#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Display.php:147 +#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Display.php:154 #: ../../Zotlabs/Module/Block.php:77 ../../Zotlabs/Web/Router.php:186 msgid "Page not found." msgstr "Página no encontrada." @@ -1808,12 +1795,12 @@ msgstr "¿Borrar este elemento?" msgid "Item deleted" msgstr "Elemento eliminado" -#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:831 +#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:861 #: ../../Zotlabs/Module/Photos.php:1094 ../../Zotlabs/Module/Photos.php:1207 msgid "Comment" msgstr "Comentar" -#: ../../include/js_strings.php:8 ../../Zotlabs/Lib/ThreadItem.php:540 +#: ../../include/js_strings.php:8 ../../Zotlabs/Lib/ThreadItem.php:570 #, php-format msgid "%s show all" msgstr "%s mostrar todo" @@ -1886,8 +1873,8 @@ msgid "Unsaved changes. Are you sure you wish to leave this page?" msgstr "Cambios no guardados. ¿Está seguro de que desea abandonar la página?" #: ../../include/js_strings.php:26 ../../Zotlabs/Module/Locs.php:121 -#: ../../Zotlabs/Module/Pubsites.php:54 ../../Zotlabs/Module/Profiles.php:479 -#: ../../Zotlabs/Module/Profiles.php:750 ../../Zotlabs/Module/Cdav.php:1006 +#: ../../Zotlabs/Module/Pubsites.php:54 ../../Zotlabs/Module/Profiles.php:475 +#: ../../Zotlabs/Module/Profiles.php:746 ../../Zotlabs/Module/Cdav.php:1006 msgid "Location" msgstr "Ubicación" @@ -1941,12 +1928,12 @@ msgstr "Volver a la respuesta" msgid "Pinned" msgstr "Anclado/a" -#: ../../include/js_strings.php:39 ../../Zotlabs/Lib/ThreadItem.php:473 +#: ../../include/js_strings.php:39 ../../Zotlabs/Lib/ThreadItem.php:494 msgid "Pin to the top" msgstr "Anclar en la parte superior" -#: ../../include/js_strings.php:40 ../../Zotlabs/Lib/ThreadItem.php:473 -#: ../../Zotlabs/Widget/Pinned.php:160 +#: ../../include/js_strings.php:40 ../../Zotlabs/Lib/ThreadItem.php:494 +#: ../../Zotlabs/Widget/Pinned.php:149 msgid "Unpin from the top" msgstr "Desanclar de la parte superior" @@ -2038,19 +2025,19 @@ msgstr " " msgid "timeago.numbers" msgstr "timeago.numbers" -#: ../../include/js_strings.php:75 ../../include/text.php:1504 +#: ../../include/js_strings.php:75 ../../include/text.php:1502 msgid "January" msgstr "enero" -#: ../../include/js_strings.php:76 ../../include/text.php:1504 +#: ../../include/js_strings.php:76 ../../include/text.php:1502 msgid "February" msgstr "febrero" -#: ../../include/js_strings.php:77 ../../include/text.php:1504 +#: ../../include/js_strings.php:77 ../../include/text.php:1502 msgid "March" msgstr "marzo" -#: ../../include/js_strings.php:78 ../../include/text.php:1504 +#: ../../include/js_strings.php:78 ../../include/text.php:1502 msgid "April" msgstr "abril" @@ -2059,31 +2046,31 @@ msgctxt "long" msgid "May" msgstr "mayo" -#: ../../include/js_strings.php:80 ../../include/text.php:1504 +#: ../../include/js_strings.php:80 ../../include/text.php:1502 msgid "June" msgstr "junio" -#: ../../include/js_strings.php:81 ../../include/text.php:1504 +#: ../../include/js_strings.php:81 ../../include/text.php:1502 msgid "July" msgstr "julio" -#: ../../include/js_strings.php:82 ../../include/text.php:1504 +#: ../../include/js_strings.php:82 ../../include/text.php:1502 msgid "August" msgstr "agosto" -#: ../../include/js_strings.php:83 ../../include/text.php:1504 +#: ../../include/js_strings.php:83 ../../include/text.php:1502 msgid "September" msgstr "septiembre" -#: ../../include/js_strings.php:84 ../../include/text.php:1504 +#: ../../include/js_strings.php:84 ../../include/text.php:1502 msgid "October" msgstr "octubre" -#: ../../include/js_strings.php:85 ../../include/text.php:1504 +#: ../../include/js_strings.php:85 ../../include/text.php:1502 msgid "November" msgstr "noviembre" -#: ../../include/js_strings.php:86 ../../include/text.php:1504 +#: ../../include/js_strings.php:86 ../../include/text.php:1502 msgid "December" msgstr "diciembre" @@ -2136,31 +2123,31 @@ msgstr "nov" msgid "Dec" msgstr "dic" -#: ../../include/js_strings.php:99 ../../include/text.php:1500 +#: ../../include/js_strings.php:99 ../../include/text.php:1498 msgid "Sunday" msgstr "domingo" -#: ../../include/js_strings.php:100 ../../include/text.php:1500 +#: ../../include/js_strings.php:100 ../../include/text.php:1498 msgid "Monday" msgstr "lunes" -#: ../../include/js_strings.php:101 ../../include/text.php:1500 +#: ../../include/js_strings.php:101 ../../include/text.php:1498 msgid "Tuesday" msgstr "martes" -#: ../../include/js_strings.php:102 ../../include/text.php:1500 +#: ../../include/js_strings.php:102 ../../include/text.php:1498 msgid "Wednesday" msgstr "miércoles" -#: ../../include/js_strings.php:103 ../../include/text.php:1500 +#: ../../include/js_strings.php:103 ../../include/text.php:1498 msgid "Thursday" msgstr "jueves" -#: ../../include/js_strings.php:104 ../../include/text.php:1500 +#: ../../include/js_strings.php:104 ../../include/text.php:1498 msgid "Friday" msgstr "viernes" -#: ../../include/js_strings.php:105 ../../include/text.php:1500 +#: ../../include/js_strings.php:105 ../../include/text.php:1498 msgid "Saturday" msgstr "sábado" @@ -2230,9 +2217,9 @@ msgstr "Dirección de correo electrónica no válida" #: ../../addon/cart/submodules/orderoptions.php:358 #: ../../addon/cart/submodules/orderoptions.php:434 #: ../../addon/cart/submodules/orderoptions.php:458 -#: ../../Zotlabs/Module/Register.php:498 ../../Zotlabs/Module/Appman.php:208 -#: ../../Zotlabs/Module/Appman.php:209 ../../Zotlabs/Module/Profiles.php:761 -#: ../../Zotlabs/Module/Profiles.php:765 +#: ../../Zotlabs/Module/Register.php:498 ../../Zotlabs/Module/Appman.php:218 +#: ../../Zotlabs/Module/Appman.php:219 ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Profiles.php:761 #: ../../Zotlabs/Module/Settings/Multifactor.php:84 msgid "Required" msgstr "Obligatorio" @@ -2244,133 +2231,107 @@ msgstr "OpenWebAuth: %1$s da la bienvenida a %2$s" #: ../../include/conversation.php:147 ../../include/text.php:2352 #: ../../addon/redphotos/redphotohelper.php:71 -#: ../../addon/pubcrawl/as.php:1958 ../../addon/diaspora/Receiver.php:1693 -#: ../../Zotlabs/Lib/Activity.php:3694 ../../Zotlabs/Module/Subthread.php:115 -#: ../../Zotlabs/Module/Tagger.php:71 ../../Zotlabs/Module/Like.php:453 +#: ../../addon/diaspora/Receiver.php:1693 +#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Tagger.php:71 msgid "photo" msgstr "foto" -#: ../../include/conversation.php:154 ../../Zotlabs/Module/Like.php:184 +#: ../../include/conversation.php:155 ../../Zotlabs/Module/Like.php:183 msgid "channel" msgstr "el canal" -#: ../../include/conversation.php:177 ../../include/markdown.php:208 -#: ../../include/text.php:2358 ../../include/bbcode.php:566 -#: ../../Zotlabs/Lib/Activity.php:3694 ../../Zotlabs/Module/Tagger.php:79 +#: ../../include/conversation.php:178 ../../include/markdown.php:208 +#: ../../include/text.php:2358 ../../include/bbcode.php:571 +#: ../../Zotlabs/Module/Tagger.php:79 msgid "post" msgstr "la entrada" -#: ../../include/conversation.php:179 ../../include/text.php:2360 +#: ../../include/conversation.php:180 ../../include/text.php:2360 #: ../../Zotlabs/Module/Tagger.php:81 msgid "comment" msgstr "el comentario" -#: ../../include/conversation.php:193 ../../addon/pubcrawl/as.php:1993 -#: ../../addon/diaspora/Receiver.php:1628 ../../Zotlabs/Lib/Activity.php:3727 -#: ../../Zotlabs/Module/Like.php:485 +#: ../../include/conversation.php:194 ../../addon/diaspora/Receiver.php:1628 +#: ../../Zotlabs/Module/Like.php:483 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "A %1$s le gusta %3$s de %2$s" -#: ../../include/conversation.php:196 ../../addon/pubcrawl/as.php:1995 -#: ../../Zotlabs/Lib/Activity.php:3729 ../../Zotlabs/Module/Like.php:487 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" -msgstr "A %1$s no le gusta %3$s de %2$s" - -#: ../../include/conversation.php:202 +#: ../../include/conversation.php:196 #, php-format msgid "likes %1$s's %2$s" msgstr "gusta de %2$s de %1$s" -#: ../../include/conversation.php:205 +#: ../../include/conversation.php:199 ../../Zotlabs/Module/Like.php:485 #, php-format -msgid "doesn't like %1$s's %2$s" -msgstr "no gusta de %2$s de %1$s" +msgid "%1$s doesn't like %2$s's %3$s" +msgstr "A %1$s no le gusta %3$s de %2$s" -#: ../../include/conversation.php:245 ../../include/conversation.php:247 +#: ../../include/conversation.php:200 #, php-format -msgid "%1$s is now connected with %2$s" -msgstr "%1$s ahora está conectado/a con %2$s" +msgid "doesn't like %1$s's %2$s" +msgstr "no gusta de %2$s de %1$s" -#: ../../include/conversation.php:282 +#: ../../include/conversation.php:203 #, php-format -msgid "%1$s poked %2$s" -msgstr "%1$s ha dado un toque a %2$s" +msgid "%1$s repeated %2$s's %3$s" +msgstr "%1$s repitió %3$sde %2$s" -#: ../../include/conversation.php:286 ../../include/text.php:1262 -msgid "poked" -msgstr "ha dado un toque a" - -#: ../../include/conversation.php:305 ../../Zotlabs/Module/Mood.php:76 +#: ../../include/conversation.php:204 #, php-format -msgctxt "mood" -msgid "%1$s is %2$s" -msgstr "%1$s está %2$s" +msgid "repeated %1$s's %2$s" +msgstr "repitió %2$s de %1$s" -#: ../../include/conversation.php:535 ../../Zotlabs/Lib/ThreadItem.php:501 +#: ../../include/conversation.php:332 ../../Zotlabs/Lib/ThreadItem.php:532 msgid "This is an unsaved preview" msgstr "Esta es una previsualización sin guardar" -#: ../../include/conversation.php:667 ../../Zotlabs/Module/Photos.php:1110 +#: ../../include/conversation.php:464 ../../Zotlabs/Module/Photos.php:1110 msgctxt "title" msgid "Likes" msgstr "Me gusta" -#: ../../include/conversation.php:668 ../../Zotlabs/Module/Photos.php:1110 +#: ../../include/conversation.php:465 ../../Zotlabs/Module/Photos.php:1110 msgctxt "title" msgid "Dislikes" msgstr "No me gusta" -#: ../../include/conversation.php:669 ../../Zotlabs/Widget/Pinned.php:82 -#: ../../Zotlabs/Module/Photos.php:1111 -msgctxt "title" -msgid "Agree" -msgstr "De acuerdo" - -#: ../../include/conversation.php:670 ../../Zotlabs/Widget/Pinned.php:83 -#: ../../Zotlabs/Module/Photos.php:1111 -msgctxt "title" -msgid "Disagree" -msgstr "En desacuerdo" - -#: ../../include/conversation.php:671 ../../Zotlabs/Widget/Pinned.php:84 +#: ../../include/conversation.php:466 ../../Zotlabs/Widget/Pinned.php:71 #: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" -msgid "Abstain" -msgstr "Abstención" - -#: ../../include/conversation.php:672 ../../Zotlabs/Widget/Pinned.php:71 -#: ../../Zotlabs/Module/Photos.php:1112 -msgctxt "title" msgid "Attending" msgstr "Participaré" -#: ../../include/conversation.php:673 ../../Zotlabs/Widget/Pinned.php:72 -#: ../../Zotlabs/Module/Photos.php:1112 +#: ../../include/conversation.php:467 ../../Zotlabs/Widget/Pinned.php:72 +#: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" msgid "Not attending" msgstr "No participaré" -#: ../../include/conversation.php:674 ../../Zotlabs/Widget/Pinned.php:73 -#: ../../Zotlabs/Module/Photos.php:1112 +#: ../../include/conversation.php:468 ../../Zotlabs/Widget/Pinned.php:73 +#: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" msgid "Might attend" msgstr "Quizá participe" -#: ../../include/conversation.php:744 +#: ../../include/conversation.php:470 +msgctxt "title" +msgid "Repeats" +msgstr "Repite" + +#: ../../include/conversation.php:539 msgid "Select" msgstr "Seleccionar" -#: ../../include/conversation.php:745 ../../include/conversation.php:808 +#: ../../include/conversation.php:540 ../../include/conversation.php:601 #: ../../addon/cards/Mod_Card_edit.php:130 #: ../../addon/articles/Mod_Article_edit.php:128 -#: ../../Zotlabs/Lib/Apps.php:619 ../../Zotlabs/Lib/ThreadItem.php:179 -#: ../../Zotlabs/Lib/ThreadItem.php:509 ../../Zotlabs/Storage/Browser.php:387 +#: ../../Zotlabs/Lib/Apps.php:617 ../../Zotlabs/Lib/ThreadItem.php:184 +#: ../../Zotlabs/Lib/ThreadItem.php:540 ../../Zotlabs/Storage/Browser.php:387 #: ../../Zotlabs/Module/Editwebpage.php:167 #: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Module/Oauth.php:172 -#: ../../Zotlabs/Module/Thing.php:269 ../../Zotlabs/Module/Tokens.php:295 -#: ../../Zotlabs/Module/Contactedit.php:667 +#: ../../Zotlabs/Module/Thing.php:295 ../../Zotlabs/Module/Tokens.php:295 +#: ../../Zotlabs/Module/Contactedit.php:651 #: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Connedit.php:749 #: ../../Zotlabs/Module/Admin/Accounts.php:320 #: ../../Zotlabs/Module/Admin/Profs.php:176 @@ -2383,146 +2344,141 @@ msgstr "Seleccionar" msgid "Delete" msgstr "Eliminar" -#: ../../include/conversation.php:751 ../../Zotlabs/Lib/ThreadItem.php:263 +#: ../../include/conversation.php:546 ../../Zotlabs/Lib/ThreadItem.php:286 msgid "Toggle Star Status" msgstr "Activar o desactivar el estado de entrada preferida" -#: ../../include/conversation.php:757 +#: ../../include/conversation.php:552 msgid "Private Message" msgstr "Mensaje Privado" -#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:273 -#: ../../Zotlabs/Widget/Pinned.php:93 +#: ../../include/conversation.php:561 ../../Zotlabs/Lib/ThreadItem.php:296 +#: ../../Zotlabs/Widget/Pinned.php:82 msgid "Message signature validated" msgstr "Firma de mensaje validada" -#: ../../include/conversation.php:767 ../../Zotlabs/Lib/ThreadItem.php:274 -#: ../../Zotlabs/Widget/Pinned.php:94 +#: ../../include/conversation.php:562 ../../Zotlabs/Lib/ThreadItem.php:297 +#: ../../Zotlabs/Widget/Pinned.php:83 msgid "Message signature incorrect" msgstr "Firma de mensaje incorrecta" -#: ../../include/conversation.php:807 ../../Zotlabs/Lib/ThreadItem.php:508 +#: ../../include/conversation.php:600 ../../Zotlabs/Lib/ThreadItem.php:539 #: ../../Zotlabs/Module/Admin/Accounts.php:318 #: ../../Zotlabs/Module/Connections.php:358 #: ../../Zotlabs/Module/Connections.php:409 msgid "Approve" msgstr "Aprobar" -#: ../../include/conversation.php:813 +#: ../../include/conversation.php:606 #, php-format msgid "View %s's profile @ %s" msgstr "Ver el perfil @ %s de %s" -#: ../../include/conversation.php:835 +#: ../../include/conversation.php:628 msgid "Categories:" msgstr "Temas:" -#: ../../include/conversation.php:836 +#: ../../include/conversation.php:629 msgid "Filed under:" msgstr "Archivado bajo:" -#: ../../include/conversation.php:842 ../../Zotlabs/Lib/ThreadItem.php:430 -#: ../../Zotlabs/Widget/Pinned.php:137 +#: ../../include/conversation.php:635 ../../Zotlabs/Lib/ThreadItem.php:451 +#: ../../Zotlabs/Widget/Pinned.php:126 #, php-format msgid "from %s" msgstr "desde %s" -#: ../../include/conversation.php:845 ../../Zotlabs/Lib/ThreadItem.php:433 -#: ../../Zotlabs/Widget/Pinned.php:140 +#: ../../include/conversation.php:638 ../../Zotlabs/Lib/ThreadItem.php:454 +#: ../../Zotlabs/Widget/Pinned.php:129 #, php-format msgid "last edited: %s" msgstr "último cambio: %s" -#: ../../include/conversation.php:846 ../../Zotlabs/Lib/ThreadItem.php:434 -#: ../../Zotlabs/Widget/Pinned.php:141 +#: ../../include/conversation.php:639 ../../Zotlabs/Lib/ThreadItem.php:455 +#: ../../Zotlabs/Widget/Pinned.php:130 #, php-format msgid "Expires: %s" msgstr "Caduca: %s" -#: ../../include/conversation.php:861 ../../addon/cards/cards.php:82 +#: ../../include/conversation.php:654 ../../addon/cards/cards.php:82 #: ../../addon/articles/articles.php:83 msgid "View in context" msgstr "Mostrar en su contexto" -#: ../../include/conversation.php:863 ../../Zotlabs/Lib/ThreadItem.php:502 +#: ../../include/conversation.php:656 ../../Zotlabs/Lib/ThreadItem.php:533 #: ../../Zotlabs/Module/Photos.php:1077 msgid "Please wait" msgstr "Espere por favor" -#: ../../include/conversation.php:964 +#: ../../include/conversation.php:757 msgid "remove" msgstr "eliminar" -#: ../../include/conversation.php:968 +#: ../../include/conversation.php:761 msgid "Loading..." msgstr "Cargando..." -#: ../../include/conversation.php:969 ../../Zotlabs/Lib/ThreadItem.php:290 +#: ../../include/conversation.php:762 ../../Zotlabs/Lib/ThreadItem.php:313 msgid "Conversation Features" msgstr "Funciones de conversación " -#: ../../include/conversation.php:970 +#: ../../include/conversation.php:763 msgid "Delete Selected Items" msgstr "Eliminar elementos seleccionados" -#: ../../include/conversation.php:1006 +#: ../../include/conversation.php:799 msgid "View Source" msgstr "Ver el código fuente de la entrada" -#: ../../include/conversation.php:1016 +#: ../../include/conversation.php:809 msgid "Follow Thread" msgstr "Seguir este hilo" -#: ../../include/conversation.php:1025 +#: ../../include/conversation.php:818 msgid "Unfollow Thread" msgstr "Dejar de seguir este hilo" -#: ../../include/conversation.php:1105 ../../include/nav.php:114 +#: ../../include/conversation.php:895 ../../include/nav.php:126 #: ../../addon/openclipatar/openclipatar.php:58 ../../Zotlabs/Lib/Apps.php:349 #: ../../Zotlabs/Module/Connedit.php:480 msgid "View Profile" msgstr "Ver el perfil" -#: ../../include/conversation.php:1117 ../../Zotlabs/Module/Connedit.php:501 +#: ../../include/conversation.php:907 ../../Zotlabs/Module/Connedit.php:501 msgid "Recent Activity" msgstr "Actividad reciente" -#: ../../include/conversation.php:1129 ../../include/connections.php:141 -#: ../../include/channel.php:1616 ../../Zotlabs/Widget/Suggestions.php:51 +#: ../../include/conversation.php:919 ../../include/connections.php:141 +#: ../../include/channel.php:1624 ../../Zotlabs/Widget/Suggestions.php:51 #: ../../Zotlabs/Widget/Follow.php:37 ../../Zotlabs/Module/Suggest.php:69 #: ../../Zotlabs/Module/Directory.php:371 #: ../../Zotlabs/Module/Connections.php:365 msgid "Connect" msgstr "Conectar" -#: ../../include/conversation.php:1141 +#: ../../include/conversation.php:931 msgid "Edit Connection" msgstr "Editar conexión" -#: ../../include/conversation.php:1153 ../../Zotlabs/Lib/Apps.php:356 -#: ../../Zotlabs/Module/Poke.php:181 ../../Zotlabs/Module/Poke.php:185 -msgid "Poke" -msgstr "Toques y otras cosas" - -#: ../../include/conversation.php:1228 +#: ../../include/conversation.php:1001 msgid "Approve this item" msgstr "Aprobar este elemento" -#: ../../include/conversation.php:1228 +#: ../../include/conversation.php:1001 msgid "Delete this item" msgstr "Borrar este elemento" -#: ../../include/conversation.php:1282 +#: ../../include/conversation.php:1055 #, php-format msgid "%s likes this." msgstr "A %s le gusta esto." -#: ../../include/conversation.php:1282 +#: ../../include/conversation.php:1055 #, php-format msgid "%s doesn't like this." msgstr "A %s no le gusta esto." -#: ../../include/conversation.php:1286 +#: ../../include/conversation.php:1059 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgid_plural "<span %1$s>%2$d people</span> like this." @@ -2530,7 +2486,7 @@ 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." msgstr[2] "A <span %1$s>%2$d personas</span> les gusta esto." -#: ../../include/conversation.php:1288 +#: ../../include/conversation.php:1061 #, 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." @@ -2538,11 +2494,11 @@ 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." msgstr[2] "A <span %1$s>%2$d personas</span> no les gusta esto." -#: ../../include/conversation.php:1294 +#: ../../include/conversation.php:1067 msgid "and" msgstr "y" -#: ../../include/conversation.php:1297 +#: ../../include/conversation.php:1070 #, php-format msgid ", and %d other people" msgid_plural ", and %d other people" @@ -2550,156 +2506,157 @@ msgstr[0] ", y %d persona más" msgstr[1] ", y %d personas más" msgstr[2] ", y %d personas más" -#: ../../include/conversation.php:1298 +#: ../../include/conversation.php:1071 #, php-format msgid "%s like this." msgstr "A %s le gusta esto." -#: ../../include/conversation.php:1298 +#: ../../include/conversation.php:1071 #, php-format msgid "%s don't like this." msgstr "A %s no le gusta esto." -#: ../../include/conversation.php:1349 ../../addon/hsse/hsse.php:82 +#: ../../include/conversation.php:1122 ../../addon/hsse/hsse.php:82 msgid "Set your location" msgstr "Establecer su ubicación" -#: ../../include/conversation.php:1350 ../../addon/hsse/hsse.php:83 +#: ../../include/conversation.php:1123 ../../addon/hsse/hsse.php:83 msgid "Clear browser location" msgstr "Eliminar los datos de localización geográfica del navegador" -#: ../../include/conversation.php:1362 ../../addon/cards/Mod_Card_edit.php:101 +#: ../../include/conversation.php:1135 ../../addon/cards/Mod_Card_edit.php:101 #: ../../addon/articles/Mod_Article_edit.php:99 ../../addon/hsse/hsse.php:95 #: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Chat.php:219 #: ../../Zotlabs/Module/Editblock.php:116 msgid "Insert web link" msgstr "Insertar enlace web" -#: ../../include/conversation.php:1366 ../../addon/hsse/hsse.php:99 +#: ../../include/conversation.php:1139 ../../addon/hsse/hsse.php:99 msgid "Embed (existing) photo from your photo albums" msgstr "Insertar una foto (existente) de sus álbumes" -#: ../../include/conversation.php:1399 ../../addon/hsse/hsse.php:134 +#: ../../include/conversation.php:1172 ../../addon/hsse/hsse.php:134 #: ../../Zotlabs/Module/Chat.php:217 msgid "Please enter a link URL:" msgstr "Por favor, introduzca la dirección del enlace:" -#: ../../include/conversation.php:1400 ../../addon/hsse/hsse.php:135 +#: ../../include/conversation.php:1173 ../../addon/hsse/hsse.php:135 msgid "Tag term:" msgstr "Término de la etiqueta:" -#: ../../include/conversation.php:1401 ../../addon/hsse/hsse.php:136 +#: ../../include/conversation.php:1174 ../../addon/hsse/hsse.php:136 msgid "Where are you right now?" msgstr "¿Donde está ahora?" -#: ../../include/conversation.php:1404 ../../addon/wiki/Mod_Wiki.php:400 -#: ../../addon/hsse/hsse.php:139 ../../Zotlabs/Module/Cover_photo.php:430 -#: ../../Zotlabs/Module/Profile_photo.php:555 +#: ../../include/conversation.php:1177 ../../addon/wiki/Mod_Wiki.php:400 +#: ../../addon/hsse/hsse.php:139 ../../Zotlabs/Module/Cover_photo.php:387 +#: ../../Zotlabs/Module/Profile_photo.php:554 msgid "Choose images to embed" msgstr "Elegir imágenes para incluir" -#: ../../include/conversation.php:1405 ../../addon/wiki/Mod_Wiki.php:401 -#: ../../addon/hsse/hsse.php:140 ../../Zotlabs/Module/Cover_photo.php:431 -#: ../../Zotlabs/Module/Profile_photo.php:556 +#: ../../include/conversation.php:1178 ../../addon/wiki/Mod_Wiki.php:401 +#: ../../addon/hsse/hsse.php:140 ../../Zotlabs/Module/Cover_photo.php:388 +#: ../../Zotlabs/Module/Profile_photo.php:555 msgid "Choose an album" msgstr "Elegir un álbum" -#: ../../include/conversation.php:1406 ../../addon/hsse/hsse.php:141 +#: ../../include/conversation.php:1179 ../../addon/hsse/hsse.php:141 msgid "Choose a different album..." msgstr "Elegir un álbum diferente..." -#: ../../include/conversation.php:1407 ../../addon/wiki/Mod_Wiki.php:403 -#: ../../addon/hsse/hsse.php:142 ../../Zotlabs/Module/Cover_photo.php:433 -#: ../../Zotlabs/Module/Profile_photo.php:558 +#: ../../include/conversation.php:1180 ../../addon/wiki/Mod_Wiki.php:403 +#: ../../addon/hsse/hsse.php:142 ../../Zotlabs/Module/Cover_photo.php:390 +#: ../../Zotlabs/Module/Profile_photo.php:557 msgid "Error getting album list" msgstr "Error al obtener la lista de álbumes" -#: ../../include/conversation.php:1408 ../../addon/wiki/Mod_Wiki.php:404 -#: ../../addon/hsse/hsse.php:143 ../../Zotlabs/Module/Cover_photo.php:434 -#: ../../Zotlabs/Module/Profile_photo.php:559 +#: ../../include/conversation.php:1181 ../../addon/wiki/Mod_Wiki.php:404 +#: ../../addon/hsse/hsse.php:143 ../../Zotlabs/Module/Cover_photo.php:391 +#: ../../Zotlabs/Module/Profile_photo.php:558 msgid "Error getting photo link" msgstr "Error al obtener el enlace de la foto" -#: ../../include/conversation.php:1409 ../../addon/wiki/Mod_Wiki.php:405 -#: ../../addon/hsse/hsse.php:144 ../../Zotlabs/Module/Cover_photo.php:435 -#: ../../Zotlabs/Module/Profile_photo.php:560 +#: ../../include/conversation.php:1182 ../../addon/wiki/Mod_Wiki.php:405 +#: ../../addon/hsse/hsse.php:144 ../../Zotlabs/Module/Cover_photo.php:392 +#: ../../Zotlabs/Module/Profile_photo.php:559 msgid "Error getting album" msgstr "Error al obtener el álbum" -#: ../../include/conversation.php:1410 ../../addon/hsse/hsse.php:145 +#: ../../include/conversation.php:1183 ../../addon/hsse/hsse.php:145 msgid "Comments enabled" msgstr "Comentarios habilitados" -#: ../../include/conversation.php:1411 ../../addon/hsse/hsse.php:146 +#: ../../include/conversation.php:1184 ../../addon/hsse/hsse.php:146 msgid "Comments disabled" msgstr "Comentarios deshabilitados" -#: ../../include/conversation.php:1428 ../../addon/hsse/hsse.php:153 -#: ../../Zotlabs/Lib/ThreadItem.php:842 ../../Zotlabs/Module/Webpages.php:257 +#: ../../include/conversation.php:1201 ../../addon/hsse/hsse.php:153 +#: ../../Zotlabs/Lib/ThreadItem.php:872 ../../Zotlabs/Module/Webpages.php:257 #: ../../Zotlabs/Module/Photos.php:1096 msgid "Preview" msgstr "Previsualizar" -#: ../../include/conversation.php:1461 ../../addon/wiki/Mod_Wiki.php:304 -#: ../../addon/hsse/hsse.php:186 ../../Zotlabs/Widget/Cdav.php:142 -#: ../../Zotlabs/Module/Webpages.php:251 ../../Zotlabs/Module/Layouts.php:192 -#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Photos.php:1076 +#: ../../include/conversation.php:1234 ../../addon/wiki/Mod_Wiki.php:304 +#: ../../addon/hsse/hsse.php:186 ../../Zotlabs/Lib/ThreadItem.php:341 +#: ../../Zotlabs/Widget/Cdav.php:142 ../../Zotlabs/Module/Webpages.php:251 +#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Blocks.php:159 +#: ../../Zotlabs/Module/Photos.php:1076 msgid "Share" msgstr "Compartir" -#: ../../include/conversation.php:1470 ../../addon/hsse/hsse.php:195 +#: ../../include/conversation.php:1243 ../../addon/hsse/hsse.php:195 msgid "Page link name" msgstr "Nombre del enlace de la página" -#: ../../include/conversation.php:1473 ../../addon/hsse/hsse.php:198 +#: ../../include/conversation.php:1246 ../../addon/hsse/hsse.php:198 msgid "Post as" msgstr "Publicar como" -#: ../../include/conversation.php:1475 ../../addon/hsse/hsse.php:200 -#: ../../Zotlabs/Lib/ThreadItem.php:833 +#: ../../include/conversation.php:1248 ../../addon/hsse/hsse.php:200 +#: ../../Zotlabs/Lib/ThreadItem.php:863 msgid "Bold" msgstr "Negrita" -#: ../../include/conversation.php:1476 ../../addon/hsse/hsse.php:201 -#: ../../Zotlabs/Lib/ThreadItem.php:834 +#: ../../include/conversation.php:1249 ../../addon/hsse/hsse.php:201 +#: ../../Zotlabs/Lib/ThreadItem.php:864 msgid "Italic" msgstr "Itálico " -#: ../../include/conversation.php:1477 ../../addon/hsse/hsse.php:202 -#: ../../Zotlabs/Lib/ThreadItem.php:835 +#: ../../include/conversation.php:1250 ../../addon/hsse/hsse.php:202 +#: ../../Zotlabs/Lib/ThreadItem.php:865 msgid "Underline" msgstr "Subrayar" -#: ../../include/conversation.php:1478 ../../addon/hsse/hsse.php:203 -#: ../../Zotlabs/Lib/ThreadItem.php:836 +#: ../../include/conversation.php:1251 ../../addon/hsse/hsse.php:203 +#: ../../Zotlabs/Lib/ThreadItem.php:866 msgid "Quote" msgstr "Citar" -#: ../../include/conversation.php:1479 ../../addon/hsse/hsse.php:204 -#: ../../Zotlabs/Lib/ThreadItem.php:837 +#: ../../include/conversation.php:1252 ../../addon/hsse/hsse.php:204 +#: ../../Zotlabs/Lib/ThreadItem.php:867 msgid "Code" msgstr "Código" -#: ../../include/conversation.php:1480 ../../addon/hsse/hsse.php:205 -#: ../../Zotlabs/Lib/ThreadItem.php:839 +#: ../../include/conversation.php:1253 ../../addon/hsse/hsse.php:205 +#: ../../Zotlabs/Lib/ThreadItem.php:869 msgid "Attach/Upload file" msgstr "Adjuntar/cargar fichero" -#: ../../include/conversation.php:1483 ../../addon/wiki/Mod_Wiki.php:397 +#: ../../include/conversation.php:1256 ../../addon/wiki/Mod_Wiki.php:397 #: ../../addon/hsse/hsse.php:208 msgid "Embed an image from your albums" msgstr "Incluir una imagen de sus álbumes" -#: ../../include/conversation.php:1484 ../../include/conversation.php:1539 +#: ../../include/conversation.php:1257 ../../include/conversation.php:1312 #: ../../addon/cards/Mod_Card_edit.php:132 #: ../../addon/articles/Mod_Article_edit.php:130 #: ../../addon/wiki/Mod_Wiki.php:365 ../../addon/wiki/Mod_Wiki.php:398 #: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258 #: ../../Zotlabs/Storage/Browser.php:386 -#: ../../Zotlabs/Module/Cover_photo.php:428 +#: ../../Zotlabs/Module/Cover_photo.php:385 #: ../../Zotlabs/Module/Editwebpage.php:169 ../../Zotlabs/Module/Oauth.php:110 #: ../../Zotlabs/Module/Oauth.php:136 ../../Zotlabs/Module/Connedit.php:750 -#: ../../Zotlabs/Module/Profile_photo.php:553 +#: ../../Zotlabs/Module/Profile_photo.php:552 #: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 #: ../../Zotlabs/Module/Admin/Addons.php:430 #: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 @@ -2711,91 +2668,98 @@ msgstr "Incluir una imagen de sus álbumes" msgid "Cancel" msgstr "Cancelar" -#: ../../include/conversation.php:1485 ../../include/conversation.php:1538 +#: ../../include/conversation.php:1258 ../../include/conversation.php:1311 #: ../../addon/wiki/Mod_Wiki.php:399 ../../addon/hsse/hsse.php:210 -#: ../../addon/hsse/hsse.php:257 ../../Zotlabs/Module/Cover_photo.php:429 -#: ../../Zotlabs/Module/Profile_photo.php:554 +#: ../../addon/hsse/hsse.php:257 ../../Zotlabs/Module/Cover_photo.php:386 +#: ../../Zotlabs/Module/Profile_photo.php:553 msgid "OK" msgstr "OK" -#: ../../include/conversation.php:1487 ../../addon/hsse/hsse.php:212 +#: ../../include/conversation.php:1260 ../../addon/hsse/hsse.php:212 msgid "Toggle voting" msgstr "Cambiar votación" -#: ../../include/conversation.php:1488 +#: ../../include/conversation.php:1261 msgid "Toggle poll" msgstr "Activar o desactivar encuestas" -#: ../../include/conversation.php:1489 +#: ../../include/conversation.php:1262 msgid "Option" msgstr "Opción" -#: ../../include/conversation.php:1490 +#: ../../include/conversation.php:1263 msgid "Add option" msgstr "Añadir una opción" -#: ../../include/conversation.php:1491 +#: ../../include/conversation.php:1264 msgid "Minutes" msgstr "Minutos " -#: ../../include/conversation.php:1491 +#: ../../include/conversation.php:1264 msgid "Hours" msgstr "Horas " -#: ../../include/conversation.php:1491 +#: ../../include/conversation.php:1264 msgid "Days" msgstr "Días " -#: ../../include/conversation.php:1492 +#: ../../include/conversation.php:1265 msgid "Allow multiple answers" msgstr "Permitir respuestas múltiples" -#: ../../include/conversation.php:1494 ../../addon/hsse/hsse.php:215 +#: ../../include/conversation.php:1267 ../../addon/hsse/hsse.php:215 msgid "Disable comments" msgstr "Dehabilitar los comentarios" -#: ../../include/conversation.php:1495 ../../addon/hsse/hsse.php:216 +#: ../../include/conversation.php:1268 ../../addon/hsse/hsse.php:216 msgid "Toggle comments" msgstr "Activar o desactivar los comentarios" -#: ../../include/conversation.php:1501 ../../addon/cards/Mod_Card_edit.php:118 +#: ../../include/conversation.php:1274 ../../addon/cards/Mod_Card_edit.php:118 #: ../../addon/articles/Mod_Article_edit.php:116 ../../addon/hsse/hsse.php:221 #: ../../Zotlabs/Module/Photos.php:667 ../../Zotlabs/Module/Photos.php:1042 #: ../../Zotlabs/Module/Editblock.php:129 msgid "Title (optional)" msgstr "Título (opcional)" -#: ../../include/conversation.php:1502 +#: ../../include/conversation.php:1275 msgid "Summary (optional)" msgstr "Sumario (opcional)" -#: ../../include/conversation.php:1505 ../../addon/hsse/hsse.php:224 +#: ../../include/conversation.php:1278 ../../addon/hsse/hsse.php:224 msgid "Categories (optional, comma-separated list)" msgstr "Temas (opcional, lista separada por comas)" -#: ../../include/conversation.php:1506 ../../addon/hsse/hsse.php:225 +#: ../../include/conversation.php:1279 ../../addon/hsse/hsse.php:225 msgid "Permission settings" msgstr "Configuración de permisos" -#: ../../include/conversation.php:1528 ../../addon/hsse/hsse.php:247 +#: ../../include/conversation.php:1301 ../../addon/hsse/hsse.php:247 msgid "Other networks and post services" msgstr "Otras redes y servicios de publicación" -#: ../../include/conversation.php:1531 ../../addon/hsse/hsse.php:250 +#: ../../include/conversation.php:1304 ../../addon/hsse/hsse.php:250 msgid "Set expiration date" msgstr "Configurar fecha de caducidad" -#: ../../include/conversation.php:1534 ../../addon/hsse/hsse.php:253 +#: ../../include/conversation.php:1307 ../../addon/hsse/hsse.php:253 msgid "Set publish date" msgstr "Establecer la fecha de publicación" -#: ../../include/conversation.php:1536 ../../addon/hsse/hsse.php:255 -#: ../../Zotlabs/Lib/ThreadItem.php:845 ../../Zotlabs/Module/Chat.php:218 +#: ../../include/conversation.php:1309 ../../addon/hsse/hsse.php:255 +#: ../../Zotlabs/Lib/ThreadItem.php:875 ../../Zotlabs/Module/Chat.php:218 msgid "Encrypt text" msgstr "Cifrar texto" -#: ../../include/conversation.php:1780 ../../Zotlabs/Lib/ThreadItem.php:239 -#: ../../Zotlabs/Module/Photos.php:1135 +#: ../../include/conversation.php:1553 +msgctxt "noun" +msgid "Repeat" +msgid_plural "Repeats" +msgstr[0] "Se repite" +msgstr[1] "Se repite" +msgstr[2] "Repite" + +#: ../../include/conversation.php:1556 ../../Zotlabs/Module/Photos.php:1134 msgctxt "noun" msgid "Dislike" msgid_plural "Dislikes" @@ -2803,7 +2767,7 @@ msgstr[0] "No me gusta" msgstr[1] "No me gusta" msgstr[2] "No me gusta" -#: ../../include/conversation.php:1783 +#: ../../include/conversation.php:1559 msgctxt "noun" msgid "Attending" msgid_plural "Attending" @@ -2811,7 +2775,7 @@ msgstr[0] "Participaré" msgstr[1] "Participaré" msgstr[2] "Participaré" -#: ../../include/conversation.php:1786 +#: ../../include/conversation.php:1562 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" @@ -2819,7 +2783,7 @@ msgstr[0] "No participaré" msgstr[1] "No participaré" msgstr[2] "No participaré" -#: ../../include/conversation.php:1789 +#: ../../include/conversation.php:1565 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" @@ -2827,50 +2791,26 @@ msgstr[0] "Indeciso/a" msgstr[1] "Indecisos/as" msgstr[2] "Indecisos/as" -#: ../../include/conversation.php:1792 -msgctxt "noun" -msgid "Agree" -msgid_plural "Agrees" -msgstr[0] "De acuerdo" -msgstr[1] "De acuerdo" -msgstr[2] "De acuerdo" - -#: ../../include/conversation.php:1795 -msgctxt "noun" -msgid "Disagree" -msgid_plural "Disagrees" -msgstr[0] "En desacuerdo" -msgstr[1] "En desacuerdo" -msgstr[2] "En desacuerdo" - -#: ../../include/conversation.php:1798 -msgctxt "noun" -msgid "Abstain" -msgid_plural "Abstains" -msgstr[0] "se abstiene" -msgstr[1] "Se abstienen" -msgstr[2] "Se abstienen" - -#: ../../include/nav.php:96 +#: ../../include/nav.php:108 msgid "Remote authentication" msgstr "Acceder desde su servidor" -#: ../../include/nav.php:96 +#: ../../include/nav.php:108 msgid "Click to authenticate to your home hub" msgstr "Pulsar para identificarse en su servidor de inicio" -#: ../../include/nav.php:102 ../../Zotlabs/Widget/Channel_activities.php:239 +#: ../../include/nav.php:114 ../../Zotlabs/Widget/Channel_activities.php:239 #: ../../Zotlabs/Widget/Admin.php:29 #: ../../Zotlabs/Module/Admin/Channels.php:146 #: ../../Zotlabs/Module/Manage.php:162 ../../Zotlabs/Module/Admin.php:116 msgid "Channels" msgstr "Canales" -#: ../../include/nav.php:102 +#: ../../include/nav.php:114 msgid "Manage your channels" msgstr "Gestionar sus canales" -#: ../../include/nav.php:105 ../../Zotlabs/Lib/Apps.php:344 +#: ../../include/nav.php:117 ../../Zotlabs/Lib/Apps.php:344 #: ../../Zotlabs/Widget/Newmember.php:58 #: ../../Zotlabs/Widget/Settings_menu.php:71 #: ../../Zotlabs/Module/Admin/Themes.php:140 @@ -2878,188 +2818,188 @@ msgstr "Gestionar sus canales" msgid "Settings" msgstr "Ajustes" -#: ../../include/nav.php:105 +#: ../../include/nav.php:117 msgid "Account/Channel Settings" msgstr "Ajustes de cuenta/canales" -#: ../../include/nav.php:111 ../../include/nav.php:141 -#: ../../include/nav.php:162 ../../boot.php:1747 +#: ../../include/nav.php:123 ../../include/nav.php:153 +#: ../../include/nav.php:174 ../../boot.php:1745 msgid "Logout" msgstr "Finalizar sesión" -#: ../../include/nav.php:111 ../../include/nav.php:141 +#: ../../include/nav.php:123 ../../include/nav.php:153 msgid "End this session" msgstr "Finalizar esta sesión" -#: ../../include/nav.php:114 +#: ../../include/nav.php:126 msgid "Your profile page" msgstr "Su página del perfil" -#: ../../include/nav.php:117 ../../include/channel.php:1530 -#: ../../Zotlabs/Module/Profiles.php:851 +#: ../../include/nav.php:129 ../../include/channel.php:1538 +#: ../../Zotlabs/Module/Profiles.php:847 msgid "Edit Profiles" msgstr "Editar perfiles" -#: ../../include/nav.php:117 +#: ../../include/nav.php:129 msgid "Manage/Edit profiles" msgstr "Administrar/editar perfiles" -#: ../../include/nav.php:119 ../../include/channel.php:1534 +#: ../../include/nav.php:131 ../../include/channel.php:1542 #: ../../addon/openclipatar/openclipatar.php:59 msgid "Edit Profile" msgstr "Editar el perfil" -#: ../../include/nav.php:119 ../../Zotlabs/Widget/Newmember.php:40 +#: ../../include/nav.php:131 ../../Zotlabs/Widget/Newmember.php:40 msgid "Edit your profile" msgstr "Editar su perfil" -#: ../../include/nav.php:126 ../../include/nav.php:130 ../../boot.php:1748 +#: ../../include/nav.php:138 ../../include/nav.php:142 ../../boot.php:1746 #: ../../Zotlabs/Lib/Apps.php:341 msgid "Login" msgstr "Iniciar sesión" -#: ../../include/nav.php:126 ../../include/nav.php:130 +#: ../../include/nav.php:138 ../../include/nav.php:142 msgid "Sign in" msgstr "Acceder" -#: ../../include/nav.php:160 +#: ../../include/nav.php:172 msgid "Take me home" msgstr "Volver a la página principal" -#: ../../include/nav.php:162 +#: ../../include/nav.php:174 msgid "Log me out of this site" msgstr "Salir de este sitio" -#: ../../include/nav.php:167 ../../boot.php:1725 +#: ../../include/nav.php:179 ../../boot.php:1723 #: ../../Zotlabs/Module/Register.php:542 msgid "Register" msgstr "Registrarse" -#: ../../include/nav.php:167 +#: ../../include/nav.php:179 msgid "Create an account" msgstr "Crear una cuenta" -#: ../../include/nav.php:181 +#: ../../include/nav.php:193 msgid "Help and documentation" msgstr "Ayuda y documentación" -#: ../../include/nav.php:195 ../../include/acl_selectors.php:149 -#: ../../include/text.php:1170 ../../include/text.php:1182 -#: ../../Zotlabs/Lib/Apps.php:358 ../../Zotlabs/Widget/Sitesearch.php:37 +#: ../../include/nav.php:207 ../../include/acl_selectors.php:149 +#: ../../include/text.php:1189 ../../include/text.php:1201 +#: ../../Zotlabs/Lib/Apps.php:356 ../../Zotlabs/Widget/Sitesearch.php:37 #: ../../Zotlabs/Widget/Activity_filter.php:210 #: ../../Zotlabs/Module/Search.php:46 ../../Zotlabs/Module/Connections.php:403 msgid "Search" msgstr "Buscar" -#: ../../include/nav.php:195 +#: ../../include/nav.php:207 msgid "Search site @name, !forum, #tag, ?docs, content" msgstr "Buscar en el sitio @nombre, !foro, #tag, ?docs, contenido" -#: ../../include/nav.php:201 ../../Zotlabs/Widget/Admin.php:61 +#: ../../include/nav.php:213 ../../Zotlabs/Widget/Admin.php:61 msgid "Admin" msgstr "Administrador" -#: ../../include/nav.php:201 +#: ../../include/nav.php:213 msgid "Site Setup and Configuration" msgstr "Ajustes y configuración del sitio" -#: ../../include/nav.php:332 ../../Zotlabs/Widget/Notifications.php:175 +#: ../../include/nav.php:344 ../../Zotlabs/Widget/Notifications.php:175 #: ../../Zotlabs/Widget/Messages.php:36 ../../Zotlabs/Module/Defperms.php:254 #: ../../Zotlabs/Module/New_channel.php:157 #: ../../Zotlabs/Module/New_channel.php:164 msgid "Loading" msgstr "Cargando" -#: ../../include/nav.php:337 +#: ../../include/nav.php:349 msgid "@name, #tag, ?doc, content" msgstr "@nombre, #etiqueta, ?ayuda, contenido" -#: ../../include/nav.php:338 +#: ../../include/nav.php:350 msgid "Please wait..." msgstr "Espere por favor…" -#: ../../include/nav.php:344 ../../Zotlabs/Lib/Apps.php:328 +#: ../../include/nav.php:356 ../../Zotlabs/Lib/Apps.php:328 msgid "Apps" msgstr "Aplicaciones (apps)" -#: ../../include/nav.php:345 +#: ../../include/nav.php:357 msgid "Channel Apps" msgstr "Apps del canal " -#: ../../include/nav.php:346 +#: ../../include/nav.php:358 msgid "System Apps" msgstr "Apps del sistema " -#: ../../include/nav.php:347 +#: ../../include/nav.php:359 msgid "Pinned Apps" msgstr "Apps ancladas " -#: ../../include/nav.php:348 +#: ../../include/nav.php:360 msgid "Featured Apps" msgstr "Apps destacadas " -#: ../../include/nav.php:434 ../../Zotlabs/Lib/Apps.php:348 +#: ../../include/nav.php:446 ../../Zotlabs/Lib/Apps.php:348 #: ../../Zotlabs/Module/Admin/Channels.php:154 msgid "Channel" msgstr "Canal" -#: ../../include/nav.php:437 +#: ../../include/nav.php:449 msgid "Status Messages and Posts" msgstr "Mensajes de estado y publicaciones" -#: ../../include/nav.php:447 ../../Zotlabs/Module/Help.php:85 +#: ../../include/nav.php:459 ../../Zotlabs/Module/Help.php:85 msgid "About" msgstr "Mi perfil" -#: ../../include/nav.php:450 +#: ../../include/nav.php:462 msgid "Profile Details" msgstr "Detalles del perfil" -#: ../../include/nav.php:460 ../../include/photos.php:721 +#: ../../include/nav.php:472 ../../include/photos.php:721 msgid "Photo Albums" msgstr "Álbumes de fotos" -#: ../../include/nav.php:465 ../../Zotlabs/Lib/Apps.php:345 +#: ../../include/nav.php:477 ../../Zotlabs/Lib/Apps.php:345 #: ../../Zotlabs/Widget/Notifications.php:108 #: ../../Zotlabs/Widget/Channel_activities.php:125 #: ../../Zotlabs/Storage/Browser.php:350 ../../Zotlabs/Module/Fbrowser.php:85 msgid "Files" msgstr "Ficheros" -#: ../../include/nav.php:468 +#: ../../include/nav.php:480 msgid "Files and Storage" msgstr "Ficheros y repositorio" -#: ../../include/nav.php:490 ../../include/nav.php:493 +#: ../../include/nav.php:502 ../../include/nav.php:505 #: ../../Zotlabs/Lib/Apps.php:335 ../../Zotlabs/Widget/Chatroom_list.php:22 msgid "Chatrooms" msgstr "Salas de chat" -#: ../../include/nav.php:503 ../../Zotlabs/Lib/Apps.php:334 +#: ../../include/nav.php:515 ../../Zotlabs/Lib/Apps.php:334 #: ../../Zotlabs/Module/Bookmarks.php:90 msgid "Bookmarks" msgstr "Marcadores" -#: ../../include/nav.php:506 +#: ../../include/nav.php:518 msgid "Saved Bookmarks" msgstr "Marcadores guardados" -#: ../../include/nav.php:514 ../../Zotlabs/Lib/Apps.php:346 +#: ../../include/nav.php:526 ../../Zotlabs/Lib/Apps.php:346 #: ../../Zotlabs/Widget/Channel_activities.php:168 #: ../../Zotlabs/Module/Webpages.php:247 msgid "Webpages" msgstr "Páginas web" -#: ../../include/nav.php:517 +#: ../../include/nav.php:529 msgid "View Webpages" msgstr "Ver páginas web" -#: ../../include/nav.php:525 ../../addon/wiki/Mod_Wiki.php:209 -#: ../../addon/wiki/Widget/Wiki_list.php:20 ../../addon/wiki/wiki.php:70 +#: ../../include/nav.php:537 ../../addon/wiki/Mod_Wiki.php:209 +#: ../../addon/wiki/Widget/Wiki_list.php:23 ../../addon/wiki/wiki.php:72 msgid "Wikis" msgstr "Wikis" -#: ../../include/nav.php:528 ../../Zotlabs/Lib/Apps.php:347 +#: ../../include/nav.php:540 ../../Zotlabs/Lib/Apps.php:347 msgid "Wiki" msgstr "Wiki" @@ -3070,7 +3010,7 @@ msgid "" msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado" #: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:56 -#: ../../Zotlabs/Module/Profiles.php:752 +#: ../../Zotlabs/Module/Profiles.php:748 msgid "Miscellaneous" msgstr "Varios" @@ -3086,7 +3026,7 @@ msgstr "Edad:" msgid "YYYY-MM-DD or MM-DD" msgstr "AAAA-MM-DD o MM-DD" -#: ../../include/datetime.php:238 ../../boot.php:2754 +#: ../../include/datetime.php:238 ../../boot.php:2752 msgid "never" msgstr "nunca" @@ -3175,8 +3115,8 @@ msgstr "La imagen excede el límite de %lu bytes del sitio" msgid "Image file is empty." msgstr "El fichero de imagen está vacío. " -#: ../../include/photos.php:197 ../../Zotlabs/Module/Cover_photo.php:241 -#: ../../Zotlabs/Module/Profile_photo.php:275 +#: ../../include/photos.php:197 ../../Zotlabs/Module/Cover_photo.php:239 +#: ../../Zotlabs/Module/Profile_photo.php:274 msgid "Unable to process image" msgstr "No ha sido posible procesar la imagen" @@ -3227,28 +3167,27 @@ msgstr "cadena_de_error: " msgid "content-type: " msgstr "tipo de contenido: " -#: ../../include/network.php:1768 ../../include/network.php:1769 +#: ../../include/network.php:1770 ../../include/network.php:1771 msgid "Friendica" msgstr "Friendica" -#: ../../include/network.php:1770 +#: ../../include/network.php:1772 msgid "OStatus" msgstr "OStatus" -#: ../../include/network.php:1771 +#: ../../include/network.php:1773 msgid "GNU-Social" msgstr "GNU Social" -#: ../../include/network.php:1772 +#: ../../include/network.php:1774 msgid "RSS/Atom" msgstr "RSS/Atom" -#: ../../include/network.php:1773 ../../addon/pubcrawl/as.php:1332 -#: ../../addon/pubcrawl/as.php:2002 ../../Zotlabs/Lib/Activity.php:3736 +#: ../../include/network.php:1775 msgid "ActivityPub" msgstr "ActivityPub" -#: ../../include/network.php:1774 ../../addon/openid/MysqlProvider.php:56 +#: ../../include/network.php:1776 ../../addon/openid/MysqlProvider.php:56 #: ../../addon/openid/MysqlProvider.php:57 #: ../../addon/redred/Mod_Redred.php:69 ../../addon/rtof/Mod_Rtof.php:55 #: ../../Zotlabs/Module/Connedit.php:736 @@ -3258,36 +3197,36 @@ msgstr "ActivityPub" msgid "Email" msgstr "Correo electrónico" -#: ../../include/network.php:1775 +#: ../../include/network.php:1777 msgid "Diaspora" msgstr "Diaspora" -#: ../../include/network.php:1776 +#: ../../include/network.php:1778 msgid "Facebook" msgstr "Facebook" -#: ../../include/network.php:1777 +#: ../../include/network.php:1779 msgid "Zot" msgstr "Zot" -#: ../../include/network.php:1778 +#: ../../include/network.php:1780 msgid "LinkedIn" msgstr "LinkedIn" -#: ../../include/network.php:1779 +#: ../../include/network.php:1781 msgid "XMPP/IM" msgstr "XMPP/IM" -#: ../../include/network.php:1780 +#: ../../include/network.php:1782 msgid "MySpace" msgstr "MySpace" -#: ../../include/markdown.php:206 ../../include/bbcode.php:570 +#: ../../include/markdown.php:206 ../../include/bbcode.php:575 #, php-format msgid "%1$s wrote the following %2$s %3$s" msgstr "%1$s escribió la/el %2$s siguiente %3$s" -#: ../../include/markdown.php:259 ../../include/bbcode.php:655 +#: ../../include/markdown.php:259 ../../include/bbcode.php:660 msgid "spoiler" msgstr "spoiler" @@ -3299,16 +3238,16 @@ msgstr "por defecto" msgid "Select an alternate language" msgstr "Seleccionar un idioma alternativo" -#: ../../include/menu.php:120 ../../include/channel.php:1530 -#: ../../include/channel.php:1534 ../../addon/cards/cards.php:74 +#: ../../include/menu.php:120 ../../include/channel.php:1538 +#: ../../include/channel.php:1542 ../../addon/cards/cards.php:74 #: ../../addon/cards/Mod_Card_edit.php:99 #: ../../addon/articles/Mod_Article_edit.php:97 #: ../../addon/articles/articles.php:75 ../../addon/wiki/Mod_Wiki.php:214 -#: ../../addon/wiki/Mod_Wiki.php:381 ../../Zotlabs/Lib/Apps.php:618 -#: ../../Zotlabs/Lib/ThreadItem.php:158 ../../Zotlabs/Widget/Cdav.php:144 +#: ../../addon/wiki/Mod_Wiki.php:381 ../../Zotlabs/Lib/Apps.php:616 +#: ../../Zotlabs/Lib/ThreadItem.php:163 ../../Zotlabs/Widget/Cdav.php:144 #: ../../Zotlabs/Widget/Cdav.php:181 ../../Zotlabs/Module/Editwebpage.php:142 #: ../../Zotlabs/Module/Webpages.php:250 ../../Zotlabs/Module/Oauth.php:171 -#: ../../Zotlabs/Module/Thing.php:268 ../../Zotlabs/Module/Layouts.php:191 +#: ../../Zotlabs/Module/Thing.php:294 ../../Zotlabs/Module/Layouts.php:191 #: ../../Zotlabs/Module/Menu.php:176 ../../Zotlabs/Module/Admin/Profs.php:175 #: ../../Zotlabs/Module/Group.php:245 ../../Zotlabs/Module/Blocks.php:158 #: ../../Zotlabs/Module/Editlayout.php:114 @@ -3370,15 +3309,15 @@ msgstr "No permitir" #: ../../include/acl_selectors.php:154 #: ../../addon/flashcards/Mod_Flashcards.php:261 -#: ../../Zotlabs/Module/Thing.php:321 ../../Zotlabs/Module/Thing.php:374 +#: ../../Zotlabs/Module/Thing.php:350 ../../Zotlabs/Module/Thing.php:402 #: ../../Zotlabs/Module/Filestorage.php:195 #: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045 #: ../../Zotlabs/Module/Chat.php:240 msgid "Permissions" msgstr "Permisos" -#: ../../include/acl_selectors.php:156 ../../Zotlabs/Lib/ThreadItem.php:496 -#: ../../Zotlabs/Widget/Pinned.php:163 ../../Zotlabs/Storage/Browser.php:414 +#: ../../include/acl_selectors.php:156 ../../Zotlabs/Lib/ThreadItem.php:527 +#: ../../Zotlabs/Widget/Pinned.php:152 ../../Zotlabs/Storage/Browser.php:414 #: ../../Zotlabs/Module/Photos.php:1266 msgid "Close" msgstr "Cerrar" @@ -3390,66 +3329,66 @@ msgid "" " permissions set who is allowed to view the post." msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje." -#: ../../include/text.php:546 +#: ../../include/text.php:561 msgid "prev" msgstr "anterior" -#: ../../include/text.php:548 +#: ../../include/text.php:563 msgid "first" msgstr "primera" -#: ../../include/text.php:577 +#: ../../include/text.php:592 msgid "last" msgstr "última" -#: ../../include/text.php:580 +#: ../../include/text.php:595 msgid "next" msgstr "próxima" -#: ../../include/text.php:598 +#: ../../include/text.php:613 msgid "older" msgstr "más antiguas" -#: ../../include/text.php:600 +#: ../../include/text.php:615 msgid "newer" msgstr "más recientes" -#: ../../include/text.php:1066 ../../Zotlabs/Module/Viewconnections.php:80 +#: ../../include/text.php:1085 ../../Zotlabs/Module/Viewconnections.php:80 #: ../../Zotlabs/Module/Connections.php:306 msgid "Accepts" msgstr "Se acepta" -#: ../../include/text.php:1069 ../../Zotlabs/Module/Viewconnections.php:83 +#: ../../include/text.php:1088 ../../Zotlabs/Module/Viewconnections.php:83 #: ../../Zotlabs/Module/Connections.php:309 msgid "Comments" msgstr "Comentarios" -#: ../../include/text.php:1074 ../../Zotlabs/Module/Viewconnections.php:88 +#: ../../include/text.php:1093 ../../Zotlabs/Module/Viewconnections.php:88 #: ../../Zotlabs/Module/Connections.php:314 msgid "Stream items" msgstr "Elementos del stream" -#: ../../include/text.php:1079 ../../Zotlabs/Module/Viewconnections.php:93 +#: ../../include/text.php:1098 ../../Zotlabs/Module/Viewconnections.php:93 #: ../../Zotlabs/Module/Connections.php:319 msgid "Wall posts" msgstr "Entradas del Muro" -#: ../../include/text.php:1083 ../../Zotlabs/Module/Viewconnections.php:97 +#: ../../include/text.php:1102 ../../Zotlabs/Module/Viewconnections.php:97 #: ../../Zotlabs/Module/Connections.php:323 msgid "Nothing" msgstr "Nada" -#: ../../include/text.php:1096 +#: ../../include/text.php:1115 #, php-format msgid "View all %s connections" msgstr "Ver todas las %s conexiones" -#: ../../include/text.php:1159 +#: ../../include/text.php:1178 #, php-format msgid "Network: %s" msgstr "Red %s" -#: ../../include/text.php:1171 ../../include/text.php:1183 +#: ../../include/text.php:1190 ../../include/text.php:1202 #: ../../addon/cards/Mod_Cards.php:116 #: ../../addon/articles/Mod_Articles.php:120 #: ../../Zotlabs/Module/Admin/Queueworker.php:114 @@ -3459,116 +3398,20 @@ msgstr "Red %s" msgid "Save" msgstr "Guardar" -#: ../../include/text.php:1262 -msgid "poke" -msgstr "un toque" - -#: ../../include/text.php:1263 -msgid "ping" -msgstr "un \"ping\"" - -#: ../../include/text.php:1263 -msgid "pinged" -msgstr "ha enviado un \"ping\" a" - -#: ../../include/text.php:1292 -msgid "happy" -msgstr "feliz " - -#: ../../include/text.php:1293 -msgid "sad" -msgstr "triste " - -#: ../../include/text.php:1294 -msgid "mellow" -msgstr "tranquilo/a" - -#: ../../include/text.php:1295 -msgid "tired" -msgstr "cansado/a " - -#: ../../include/text.php:1296 -msgid "perky" -msgstr "vivaz" - -#: ../../include/text.php:1297 -msgid "angry" -msgstr "enfadado/a" - -#: ../../include/text.php:1298 -msgid "stupefied" -msgstr "asombrado/a" - -#: ../../include/text.php:1299 -msgid "puzzled" -msgstr "perplejo/a" - -#: ../../include/text.php:1300 -msgid "interested" -msgstr "interesado/a" - -#: ../../include/text.php:1301 -msgid "bitter" -msgstr "amargado/a" - -#: ../../include/text.php:1302 -msgid "cheerful" -msgstr "alegre" - -#: ../../include/text.php:1303 -msgid "alive" -msgstr "animado/a" - -#: ../../include/text.php:1304 -msgid "annoyed" -msgstr "molesto/a" - -#: ../../include/text.php:1305 -msgid "anxious" -msgstr "ansioso/a" - -#: ../../include/text.php:1306 -msgid "cranky" -msgstr "de mal humor" - -#: ../../include/text.php:1307 -msgid "disturbed" -msgstr "perturbado/a" - -#: ../../include/text.php:1308 -msgid "frustrated" -msgstr "frustrado/a" - -#: ../../include/text.php:1309 -msgid "depressed" -msgstr "deprimido/a" - -#: ../../include/text.php:1310 -msgid "motivated" -msgstr "motivado/a" - -#: ../../include/text.php:1311 -msgid "relaxed" -msgstr "relajado/a" - -#: ../../include/text.php:1312 -msgid "surprised" -msgstr "sorprendido/a" - -#: ../../include/text.php:1504 +#: ../../include/text.php:1502 msgid "May" msgstr "mayo" -#: ../../include/text.php:1578 +#: ../../include/text.php:1576 msgid "Unknown attachment" msgstr "Adjunto no reconocido" -#: ../../include/text.php:1581 ../../Zotlabs/Storage/Browser.php:382 +#: ../../include/text.php:1579 ../../Zotlabs/Storage/Browser.php:382 #: ../../Zotlabs/Module/Sharedwithme.php:109 msgid "Size" msgstr "Tamaño" -#: ../../include/text.php:1623 +#: ../../include/text.php:1622 msgid "remove category" msgstr "eliminar el tema" @@ -3608,7 +3451,7 @@ msgstr "La encuesta ha terminado" msgid "Poll ends in %s" msgstr "La encuesta termina en %s" -#: ../../include/text.php:2013 ../../Zotlabs/Lib/ThreadItem.php:446 +#: ../../include/text.php:2013 ../../Zotlabs/Lib/ThreadItem.php:467 msgid "Vote" msgstr "Votar" @@ -3626,7 +3469,7 @@ msgstr "Puede crear su propia disposición gráfica con la herramienta de planti #: ../../include/text.php:2211 ../../addon/wiki/Mod_Wiki.php:220 #: ../../addon/wiki/Mod_Wiki.php:368 ../../addon/wiki/Mod_Wiki.php:903 -#: ../../addon/wiki/Widget/Wiki_pages.php:65 +#: ../../addon/wiki/Widget/Wiki_pages.php:68 msgid "BBcode" msgstr "BBcode" @@ -3636,12 +3479,12 @@ msgstr "HTML" #: ../../include/text.php:2213 ../../addon/wiki/Mod_Wiki.php:220 #: ../../addon/wiki/Mod_Wiki.php:368 ../../addon/wiki/Mod_Wiki.php:903 -#: ../../addon/wiki/Widget/Wiki_pages.php:65 ../../addon/mdpost/mdpost.php:41 +#: ../../addon/wiki/Widget/Wiki_pages.php:68 ../../addon/mdpost/mdpost.php:41 msgid "Markdown" msgstr "Markdown" #: ../../include/text.php:2214 ../../addon/wiki/Mod_Wiki.php:220 -#: ../../addon/wiki/Mod_Wiki.php:903 ../../addon/wiki/Widget/Wiki_pages.php:65 +#: ../../addon/wiki/Mod_Wiki.php:903 ../../addon/wiki/Widget/Wiki_pages.php:68 msgid "Text" msgstr "Texto" @@ -3669,140 +3512,140 @@ msgstr "encuesta" msgid "a-z, 0-9, -, and _ only" msgstr "a-z, 0-9, -, and _ only" -#: ../../include/text.php:2786 +#: ../../include/text.php:2789 msgid "Design Tools" msgstr "Herramientas de diseño web" -#: ../../include/text.php:2789 ../../Zotlabs/Module/Blocks.php:152 +#: ../../include/text.php:2792 ../../Zotlabs/Module/Blocks.php:152 msgid "Blocks" msgstr "Bloques" -#: ../../include/text.php:2790 ../../Zotlabs/Module/Menu.php:171 +#: ../../include/text.php:2793 ../../Zotlabs/Module/Menu.php:171 msgid "Menus" msgstr "Menús" -#: ../../include/text.php:2791 ../../Zotlabs/Module/Layouts.php:182 +#: ../../include/text.php:2794 ../../Zotlabs/Module/Layouts.php:182 msgid "Layouts" msgstr "Plantillas" -#: ../../include/text.php:2792 +#: ../../include/text.php:2795 msgid "Pages" msgstr "Páginas" -#: ../../include/text.php:2804 +#: ../../include/text.php:2807 msgid "Import" msgstr "Importar" -#: ../../include/text.php:2805 +#: ../../include/text.php:2808 msgid "Import website..." msgstr "Importar un sitio web..." -#: ../../include/text.php:2806 +#: ../../include/text.php:2809 msgid "Select folder to import" msgstr "Seleccionar la carpeta que se va a importar" -#: ../../include/text.php:2807 +#: ../../include/text.php:2810 msgid "Import from a zipped folder:" msgstr "Importar desde una carpeta comprimida: " -#: ../../include/text.php:2808 +#: ../../include/text.php:2811 msgid "Import from cloud files:" msgstr "Importar desde los ficheros en la nube: " -#: ../../include/text.php:2809 +#: ../../include/text.php:2812 msgid "/cloud/channel/path/to/folder" msgstr "/cloud/canal/ruta/a la/carpeta" -#: ../../include/text.php:2810 +#: ../../include/text.php:2813 msgid "Enter path to website files" msgstr "Ruta a los ficheros del sitio web" -#: ../../include/text.php:2811 +#: ../../include/text.php:2814 msgid "Select folder" msgstr "Seleccionar la carpeta" -#: ../../include/text.php:2812 +#: ../../include/text.php:2815 msgid "Export website..." msgstr "Exportar un sitio web..." -#: ../../include/text.php:2813 +#: ../../include/text.php:2816 msgid "Export to a zip file" msgstr "Exportar a un fichero comprimido .zip" -#: ../../include/text.php:2814 +#: ../../include/text.php:2817 msgid "website.zip" msgstr "sitio_web.zip" -#: ../../include/text.php:2815 +#: ../../include/text.php:2818 msgid "Enter a name for the zip file." msgstr "Escriba un nombre para el fichero zip." -#: ../../include/text.php:2816 +#: ../../include/text.php:2819 msgid "Export to cloud files" msgstr "Exportar a la nube de ficheros" -#: ../../include/text.php:2817 +#: ../../include/text.php:2820 msgid "/path/to/export/folder" msgstr "/ruta/para/exportar/carpeta" -#: ../../include/text.php:2818 +#: ../../include/text.php:2821 msgid "Enter a path to a cloud files destination." msgstr "Escriba una ruta de destino a la nube de ficheros." -#: ../../include/text.php:2819 +#: ../../include/text.php:2822 msgid "Specify folder" msgstr "Especificar una carpeta" -#: ../../include/channel.php:48 +#: ../../include/channel.php:49 msgid "Unable to obtain identity information from database" msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos" -#: ../../include/channel.php:81 +#: ../../include/channel.php:82 msgid "Empty name" msgstr "Nombre vacío" -#: ../../include/channel.php:84 +#: ../../include/channel.php:85 msgid "Name too long" msgstr "Nombre demasiado largo" -#: ../../include/channel.php:201 +#: ../../include/channel.php:202 msgid "No account identifier" msgstr "Ningún identificador de la cuenta" -#: ../../include/channel.php:213 ../../Zotlabs/Module/Register.php:95 +#: ../../include/channel.php:214 ../../Zotlabs/Module/Register.php:95 msgid "Nickname is required." msgstr "Se requiere un sobrenombre (alias)." -#: ../../include/channel.php:227 ../../include/channel.php:659 +#: ../../include/channel.php:228 ../../include/channel.php:667 #: ../../Zotlabs/Module/Register.php:100 #: ../../Zotlabs/Module/Changeaddr.php:46 msgid "Reserved nickname. Please choose another." msgstr "Sobrenombre en uso. Por favor, elija otro." -#: ../../include/channel.php:232 ../../include/channel.php:664 +#: ../../include/channel.php:233 ../../include/channel.php:672 #: ../../Zotlabs/Module/Register.php:105 #: ../../Zotlabs/Module/Changeaddr.php:51 msgid "" "Nickname has unsupported characters or is already being used on this site." msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio." -#: ../../include/channel.php:292 +#: ../../include/channel.php:299 msgid "Unable to retrieve created identity" msgstr "No ha sido posible recuperar la identidad creada" -#: ../../include/channel.php:402 +#: ../../include/channel.php:410 msgid "Default Profile" msgstr "Perfil principal" -#: ../../include/channel.php:592 ../../include/channel.php:681 +#: ../../include/channel.php:600 ../../include/channel.php:689 msgid "Unable to retrieve modified identity" msgstr "No se puede recuperar la identidad modficada" -#: ../../include/channel.php:1373 +#: ../../include/channel.php:1381 msgid "Requested channel is not available" msgstr "El canal solicitado no está disponible" -#: ../../include/channel.php:1427 ../../addon/cards/Mod_Cards.php:42 +#: ../../include/channel.php:1435 ../../addon/cards/Mod_Cards.php:42 #: ../../addon/articles/Mod_Articles.php:46 #: ../../addon/gallery/Mod_Gallery.php:49 #: ../../Zotlabs/Module/Editwebpage.php:32 @@ -3816,255 +3659,251 @@ msgstr "El canal solicitado no está disponible" msgid "Requested profile is not available." msgstr "El perfil solicitado no está disponible." -#: ../../include/channel.php:1523 ../../Zotlabs/Module/Profiles.php:744 +#: ../../include/channel.php:1531 ../../Zotlabs/Module/Profiles.php:740 msgid "Change profile photo" msgstr "Cambiar la foto del perfil" -#: ../../include/channel.php:1531 +#: ../../include/channel.php:1539 msgid "Create New Profile" msgstr "Crear un nuevo perfil" -#: ../../include/channel.php:1549 ../../Zotlabs/Module/Profiles.php:841 +#: ../../include/channel.php:1557 ../../Zotlabs/Module/Profiles.php:837 msgid "Profile Image" msgstr "Imagen del perfil" -#: ../../include/channel.php:1552 +#: ../../include/channel.php:1560 msgid "Visible to everybody" msgstr "Visible para todos" -#: ../../include/channel.php:1553 ../../Zotlabs/Module/Profiles.php:741 -#: ../../Zotlabs/Module/Profiles.php:845 +#: ../../include/channel.php:1561 ../../Zotlabs/Module/Profiles.php:737 +#: ../../Zotlabs/Module/Profiles.php:841 msgid "Edit visibility" msgstr "Editar visibilidad" -#: ../../include/channel.php:1635 ../../include/channel.php:1763 +#: ../../include/channel.php:1643 ../../include/channel.php:1771 msgid "Gender:" msgstr "Género:" -#: ../../include/channel.php:1636 ../../include/channel.php:1807 +#: ../../include/channel.php:1644 ../../include/channel.php:1817 msgid "Status:" msgstr "Estado:" -#: ../../include/channel.php:1637 ../../include/channel.php:1831 +#: ../../include/channel.php:1645 ../../include/channel.php:1841 msgid "Homepage:" msgstr "Página personal:" -#: ../../include/channel.php:1638 ../../include/channel.php:1833 +#: ../../include/channel.php:1646 ../../include/channel.php:1843 #: ../../Zotlabs/Module/Directory.php:368 msgid "Hometown:" msgstr "Lugar de nacimiento:" -#: ../../include/channel.php:1639 +#: ../../include/channel.php:1647 msgid "Online Now" msgstr "Ahora en línea" -#: ../../include/channel.php:1688 +#: ../../include/channel.php:1696 msgid "This channel has not added a profile description yet" msgstr "Este canal aún no ha añadido una descripción de perfil" -#: ../../include/channel.php:1690 +#: ../../include/channel.php:1698 msgid "Change your profile photo" msgstr "Cambiar su foto del perfil" -#: ../../include/channel.php:1722 +#: ../../include/channel.php:1730 msgid "Trans" msgstr "Trans" -#: ../../include/channel.php:1761 +#: ../../include/channel.php:1769 msgid "Full Name:" msgstr "Nombre completo:" -#: ../../include/channel.php:1768 -msgid "Like this channel" -msgstr "Me gusta este canal" - -#: ../../include/channel.php:1792 +#: ../../include/channel.php:1802 msgid "j F, Y" msgstr "j F Y" -#: ../../include/channel.php:1793 +#: ../../include/channel.php:1803 msgid "j F" msgstr "j F" -#: ../../include/channel.php:1800 +#: ../../include/channel.php:1810 msgid "Birthday:" msgstr "Cumpleaños:" -#: ../../include/channel.php:1804 ../../Zotlabs/Module/Directory.php:349 +#: ../../include/channel.php:1814 ../../Zotlabs/Module/Directory.php:349 msgid "Age:" msgstr "Edad:" -#: ../../include/channel.php:1813 +#: ../../include/channel.php:1823 #, php-format msgid "for %1$d %2$s" msgstr "por %1$d %2$s" -#: ../../include/channel.php:1825 +#: ../../include/channel.php:1835 msgid "Tags:" msgstr "Etiquetas:" -#: ../../include/channel.php:1829 +#: ../../include/channel.php:1839 msgid "Sexual Preference:" msgstr "Orientación sexual:" -#: ../../include/channel.php:1835 +#: ../../include/channel.php:1845 msgid "Political Views:" msgstr "Posición política:" -#: ../../include/channel.php:1837 +#: ../../include/channel.php:1847 msgid "Religion:" msgstr "Religión:" -#: ../../include/channel.php:1839 ../../Zotlabs/Module/Directory.php:370 +#: ../../include/channel.php:1849 ../../Zotlabs/Module/Directory.php:370 msgid "About:" msgstr "Sobre mí:" -#: ../../include/channel.php:1841 +#: ../../include/channel.php:1851 msgid "Hobbies/Interests:" msgstr "Aficciones o intereses:" -#: ../../include/channel.php:1843 +#: ../../include/channel.php:1853 msgid "Likes:" msgstr "Me gusta:" -#: ../../include/channel.php:1845 +#: ../../include/channel.php:1855 msgid "Dislikes:" msgstr "No me gusta:" -#: ../../include/channel.php:1847 +#: ../../include/channel.php:1857 msgid "Contact information and Social Networks:" msgstr "Información de contacto y redes sociales:" -#: ../../include/channel.php:1849 +#: ../../include/channel.php:1859 msgid "My other channels:" msgstr "Mis otros canales:" -#: ../../include/channel.php:1851 +#: ../../include/channel.php:1861 msgid "Musical interests:" msgstr "Preferencias musicales:" -#: ../../include/channel.php:1853 +#: ../../include/channel.php:1863 msgid "Books, literature:" msgstr "Libros, literatura:" -#: ../../include/channel.php:1855 +#: ../../include/channel.php:1865 msgid "Television:" msgstr "Televisión:" -#: ../../include/channel.php:1857 +#: ../../include/channel.php:1867 msgid "Film/dance/culture/entertainment:" msgstr "Cine, danza, cultura, entretenimiento:" -#: ../../include/channel.php:1859 +#: ../../include/channel.php:1869 msgid "Love/Romance:" msgstr "Vida sentimental o amorosa:" -#: ../../include/channel.php:1861 +#: ../../include/channel.php:1871 msgid "Work/employment:" msgstr "Trabajo:" -#: ../../include/channel.php:1863 +#: ../../include/channel.php:1873 msgid "School/education:" msgstr "Estudios:" -#: ../../include/channel.php:1884 ../../Zotlabs/Lib/Apps.php:367 +#: ../../include/channel.php:1894 ../../Zotlabs/Lib/Apps.php:365 #: ../../Zotlabs/Module/Profperm.php:113 msgid "Profile" msgstr "Perfil" -#: ../../include/channel.php:1886 +#: ../../include/channel.php:1896 msgid "Like this thing" msgstr "Me gusta esto" -#: ../../include/channel.php:1887 +#: ../../include/channel.php:1897 msgid "Export" msgstr "Exportar" -#: ../../include/channel.php:2340 ../../Zotlabs/Module/Cover_photo.php:304 +#: ../../include/channel.php:2350 msgid "cover photo" msgstr "Imagen de portada del perfil" -#: ../../include/channel.php:2615 ../../boot.php:1749 +#: ../../include/channel.php:2631 ../../boot.php:1747 #: ../../Zotlabs/Module/Rmagic.php:96 msgid "Remote Authentication" msgstr "Acceso desde su servidor" -#: ../../include/channel.php:2616 ../../Zotlabs/Module/Rmagic.php:97 +#: ../../include/channel.php:2632 ../../Zotlabs/Module/Rmagic.php:97 msgid "Enter your channel address (e.g. channel@example.com)" msgstr "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)" -#: ../../include/channel.php:2617 ../../Zotlabs/Module/Rmagic.php:98 +#: ../../include/channel.php:2633 ../../Zotlabs/Module/Rmagic.php:98 msgid "Authenticate" msgstr "Acceder" -#: ../../include/channel.php:2775 ../../Zotlabs/Module/Admin/Accounts.php:184 +#: ../../include/channel.php:2793 ../../Zotlabs/Module/Admin/Accounts.php:184 #, php-format msgid "Account '%s' deleted" msgstr "La cuenta '%s' ha sido eliminada" -#: ../../include/bbcode.php:233 ../../include/bbcode.php:939 -#: ../../include/bbcode.php:1560 ../../include/bbcode.php:1568 +#: ../../include/bbcode.php:233 ../../include/bbcode.php:993 +#: ../../include/bbcode.php:1613 ../../include/bbcode.php:1621 msgid "Image/photo" msgstr "Imagen/foto" -#: ../../include/bbcode.php:280 ../../include/bbcode.php:1585 +#: ../../include/bbcode.php:285 msgid "Encrypted content" msgstr "Contenido cifrado" -#: ../../include/bbcode.php:336 +#: ../../include/bbcode.php:341 #, php-format msgid "Install %1$s element %2$s" msgstr "Instalar el elemento de%1$s%2$s" -#: ../../include/bbcode.php:340 +#: ../../include/bbcode.php:345 #, php-format msgid "" "This post contains an installable %s element, however you lack permissions " "to install it on this site." msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio." -#: ../../include/bbcode.php:350 ../../Zotlabs/Module/Impel.php:47 +#: ../../include/bbcode.php:355 ../../Zotlabs/Module/Impel.php:47 msgid "webpage" msgstr "página web" -#: ../../include/bbcode.php:353 ../../Zotlabs/Module/Impel.php:57 +#: ../../include/bbcode.php:358 ../../Zotlabs/Module/Impel.php:57 msgid "layout" msgstr "plantilla" -#: ../../include/bbcode.php:356 ../../Zotlabs/Module/Impel.php:52 +#: ../../include/bbcode.php:361 ../../Zotlabs/Module/Impel.php:52 msgid "block" msgstr "bloque" -#: ../../include/bbcode.php:359 ../../Zotlabs/Module/Impel.php:64 +#: ../../include/bbcode.php:364 ../../Zotlabs/Module/Impel.php:64 msgid "menu" msgstr "menú" -#: ../../include/bbcode.php:562 +#: ../../include/bbcode.php:567 msgid "card" msgstr "ficha" -#: ../../include/bbcode.php:564 +#: ../../include/bbcode.php:569 msgid "article" msgstr "el artículo" -#: ../../include/bbcode.php:647 ../../include/bbcode.php:655 +#: ../../include/bbcode.php:652 ../../include/bbcode.php:660 msgid "Click to open/close" msgstr "Pulsar para abrir/cerrar" -#: ../../include/bbcode.php:668 +#: ../../include/bbcode.php:673 msgid "View article" msgstr "Ver el artículo" -#: ../../include/bbcode.php:668 +#: ../../include/bbcode.php:673 msgid "View summary" msgstr "Ver sumario" -#: ../../include/bbcode.php:1061 ../../include/bbcode.php:1246 +#: ../../include/bbcode.php:1117 ../../include/bbcode.php:1299 #: ../../addon/wiki/Lib/NativeWikiPage.php:630 msgid "Different viewers will see this text differently" msgstr "Visitantes diferentes verán este texto de forma distinta" -#: ../../include/bbcode.php:1536 +#: ../../include/bbcode.php:1589 msgid "$1 wrote:" msgstr "$1 escribió:" @@ -4081,7 +3920,7 @@ msgstr "No se ha podido crear un canal con un identificador que ya existe en est 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.php:122 +#: ../../include/import.php:128 msgid "Cloned channel not found. Import failed." msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado." @@ -4117,6 +3956,45 @@ msgstr "Ocultar el botón y mostrar los smilies directamente." msgid "Smileybutton Settings" msgstr "Ajustes de Smileybutton" +#: ../../addon/fediquest/fediquest.php:211 +msgid "ERROR: word length is not correct!" +msgstr "ERROR: ¡la longitud de la palabra no es correcta!" + +#: ../../addon/fediquest/Mod_Fediquest.php:22 +msgid "Fediquest App" +msgstr "Aplicación Fediquest" + +#: ../../addon/fediquest/Mod_Fediquest.php:23 +msgid "A distributed quest for a given word (game)." +msgstr "Una búsqueda distribuida de una palabra determinada (juego)." + +#: ../../addon/fediquest/Mod_Fediquest.php:24 +msgid "" +"To start a game, enter [fediquest]your_word[/fediquest] somewhere in a " +"toplevel post." +msgstr "Para empezar una partida, introduce [fediquest]tu_palabra[/fediquest] en algún lugar de un post de toplevel." + +#: ../../addon/fediquest/Mod_Fediquest.php:25 +msgid "Your contacts can post their guess in the comments." +msgstr "Sus contactos pueden publicar sus conjeturas en los comentarios." + +#: ../../addon/fediquest/Mod_Fediquest.php:26 +msgid "" +"Your channel will evaluate the guess and automatically post the response." +msgstr "Su canal evaluará la conjetura y publicará automáticamente la respuesta." + +#: ../../addon/fediquest/Mod_Fediquest.php:28 +msgid "Correct letters" +msgstr "Letras correctas" + +#: ../../addon/fediquest/Mod_Fediquest.php:29 +msgid "Letters contained in the word but at the wrong spot" +msgstr "Letras contenidas en la palabra pero en el lugar equivocado" + +#: ../../addon/fediquest/Mod_Fediquest.php:30 +msgid "Letters not contained in the word" +msgstr "Letras no contenidas en la palabra" + #: ../../addon/socialauth/Mod_SocialAuth.php:106 #: ../../addon/socialauth/Mod_SocialAuth.php:179 msgid "Network error" @@ -4214,45 +4092,6 @@ msgstr "PHP upload_max_filesize: " msgid "PHP post_max_size (must be larger than upload_max_filesize): " msgstr "PHP post_max_size (debe ser mayor que upload_max_filesize): " -#: ../../addon/fediwordle/fediwordle.php:211 -msgid "ERROR: word length is not correct!" -msgstr "ERROR: ¡la longitud de la palabra no es correcta!" - -#: ../../addon/fediwordle/Mod_Fediwordle.php:22 -msgid "Fediwordle App" -msgstr "App Fediwordle" - -#: ../../addon/fediwordle/Mod_Fediwordle.php:23 -msgid "A distributed word game inspired by wordle." -msgstr "Un juego de palabras distribuido inspirado en el wordle." - -#: ../../addon/fediwordle/Mod_Fediwordle.php:24 -msgid "" -"To start a game, enter [wordle]your_word[/wordle] somewhere in a toplevel " -"post." -msgstr "Para empezar una partida, introduzca [wordle]mi_palabra[/wordle] en algún lugar de un post de nivel superior." - -#: ../../addon/fediwordle/Mod_Fediwordle.php:25 -msgid "Your contacts can post their guess in the comments." -msgstr "Sus contactos pueden publicar sus conjeturas en los comentarios." - -#: ../../addon/fediwordle/Mod_Fediwordle.php:26 -msgid "" -"Your channel will evaluate the guess and automatically post the response." -msgstr "Su canal evaluará la conjetura y publicará automáticamente la respuesta." - -#: ../../addon/fediwordle/Mod_Fediwordle.php:28 -msgid "Correct letters" -msgstr "Letras correctas" - -#: ../../addon/fediwordle/Mod_Fediwordle.php:29 -msgid "Letters contained in the word but at the wrong spot" -msgstr "Letras contenidas en la palabra pero en el lugar equivocado" - -#: ../../addon/fediwordle/Mod_Fediwordle.php:30 -msgid "Letters not contained in the word" -msgstr "Letras no contenidas en la palabra" - #: ../../addon/sendzid/Mod_Sendzid.php:21 msgid "Send your identity to all websites" msgstr "Enviar su identidad a todos los sitios web" @@ -4335,7 +4174,7 @@ msgid "Last Name" msgstr "Apellido" #: ../../addon/openid/MysqlProvider.php:54 -#: ../../addon/redred/Mod_Redred.php:73 ../../boot.php:1742 +#: ../../addon/redred/Mod_Redred.php:73 ../../boot.php:1740 msgid "Nickname" msgstr "Alias" @@ -4343,12 +4182,6 @@ msgstr "Alias" msgid "Full Name" msgstr "Nombre completo" -#: ../../addon/openid/MysqlProvider.php:58 -#: ../../addon/openid/MysqlProvider.php:59 -#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:366 -msgid "Profile Photo" -msgstr "Foto del perfil" - #: ../../addon/openid/MysqlProvider.php:61 msgid "Profile Photo 16px" msgstr "Foto del perfil 16px" @@ -4374,11 +4207,11 @@ msgid "Profile Photo 128px" msgstr "Foto del perfil 128px" #: ../../addon/openid/MysqlProvider.php:68 -#: ../../Zotlabs/Module/Profiles.php:783 +#: ../../Zotlabs/Module/Profiles.php:779 msgid "Homepage URL" msgstr "Dirección de la página personal" -#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:364 +#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:362 msgid "Language" msgstr "Idioma" @@ -4399,7 +4232,7 @@ msgid "Birthdate" msgstr "Fecha de nacimiento" #: ../../addon/openid/MysqlProvider.php:74 -#: ../../Zotlabs/Module/Profiles.php:456 +#: ../../Zotlabs/Module/Profiles.php:452 msgid "Gender" msgstr "Género" @@ -4819,7 +4652,7 @@ msgstr "Publicar por defecto en InsaneJournal" msgid "Insane Journal Crosspost Connector" msgstr "Conector de publicación cruzada de InsaneJournal" -#: ../../addon/wholikesme/wholikesme.php:29 +#: ../../addon/wholikesme/wholikesme.php:30 msgid "Who likes me?" msgstr "¿Quién me ha puesto \"Me gusta\"?" @@ -4967,46 +4800,43 @@ msgstr "Su cuenta en %s caducará en unos pocos días." msgid "Your test account is about to expire." msgstr "Su cuenta de prueba está a punto de expirar." -#: ../../addon/pubcrawl/as.php:1958 ../../addon/diaspora/Receiver.php:1693 -#: ../../Zotlabs/Module/Subthread.php:115 ../../Zotlabs/Module/Like.php:453 -msgid "status" -msgstr "el mensaje de estado " - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:25 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:28 msgid "ActivityPub Protocol Settings updated." msgstr "Se han actualizado los ajustes del protocolo ActivityPub." -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:41 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:44 msgid "" "The activitypub protocol does not support location independence. Connections" " you make within that network may be unreachable from alternate channel " "locations." msgstr "El protocolo ActivityPub no soporta la independencia de ubicación. Las conexiones que realice dentro de esa red pueden no ser accesibles desde ubicaciones de canales alternativos." -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:47 -msgid "Deliver to ActivityPub recipients in privacy groups" -msgstr "Entregar a los destinatarios de ActivityPub en grupos de canales" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:47 -msgid "" -"May result in a large number of mentions and expose all the members of your " -"privacy group" -msgstr "Puede resultar en un gran número de menciones y exponer a todos los miembros de su grupo de canales" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:51 -msgid "Send multi-media HTML articles" -msgstr "Enviar artículos multimedia en HTML" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 +msgid "Send activities of type note instead of article" +msgstr "Enviar actividades de tipo nota en lugar de artículo" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:51 -msgid "Not supported by some microblog services such as Mastodon" -msgstr "No soportado por algunos servicios de microblog como Mastodon" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 +msgid "Microblog services such as Mastodon do not properly support articles" +msgstr "Los servicios de microblog como Mastodon no soportan correctamente los artículos" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:59 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:58 msgid "Activitypub Protocol" msgstr "Protocolo Activitypub" +#: ../../addon/pubcrawl/pubcrawl.php:1073 +#: ../../addon/diaspora/diaspora.php:415 +#: ../../Zotlabs/Module/Contactedit.php:494 +msgid "Refresh failed" +msgstr "Error de actualización" + +#: ../../addon/pubcrawl/pubcrawl.php:1080 +#: ../../addon/diaspora/diaspora.php:420 +#: ../../Zotlabs/Module/Contactedit.php:491 +msgid "Refresh succeeded" +msgstr "Actualización con éxito" + #: ../../addon/bookmarker/bookmarker.php:38 -#: ../../Zotlabs/Lib/ThreadItem.php:474 +#: ../../Zotlabs/Lib/ThreadItem.php:495 msgid "Save Bookmarks" msgstr "Guardar en Marcadores" @@ -5024,7 +4854,7 @@ msgid "Post to Dreamwidth" msgstr "Publicar en Dreamwidth" #: ../../addon/dwpost/dwpost.php:134 ../../addon/dwpost/Mod_Dwpost.php:67 -#: ../../addon/wppost/wppost.php:174 ../../addon/wppost/Mod_Wppost.php:96 +#: ../../addon/wppost/wppost.php:175 ../../addon/wppost/Mod_Wppost.php:96 #: ../../addon/wiki/Mod_Wiki.php:381 ../../addon/ljpost/ljpost.php:134 msgid "Source" msgstr "Fuente" @@ -5075,7 +4905,7 @@ msgstr "La dirección de una transmisión de diaspora. Ejemplo: relay@diasporare msgid "Diaspora relay could not be imported" msgstr "El reenvío de Diaspora no ha podido ser importado" -#: ../../addon/diaspora/diaspora.php:1093 +#: ../../addon/diaspora/diaspora.php:1106 msgid "No subject" msgstr "Sin tema" @@ -5097,17 +4927,22 @@ msgstr "$projectname" msgid "%1$s dislikes %2$s's %3$s" msgstr "a %1$s no le gusta el %3$s de %2$s" -#: ../../addon/diaspora/Receiver.php:2251 ../../Zotlabs/Module/Like.php:495 +#: ../../addon/diaspora/Receiver.php:1693 +#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Like.php:456 +msgid "status" +msgstr "el mensaje de estado " + +#: ../../addon/diaspora/Receiver.php:2248 ../../Zotlabs/Module/Like.php:487 #, php-format msgid "%1$s is attending %2$s's %3$s" msgstr "%3$s de %2$s: %1$s participa" -#: ../../addon/diaspora/Receiver.php:2253 ../../Zotlabs/Module/Like.php:497 +#: ../../addon/diaspora/Receiver.php:2250 ../../Zotlabs/Module/Like.php:489 #, php-format msgid "%1$s is not attending %2$s's %3$s" msgstr "%3$s de %2$s: %1$s no participa" -#: ../../addon/diaspora/Receiver.php:2255 ../../Zotlabs/Module/Like.php:499 +#: ../../addon/diaspora/Receiver.php:2252 ../../Zotlabs/Module/Like.php:491 #, php-format msgid "%1$s may attend %2$s's %3$s" msgstr "%3$s de %2$s: %1$s quizá participe" @@ -5181,7 +5016,7 @@ msgid "No channels currently blocked" msgstr "No hay canales bloqueados actualmente" #: ../../addon/superblock/Mod_Superblock.php:90 -#: ../../Zotlabs/Module/Cover_photo.php:424 ../../Zotlabs/Module/Tagrm.php:137 +#: ../../Zotlabs/Module/Cover_photo.php:381 ../../Zotlabs/Module/Tagrm.php:137 #: ../../Zotlabs/Module/Admin/Addons.php:462 #: ../../Zotlabs/Module/Photos.php:994 msgid "Remove" @@ -5337,7 +5172,7 @@ msgstr "Nombre" #: ../../addon/rendezvous/rendezvous.php:173 #: ../../addon/cart/submodules/hzservices.php:657 #: ../../addon/cart/submodules/manualcat.php:260 -#: ../../Zotlabs/Module/Appman.php:210 ../../Zotlabs/Module/Rbmark.php:100 +#: ../../Zotlabs/Module/Appman.php:220 ../../Zotlabs/Module/Rbmark.php:100 #: ../../Zotlabs/Module/Cdav.php:1005 msgid "Description" msgstr "Descripción" @@ -5418,7 +5253,7 @@ msgid "You have no rendezvous. Press the button above to create a rendezvous!" msgstr "No tiene ninguna cita. ¡Presione el botón de arriba para crear una!" #: ../../addon/rendezvous/rendezvous.php:401 -#: ../../Zotlabs/Module/Setup.php:730 +#: ../../Zotlabs/Module/Setup.php:748 msgid "Errors encountered creating database tables." msgstr "Se han encontrado errores al crear las tablas de la base de datos." @@ -5541,14 +5376,14 @@ msgstr "Añadir un artículo" #: ../../addon/wiki/Mod_Wiki.php:36 #: ../../addon/flashcards/Mod_Flashcards.php:52 -#: ../../addon/faces/Mod_Faces.php:64 ../../addon/cart/cart.php:1459 +#: ../../addon/faces/Mod_Faces.php:64 ../../addon/cart/cart.php:1458 msgid "Profile Unavailable." msgstr "Perfil no disponible" #: ../../addon/wiki/Mod_Wiki.php:81 ../../addon/cart/manual_payments.php:93 #: ../../addon/cart/submodules/paypalbuttonV2.php:486 #: ../../addon/cart/submodules/paypalbutton.php:456 -#: ../../addon/cart/myshop.php:37 ../../addon/cart/cart.php:1610 +#: ../../addon/cart/myshop.php:37 ../../addon/cart/cart.php:1609 msgid "Invalid channel" msgstr "Canal no válido" @@ -5575,7 +5410,7 @@ msgid "View" msgstr "Ver" #: ../../addon/wiki/Mod_Wiki.php:217 ../../Zotlabs/Module/Manage.php:137 -#: ../../Zotlabs/Module/Profiles.php:852 +#: ../../Zotlabs/Module/Profiles.php:848 msgid "Create New" msgstr "Crear" @@ -5645,8 +5480,8 @@ msgstr "Nombre de la nueva página" msgid "Embed image from photo albums" msgstr "Incluir una imagen de los álbumes de fotos" -#: ../../addon/wiki/Mod_Wiki.php:402 ../../Zotlabs/Module/Cover_photo.php:432 -#: ../../Zotlabs/Module/Profile_photo.php:557 +#: ../../addon/wiki/Mod_Wiki.php:402 ../../Zotlabs/Module/Cover_photo.php:389 +#: ../../Zotlabs/Module/Profile_photo.php:556 msgid "Choose a different album" msgstr "Elegir un álbum diferente..." @@ -5706,12 +5541,12 @@ msgstr "Revisión seleccionada" msgid "You must be authenticated." msgstr "Debe estar autenticado." -#: ../../addon/wiki/Mod_Wiki.php:899 ../../addon/wiki/Widget/Wiki_pages.php:61 +#: ../../addon/wiki/Mod_Wiki.php:899 ../../addon/wiki/Widget/Wiki_pages.php:64 msgid "Add new page" msgstr "Añadir una nueva página" -#: ../../addon/wiki/Mod_Wiki.php:906 ../../addon/wiki/Widget/Wiki_pages.php:68 -#: ../../Zotlabs/Module/Dreport.php:133 +#: ../../addon/wiki/Mod_Wiki.php:906 ../../addon/wiki/Widget/Wiki_pages.php:71 +#: ../../Zotlabs/Module/Dreport.php:132 msgid "Options" msgstr "Opciones" @@ -5792,11 +5627,11 @@ msgstr "Fecha" msgid "Compare" msgstr "Comparar" -#: ../../addon/wiki/Widget/Wiki_pages.php:55 +#: ../../addon/wiki/Widget/Wiki_pages.php:58 msgid "Wiki Pages" msgstr "Páginas del wiki" -#: ../../addon/wiki/Widget/Wiki_pages.php:66 +#: ../../addon/wiki/Widget/Wiki_pages.php:69 msgid "Page name" msgstr "Nombre de la página" @@ -5933,7 +5768,7 @@ msgid "Post to GNU social" msgstr "Publicar en GNU social" #: ../../addon/statusnet/statusnet.php:593 -#: ../../Zotlabs/Module/Admin/Site.php:423 +#: ../../Zotlabs/Module/Admin/Site.php:409 msgid "Site name" msgstr "Nombre del sitio" @@ -6122,7 +5957,7 @@ msgstr "Los pagos manuales no están habilitados." #: ../../addon/cart/manual_payments.php:68 #: ../../addon/cart/submodules/paypalbuttonV2.php:417 #: ../../addon/cart/submodules/paypalbutton.php:392 -#: ../../addon/cart/cart.php:1632 +#: ../../addon/cart/cart.php:1631 msgid "Order not found." msgstr "El pedido no se ha encontrado." @@ -6321,7 +6156,7 @@ msgstr "Instrucciones" msgid "Access Denied." msgstr "Acceso denegado" -#: ../../addon/cart/myshop.php:113 ../../addon/cart/cart.php:1495 +#: ../../addon/cart/myshop.php:113 ../../addon/cart/cart.php:1494 msgid "Order Not Found" msgstr "No se ha encontrado el pedido" @@ -6348,47 +6183,47 @@ msgstr "[cesta] Artículo añadido" msgid "Order already checked out." msgstr "El pedido ya ha sido revisado" -#: ../../addon/cart/cart.php:1417 +#: ../../addon/cart/cart.php:1416 msgid "Drop database tables when uninstalling." msgstr "Eliminar tablas de la base de datos al desinstalar." -#: ../../addon/cart/cart.php:1424 ../../addon/cart/Settings/Cart.php:129 +#: ../../addon/cart/cart.php:1423 ../../addon/cart/Settings/Cart.php:129 msgid "Cart Settings" msgstr "Configuración del carro de la compra" -#: ../../addon/cart/cart.php:1436 ../../addon/cart/cart.php:1439 +#: ../../addon/cart/cart.php:1435 ../../addon/cart/cart.php:1438 msgid "Shop" msgstr "Comprar" -#: ../../addon/cart/cart.php:1599 +#: ../../addon/cart/cart.php:1598 msgid "You must be logged into the Grid to shop." msgstr "Debe iniciar sesión en la red para comprar." -#: ../../addon/cart/cart.php:1648 +#: ../../addon/cart/cart.php:1647 msgid "Access denied." msgstr "Acceso denegado" -#: ../../addon/cart/cart.php:1700 ../../addon/cart/cart.php:1843 +#: ../../addon/cart/cart.php:1699 ../../addon/cart/cart.php:1842 msgid "No Order Found" msgstr "No se ha encontrado ningún pedido" -#: ../../addon/cart/cart.php:1709 +#: ../../addon/cart/cart.php:1708 msgid "An unknown error has occurred Please start again." msgstr "Se ha producido un error desconocido Vuelva a empezar." -#: ../../addon/cart/cart.php:1852 +#: ../../addon/cart/cart.php:1851 msgid "Requirements not met." msgstr "No se cumplen los requisitos." -#: ../../addon/cart/cart.php:1852 +#: ../../addon/cart/cart.php:1851 msgid "Review your order and complete any needed requirements." msgstr "Revise su pedido y complete los requisitos necesarios." -#: ../../addon/cart/cart.php:1878 +#: ../../addon/cart/cart.php:1877 msgid "Invalid Payment Type. Please start again." msgstr "Tipo de pago no válido. Por favor, empiece de nuevo." -#: ../../addon/cart/cart.php:1885 +#: ../../addon/cart/cart.php:1884 msgid "Order not found" msgstr "El pedido no se ha encontrado" @@ -6465,94 +6300,6 @@ msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta de msgid "Twitter Crosspost Connector" msgstr "Twitter Crosspost Connector" -#: ../../addon/moremoods/moremoods.php:19 -msgid "lonely" -msgstr "Solo/a" - -#: ../../addon/moremoods/moremoods.php:20 -msgid "drunk" -msgstr "ebrio/a" - -#: ../../addon/moremoods/moremoods.php:21 -msgid "horny" -msgstr "caliente" - -#: ../../addon/moremoods/moremoods.php:22 -msgid "stoned" -msgstr "drogado/a" - -#: ../../addon/moremoods/moremoods.php:23 -msgid "fucked up" -msgstr "jodido/a" - -#: ../../addon/moremoods/moremoods.php:24 -msgid "clusterfucked" -msgstr "hecho/a polvo" - -#: ../../addon/moremoods/moremoods.php:25 -msgid "crazy" -msgstr "loco/a" - -#: ../../addon/moremoods/moremoods.php:26 -msgid "hurt" -msgstr "ofendido/a" - -#: ../../addon/moremoods/moremoods.php:27 -msgid "sleepy" -msgstr "soñoliento/a" - -#: ../../addon/moremoods/moremoods.php:28 -msgid "grumpy" -msgstr "gruñón/ona" - -#: ../../addon/moremoods/moremoods.php:29 -msgid "high" -msgstr "superior" - -#: ../../addon/moremoods/moremoods.php:30 -msgid "semi-conscious" -msgstr "semiconsciente" - -#: ../../addon/moremoods/moremoods.php:31 -msgid "in love" -msgstr "enamorado/a" - -#: ../../addon/moremoods/moremoods.php:32 -msgid "in lust" -msgstr "lujurioso/a" - -#: ../../addon/moremoods/moremoods.php:33 -msgid "naked" -msgstr "desnudo/a" - -#: ../../addon/moremoods/moremoods.php:34 -msgid "stinky" -msgstr "apestoso/a" - -#: ../../addon/moremoods/moremoods.php:35 -msgid "sweaty" -msgstr "sudoroso/a" - -#: ../../addon/moremoods/moremoods.php:36 -msgid "bleeding out" -msgstr "exánime" - -#: ../../addon/moremoods/moremoods.php:37 -msgid "victorious" -msgstr "victorioso/a" - -#: ../../addon/moremoods/moremoods.php:38 -msgid "defeated" -msgstr "derrotado/a" - -#: ../../addon/moremoods/moremoods.php:39 -msgid "envious" -msgstr "envidioso/a" - -#: ../../addon/moremoods/moremoods.php:40 -msgid "jealous" -msgstr "celoso/a" - #: ../../addon/gravatar/gravatar.php:123 msgid "generic profile image" msgstr "imagen del perfil general" @@ -6723,7 +6470,7 @@ msgstr "Título" msgid "Brief description or title" msgstr "Breve descripción o título" -#: ../../addon/workflow/workflow.php:2661 ../../Zotlabs/Lib/Apps.php:375 +#: ../../addon/workflow/workflow.php:2661 ../../Zotlabs/Lib/Apps.php:373 #: ../../Zotlabs/Widget/Notes.php:38 msgid "Notes" msgstr "Notas" @@ -6766,158 +6513,6 @@ msgstr "Un ajuste" msgid "Skeleton Settings" msgstr "Ajustes de Skeleton" -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslap" -msgstr "una bofetada humillante" - -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslapped" -msgstr "ha abofeteado de forma humillante a" - -#: ../../addon/morepokes/morepokes.php:20 -msgid "shag" -msgstr "un polvo" - -#: ../../addon/morepokes/morepokes.php:20 -msgid "shagged" -msgstr "ha dejado exhausto/a a" - -#: ../../addon/morepokes/morepokes.php:21 -msgid "patent" -msgstr "una patente" - -#: ../../addon/morepokes/morepokes.php:21 -msgid "patented" -msgstr "ha patentado a" - -#: ../../addon/morepokes/morepokes.php:22 -msgid "hug" -msgstr "un abrazo" - -#: ../../addon/morepokes/morepokes.php:22 -msgid "hugged" -msgstr "ha abrazado a" - -#: ../../addon/morepokes/morepokes.php:23 -msgid "murder" -msgstr "un asesinato" - -#: ../../addon/morepokes/morepokes.php:23 -msgid "murdered" -msgstr "ha asesinado a" - -#: ../../addon/morepokes/morepokes.php:24 -msgid "worship" -msgstr "una alabanza" - -#: ../../addon/morepokes/morepokes.php:24 -msgid "worshipped" -msgstr "ha elogiado a" - -#: ../../addon/morepokes/morepokes.php:25 -msgid "kiss" -msgstr "un beso" - -#: ../../addon/morepokes/morepokes.php:25 -msgid "kissed" -msgstr "ha besado a" - -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempt" -msgstr "una tentación" - -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempted" -msgstr "ha tentado a" - -#: ../../addon/morepokes/morepokes.php:27 -msgid "raise eyebrows at" -msgstr "un levantamiento de cejas" - -#: ../../addon/morepokes/morepokes.php:27 -msgid "raised their eyebrows at" -msgstr "ha levantado las cejas a" - -#: ../../addon/morepokes/morepokes.php:28 -msgid "insult" -msgstr "un insulto" - -#: ../../addon/morepokes/morepokes.php:28 -msgid "insulted" -msgstr "ha insultado a" - -#: ../../addon/morepokes/morepokes.php:29 -msgid "praise" -msgstr "un elogio" - -#: ../../addon/morepokes/morepokes.php:29 -msgid "praised" -msgstr "ha elogiado a" - -#: ../../addon/morepokes/morepokes.php:30 -msgid "be dubious of" -msgstr "una indecisión" - -#: ../../addon/morepokes/morepokes.php:30 -msgid "was dubious of" -msgstr "estaba dudoso de" - -#: ../../addon/morepokes/morepokes.php:31 -msgid "eat" -msgstr "una comida" - -#: ../../addon/morepokes/morepokes.php:31 -msgid "ate" -msgstr "ha comido" - -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggle and fawn at" -msgstr "una sonrisa aduladora" - -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggled and fawned at" -msgstr "ha sonreído y adulado a" - -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubt" -msgstr "una duda" - -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubted" -msgstr "ha dudado de" - -#: ../../addon/morepokes/morepokes.php:34 -msgid "glare" -msgstr "una mirada furiosa" - -#: ../../addon/morepokes/morepokes.php:34 -msgid "glared at" -msgstr "ha mirado con furia" - -#: ../../addon/morepokes/morepokes.php:35 -msgid "fuck" -msgstr "una mierda" - -#: ../../addon/morepokes/morepokes.php:35 -msgid "fucked" -msgstr "ha mandado a la mierda a" - -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonk" -msgstr "un golpe" - -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonked" -msgstr "ha golpeado a" - -#: ../../addon/morepokes/morepokes.php:37 -msgid "declare undying love for" -msgstr "una declaración de amor eterno" - -#: ../../addon/morepokes/morepokes.php:37 -msgid "declared undying love for" -msgstr "ha declarado amor eterno a" - #: ../../addon/authchoose/Mod_Authchoose.php:30 msgid "" "Allow magic authentication only to websites of your immediate connections" @@ -7131,45 +6726,45 @@ msgstr "¡El juego del \"gato\"!" msgid "I won!" msgstr "¡He ganado yo!" -#: ../../boot.php:1724 +#: ../../boot.php:1722 msgid "Create an account to access services and applications" msgstr "Crear una cuenta para acceder a los servicios y aplicaciones" -#: ../../boot.php:1742 +#: ../../boot.php:1740 msgid "Email or nickname" msgstr "Correo electrónico o apodo" -#: ../../boot.php:1752 +#: ../../boot.php:1750 msgid "Password" msgstr "Contraseña" -#: ../../boot.php:1753 +#: ../../boot.php:1751 msgid "Remember me" msgstr "Recordarme" -#: ../../boot.php:1756 +#: ../../boot.php:1754 msgid "Forgot your password?" msgstr "¿Olvidó su contraseña?" -#: ../../boot.php:1757 ../../Zotlabs/Module/Lostpass.php:91 +#: ../../boot.php:1755 ../../Zotlabs/Module/Lostpass.php:91 msgid "Password Reset" msgstr "Restablecer la contraseña" -#: ../../boot.php:2627 +#: ../../boot.php:2625 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "[$Projectname] Error SSL del sitio web en %s" -#: ../../boot.php:2632 +#: ../../boot.php:2630 msgid "Website SSL certificate is not valid. Please correct." msgstr "El certificado SSL del sitio web no es válido. Por favor, solucione el problema." -#: ../../boot.php:2748 +#: ../../boot.php:2746 #, php-format msgid "[$Projectname] Cron tasks not running on %s" msgstr "[$Projectname] Las tareas de Cron no están funcionando en %s" -#: ../../boot.php:2753 +#: ../../boot.php:2751 msgid "Cron/Scheduled tasks not running." msgstr "Las tareas del Planificador/Cron no están funcionando." @@ -7240,262 +6835,251 @@ msgstr "solicita comentar sobre " msgid "commented on" msgstr "ha comentado sobre " -#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:314 +#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:317 msgid "requested to like" msgstr "solicita que se permita mostrar agrado " -#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:314 +#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:317 msgid "liked" msgstr "ha gustado de " -#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:320 msgid "requested to dislike" msgstr "solicita que se permita mostrar desagrado " -#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:320 msgid "disliked" msgstr "no ha gustado de " -#: ../../Zotlabs/Lib/Enotify.php:169 +#: ../../Zotlabs/Lib/Enotify.php:167 +msgid "repeated" +msgstr "repitió" + +#: ../../Zotlabs/Lib/Enotify.php:172 msgid "voted on" msgstr "votado en " -#: ../../Zotlabs/Lib/Enotify.php:212 +#: ../../Zotlabs/Lib/Enotify.php:215 #, php-format msgid "%1$s %2$s [zrl=%3$s]a %4$s[/zrl]" msgstr "%1$s%2$s [zrl=%3$s ]un %4$s[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:220 +#: ../../Zotlabs/Lib/Enotify.php:223 #, php-format msgid "%1$s %2$s [zrl=%3$s]%4$s's %5$s[/zrl]" msgstr "%1$s %2$s[zrl=%3$s]%5$s de %4$s[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:229 ../../Zotlabs/Lib/Enotify.php:321 +#: ../../Zotlabs/Lib/Enotify.php:232 ../../Zotlabs/Lib/Enotify.php:324 #, php-format msgid "%1$s %2$s [zrl=%3$s]your %4$s[/zrl]" msgstr "%1$s %2$s [zrl=%3$s]su %4$s[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:241 +#: ../../Zotlabs/Lib/Enotify.php:244 #, php-format msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s" msgstr "[$Projectname:Aviso] Comentario moderado en la conversación #%1$d por %2$s" -#: ../../Zotlabs/Lib/Enotify.php:243 +#: ../../Zotlabs/Lib/Enotify.php:246 #, php-format msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" msgstr "[$Projectname:Aviso] Nuevo comentario de %2$s en la conversación #%1$d" -#: ../../Zotlabs/Lib/Enotify.php:244 +#: ../../Zotlabs/Lib/Enotify.php:247 #, php-format msgid "%1$s commented on an item/conversation you have been following" msgstr "%1$sha comentado un elemento/conversación que ha estado siguiendo." -#: ../../Zotlabs/Lib/Enotify.php:247 ../../Zotlabs/Lib/Enotify.php:341 -#: ../../Zotlabs/Lib/Enotify.php:357 ../../Zotlabs/Lib/Enotify.php:381 -#: ../../Zotlabs/Lib/Enotify.php:398 ../../Zotlabs/Lib/Enotify.php:411 +#: ../../Zotlabs/Lib/Enotify.php:250 ../../Zotlabs/Lib/Enotify.php:344 +#: ../../Zotlabs/Lib/Enotify.php:360 ../../Zotlabs/Lib/Enotify.php:384 +#: ../../Zotlabs/Lib/Enotify.php:401 ../../Zotlabs/Lib/Enotify.php:414 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "Para ver o comentar la conversación, visite %s" -#: ../../Zotlabs/Lib/Enotify.php:251 ../../Zotlabs/Lib/Enotify.php:252 +#: ../../Zotlabs/Lib/Enotify.php:254 ../../Zotlabs/Lib/Enotify.php:255 #, php-format msgid "Please visit %s to approve or reject this comment." msgstr "Por favor, visite %s para aprobar o rechazar este comentario." -#: ../../Zotlabs/Lib/Enotify.php:337 +#: ../../Zotlabs/Lib/Enotify.php:340 #, php-format msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" msgstr "[$Projectname:Aviso] \"Me gusta\" de %2$s en la conversación #%1$d" -#: ../../Zotlabs/Lib/Enotify.php:338 +#: ../../Zotlabs/Lib/Enotify.php:341 #, php-format msgid "%1$s liked an item/conversation you created" msgstr "A %1$s le ha gustado un elemento o conversación que ha creado usted." -#: ../../Zotlabs/Lib/Enotify.php:349 +#: ../../Zotlabs/Lib/Enotify.php:352 #, php-format msgid "[$Projectname:Notify] %s posted to your profile wall" msgstr "[$Projectname:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")" -#: ../../Zotlabs/Lib/Enotify.php:351 +#: ../../Zotlabs/Lib/Enotify.php:354 #, php-format msgid "%1$s posted to your profile wall at %2$s" msgstr "%1$s ha publicado en su muro en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:353 +#: ../../Zotlabs/Lib/Enotify.php:356 #, php-format msgid "%1$s posted to [zrl=%2$s]your wall[/zrl]" msgstr "%1$sha publicado en [zrl=%2$s]su muro[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:375 +#: ../../Zotlabs/Lib/Enotify.php:378 #, php-format msgid "[$Projectname:Notify] %s tagged you" msgstr "[$Projectname:Aviso] %s le ha etiquetado" -#: ../../Zotlabs/Lib/Enotify.php:376 +#: ../../Zotlabs/Lib/Enotify.php:379 #, php-format msgid "%1$s tagged you at %2$s" msgstr "%1$sle ha etiquetado en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:377 +#: ../../Zotlabs/Lib/Enotify.php:380 #, php-format msgid "%1$s [zrl=%2$s]tagged you[/zrl]." msgstr "%1$s [zrl=%2$s]le ha etiquetado[/zrl]." -#: ../../Zotlabs/Lib/Enotify.php:388 +#: ../../Zotlabs/Lib/Enotify.php:391 #, php-format msgid "[$Projectname:Notify] %1$s poked you" msgstr "[$Projectname:Aviso] %1$s le ha dado un toque" -#: ../../Zotlabs/Lib/Enotify.php:389 +#: ../../Zotlabs/Lib/Enotify.php:392 #, php-format msgid "%1$s poked you at %2$s" msgstr "%1$sle ha dado un toque en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:390 +#: ../../Zotlabs/Lib/Enotify.php:393 #, php-format msgid "%1$s [zrl=%2$s]poked you[/zrl]." msgstr "%1$s [zrl=%2$s] le ha dado un toque[/zrl]." -#: ../../Zotlabs/Lib/Enotify.php:405 +#: ../../Zotlabs/Lib/Enotify.php:408 #, php-format msgid "[$Projectname:Notify] %s tagged your post" msgstr "[$Projectname:Aviso] %s ha etiquetado su entrada" -#: ../../Zotlabs/Lib/Enotify.php:406 +#: ../../Zotlabs/Lib/Enotify.php:409 #, php-format msgid "%1$s tagged your post at %2$s" msgstr "%1$sha etiquetado su entrada en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:407 +#: ../../Zotlabs/Lib/Enotify.php:410 #, php-format msgid "%1$s tagged [zrl=%2$s]your post[/zrl]" msgstr "%1$s ha etiquetado [zrl=%2$s]su entrada[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:418 +#: ../../Zotlabs/Lib/Enotify.php:421 msgid "[$Projectname:Notify] Introduction received" msgstr "[$Projectname:Aviso] Ha recibido una solicitud de conexión" -#: ../../Zotlabs/Lib/Enotify.php:419 +#: ../../Zotlabs/Lib/Enotify.php:422 #, php-format msgid "You've received an new connection request from '%1$s' at %2$s" msgstr "Ha recibido una nueva solicitud de conexión de '%1$s' en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:420 +#: ../../Zotlabs/Lib/Enotify.php:423 #, php-format msgid "You've received [zrl=%1$s]a new connection request[/zrl] from %2$s." msgstr "Ha recibido [zrl=%1$s]una nueva solicitud de conexión[/zrl] de %2$s." -#: ../../Zotlabs/Lib/Enotify.php:423 ../../Zotlabs/Lib/Enotify.php:441 +#: ../../Zotlabs/Lib/Enotify.php:426 ../../Zotlabs/Lib/Enotify.php:444 #, php-format msgid "You may visit their profile at %s" msgstr "Puede visitar su perfil en %s" -#: ../../Zotlabs/Lib/Enotify.php:425 +#: ../../Zotlabs/Lib/Enotify.php:428 #, php-format msgid "Please visit %s to approve or reject the connection request." msgstr "Por favor, visite %s para permitir o rechazar la solicitad de conexión." -#: ../../Zotlabs/Lib/Enotify.php:432 +#: ../../Zotlabs/Lib/Enotify.php:435 msgid "[$Projectname:Notify] Friend suggestion received" msgstr "[$Projectname:Aviso] Ha recibido una sugerencia de conexión" -#: ../../Zotlabs/Lib/Enotify.php:433 +#: ../../Zotlabs/Lib/Enotify.php:436 #, php-format msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "Ha recibido una sugerencia de amistad de '%1$s' en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:434 +#: ../../Zotlabs/Lib/Enotify.php:437 #, php-format msgid "" "You've received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s." msgstr "Ha recibido [zrl=%1$s]una sugerencia de amistad[/zrl] para %2$s de %3$s." -#: ../../Zotlabs/Lib/Enotify.php:439 +#: ../../Zotlabs/Lib/Enotify.php:442 msgid "Name:" msgstr "Nombre:" -#: ../../Zotlabs/Lib/Enotify.php:440 +#: ../../Zotlabs/Lib/Enotify.php:443 msgid "Photo:" msgstr "Foto:" -#: ../../Zotlabs/Lib/Enotify.php:443 +#: ../../Zotlabs/Lib/Enotify.php:446 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "Por favor, visite %s para aprobar o rechazar la sugerencia." -#: ../../Zotlabs/Lib/Enotify.php:668 +#: ../../Zotlabs/Lib/Enotify.php:676 msgid "[$Projectname:Notify]" msgstr "[$Projectname:Aviso]" -#: ../../Zotlabs/Lib/Enotify.php:834 +#: ../../Zotlabs/Lib/Enotify.php:842 msgid "created a new poll" msgstr "se ha creado una nueva encuesta" -#: ../../Zotlabs/Lib/Enotify.php:834 +#: ../../Zotlabs/Lib/Enotify.php:842 msgid "created a new post" msgstr "ha creado una nueva entrada" -#: ../../Zotlabs/Lib/Enotify.php:835 +#: ../../Zotlabs/Lib/Enotify.php:843 #, php-format msgid "voted on %s's poll" msgstr "votado en la encuesta de %s" -#: ../../Zotlabs/Lib/Enotify.php:835 +#: ../../Zotlabs/Lib/Enotify.php:843 #, php-format msgid "commented on %s's post" msgstr "ha comentado la entrada de %s" -#: ../../Zotlabs/Lib/Enotify.php:839 -#, php-format -msgid "repeated %s's post" -msgstr "repetida la entrada de %s" - -#: ../../Zotlabs/Lib/Enotify.php:843 -#, php-format -msgid "liked %s's post" -msgstr "Le ha gustado la entrada de %s" - -#: ../../Zotlabs/Lib/Enotify.php:847 -#, php-format -msgid "disliked %s's post" -msgstr "No le ha gustado la entrada de %s" - -#: ../../Zotlabs/Lib/Enotify.php:851 ../../Zotlabs/Lib/Enotify.php:954 +#: ../../Zotlabs/Lib/Enotify.php:847 ../../Zotlabs/Lib/Enotify.php:947 msgid "shared a file with you" msgstr "compartió un archivo con usted" -#: ../../Zotlabs/Lib/Enotify.php:860 +#: ../../Zotlabs/Lib/Enotify.php:856 #, php-format msgid "edited a post dated %s" msgstr "ha editado una entrada %s" -#: ../../Zotlabs/Lib/Enotify.php:863 +#: ../../Zotlabs/Lib/Enotify.php:859 #, php-format msgid "edited a comment dated %s" msgstr "ha editado un comentario %s" -#: ../../Zotlabs/Lib/Enotify.php:939 +#: ../../Zotlabs/Lib/Enotify.php:932 msgid "added your channel" msgstr "añadió este canal a sus conexiones" -#: ../../Zotlabs/Lib/Enotify.php:969 +#: ../../Zotlabs/Lib/Enotify.php:962 msgid "sent you a direct message" msgstr "enviarle un mensaje directo" -#: ../../Zotlabs/Lib/Enotify.php:976 +#: ../../Zotlabs/Lib/Enotify.php:969 msgid "g A l F d" msgstr "g A l d F" -#: ../../Zotlabs/Lib/Enotify.php:979 +#: ../../Zotlabs/Lib/Enotify.php:972 msgid "[today]" msgstr "[hoy]" -#: ../../Zotlabs/Lib/Enotify.php:989 +#: ../../Zotlabs/Lib/Enotify.php:982 msgid "created an event" msgstr "se creó un evento" -#: ../../Zotlabs/Lib/Enotify.php:1004 +#: ../../Zotlabs/Lib/Enotify.php:997 msgid "status verified" msgstr "estado verificado" @@ -7531,88 +7115,84 @@ msgstr "Stream" msgid "Mail" msgstr "Correo" -#: ../../Zotlabs/Lib/Apps.php:355 ../../Zotlabs/Module/Mood.php:152 -msgid "Mood" -msgstr "Estado de ánimo" - -#: ../../Zotlabs/Lib/Apps.php:357 +#: ../../Zotlabs/Lib/Apps.php:355 msgid "Chat" msgstr "Chat" -#: ../../Zotlabs/Lib/Apps.php:359 +#: ../../Zotlabs/Lib/Apps.php:357 msgid "Probe" msgstr "Probar" -#: ../../Zotlabs/Lib/Apps.php:360 +#: ../../Zotlabs/Lib/Apps.php:358 msgid "Suggest" msgstr "Sugerir" -#: ../../Zotlabs/Lib/Apps.php:361 +#: ../../Zotlabs/Lib/Apps.php:359 msgid "Random Channel" msgstr "Canal aleatorio" -#: ../../Zotlabs/Lib/Apps.php:362 +#: ../../Zotlabs/Lib/Apps.php:360 msgid "Invite" msgstr "Invitar" -#: ../../Zotlabs/Lib/Apps.php:363 ../../Zotlabs/Widget/Admin.php:31 +#: ../../Zotlabs/Lib/Apps.php:361 ../../Zotlabs/Widget/Admin.php:31 msgid "Features" msgstr "Funcionalidades" -#: ../../Zotlabs/Lib/Apps.php:365 ../../Zotlabs/Storage/Browser.php:410 +#: ../../Zotlabs/Lib/Apps.php:363 ../../Zotlabs/Storage/Browser.php:410 msgid "Post" msgstr "Publicación" -#: ../../Zotlabs/Lib/Apps.php:370 +#: ../../Zotlabs/Lib/Apps.php:368 msgid "Notifications" msgstr "Notificaciones" -#: ../../Zotlabs/Lib/Apps.php:371 +#: ../../Zotlabs/Lib/Apps.php:369 msgid "Order Apps" msgstr "Ordenar las apps" -#: ../../Zotlabs/Lib/Apps.php:372 +#: ../../Zotlabs/Lib/Apps.php:370 msgid "CardDAV" msgstr "CardDAV" -#: ../../Zotlabs/Lib/Apps.php:373 ../../Zotlabs/Module/Sources.php:105 +#: ../../Zotlabs/Lib/Apps.php:371 ../../Zotlabs/Module/Sources.php:105 msgid "Channel Sources" msgstr "Orígenes de los contenidos del canal" -#: ../../Zotlabs/Lib/Apps.php:374 ../../Zotlabs/Module/Tokens.php:288 +#: ../../Zotlabs/Lib/Apps.php:372 ../../Zotlabs/Module/Tokens.php:288 msgid "Guest Access" msgstr "Acceso para invitados" -#: ../../Zotlabs/Lib/Apps.php:376 +#: ../../Zotlabs/Lib/Apps.php:374 msgid "OAuth Apps Manager" msgstr "Administrador de apps OAuth" -#: ../../Zotlabs/Lib/Apps.php:377 +#: ../../Zotlabs/Lib/Apps.php:375 msgid "OAuth2 Apps Manager" msgstr "Administrador de apps OAuth2" -#: ../../Zotlabs/Lib/Apps.php:378 +#: ../../Zotlabs/Lib/Apps.php:376 msgid "PDL Editor" msgstr "Editor PDL" -#: ../../Zotlabs/Lib/Apps.php:379 ../../Zotlabs/Module/Permcats.php:248 +#: ../../Zotlabs/Lib/Apps.php:377 ../../Zotlabs/Module/Permcats.php:248 msgid "Contact Roles" msgstr "Roles de contacto" -#: ../../Zotlabs/Lib/Apps.php:380 ../../Zotlabs/Widget/Notifications.php:154 -#: ../../Zotlabs/Module/Pubstream.php:100 +#: ../../Zotlabs/Lib/Apps.php:378 ../../Zotlabs/Widget/Notifications.php:154 +#: ../../Zotlabs/Module/Pubstream.php:108 msgid "Public Stream" msgstr "\"Stream\" público" -#: ../../Zotlabs/Lib/Apps.php:381 +#: ../../Zotlabs/Lib/Apps.php:379 msgid "My Chatrooms" msgstr "Mis salas de chat" -#: ../../Zotlabs/Lib/Apps.php:382 +#: ../../Zotlabs/Lib/Apps.php:380 msgid "Channel Export" msgstr "Exportar canal" -#: ../../Zotlabs/Lib/Apps.php:563 ../../Zotlabs/Module/Oauth.php:53 +#: ../../Zotlabs/Lib/Apps.php:561 ../../Zotlabs/Module/Oauth.php:53 #: ../../Zotlabs/Module/Oauth.php:135 ../../Zotlabs/Module/Connedit.php:748 #: ../../Zotlabs/Module/Admin/Addons.php:460 #: ../../Zotlabs/Module/Cdav.php:1044 ../../Zotlabs/Module/Cdav.php:1384 @@ -7620,31 +7200,31 @@ msgstr "Exportar canal" msgid "Update" msgstr "Actualizar" -#: ../../Zotlabs/Lib/Apps.php:563 ../../Zotlabs/Module/Admin/Addons.php:429 +#: ../../Zotlabs/Lib/Apps.php:561 ../../Zotlabs/Module/Admin/Addons.php:429 msgid "Install" msgstr "Instalar" -#: ../../Zotlabs/Lib/Apps.php:593 ../../Zotlabs/Lib/Apps.php:615 +#: ../../Zotlabs/Lib/Apps.php:591 ../../Zotlabs/Lib/Apps.php:613 msgid "Purchase" msgstr "Comprar" -#: ../../Zotlabs/Lib/Apps.php:620 +#: ../../Zotlabs/Lib/Apps.php:618 msgid "Undelete" msgstr "Recuperar" -#: ../../Zotlabs/Lib/Apps.php:628 +#: ../../Zotlabs/Lib/Apps.php:626 msgid "Add to app-tray" msgstr "Añadir a la bandeja de aplicaciones" -#: ../../Zotlabs/Lib/Apps.php:629 +#: ../../Zotlabs/Lib/Apps.php:627 msgid "Remove from app-tray" msgstr "Quitar de la bandeja de aplicaciones" -#: ../../Zotlabs/Lib/Apps.php:630 +#: ../../Zotlabs/Lib/Apps.php:628 msgid "Pin to navbar" msgstr "Fijar en la barra de navegación" -#: ../../Zotlabs/Lib/Apps.php:631 +#: ../../Zotlabs/Lib/Apps.php:629 msgid "Unpin from navbar" msgstr "Quitar de la barra de navegación" @@ -7749,216 +7329,204 @@ msgstr "No puede conectarse consigo mismo." msgid "error saving data" msgstr "error guardando los datos" -#: ../../Zotlabs/Lib/ThreadItem.php:108 +#: ../../Zotlabs/Lib/ThreadItem.php:111 msgid "Restricted message" msgstr "Mensaje restringido" -#: ../../Zotlabs/Lib/ThreadItem.php:115 +#: ../../Zotlabs/Lib/ThreadItem.php:118 msgid "Direct message" msgstr "Mensaje directo" -#: ../../Zotlabs/Lib/ThreadItem.php:120 +#: ../../Zotlabs/Lib/ThreadItem.php:123 msgid "Public Policy" msgstr "Política pública" -#: ../../Zotlabs/Lib/ThreadItem.php:152 +#: ../../Zotlabs/Lib/ThreadItem.php:157 msgid "Privacy conflict. Discretion advised." msgstr "Conflicto de privacidad. Se aconseja discreción." -#: ../../Zotlabs/Lib/ThreadItem.php:183 ../../Zotlabs/Storage/Browser.php:372 +#: ../../Zotlabs/Lib/ThreadItem.php:188 ../../Zotlabs/Storage/Browser.php:372 msgid "Admin Delete" msgstr "Eliminar admin" -#: ../../Zotlabs/Lib/ThreadItem.php:186 ../../Zotlabs/Module/Filer.php:55 +#: ../../Zotlabs/Lib/ThreadItem.php:191 ../../Zotlabs/Module/Filer.php:55 msgid "Save to Folder" msgstr "Guardar en carpeta" -#: ../../Zotlabs/Lib/ThreadItem.php:206 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 msgid "I will attend" msgstr "Participaré" -#: ../../Zotlabs/Lib/ThreadItem.php:206 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 msgid "I will not attend" msgstr "No participaré" -#: ../../Zotlabs/Lib/ThreadItem.php:206 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 msgid "I might attend" msgstr "Quizá participe" -#: ../../Zotlabs/Lib/ThreadItem.php:229 ../../Zotlabs/Lib/ThreadItem.php:242 -#: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138 -msgid "View all" -msgstr "Ver todo" - -#: ../../Zotlabs/Lib/ThreadItem.php:310 ../../Zotlabs/Module/Photos.php:1074 +#: ../../Zotlabs/Lib/ThreadItem.php:333 ../../Zotlabs/Module/Photos.php:1074 msgid "I like this (toggle)" msgstr "Me gusta (cambiar)" -#: ../../Zotlabs/Lib/ThreadItem.php:311 ../../Zotlabs/Module/Photos.php:1075 +#: ../../Zotlabs/Lib/ThreadItem.php:334 ../../Zotlabs/Module/Photos.php:1075 msgid "I don't like this (toggle)" msgstr "No me gusta esto (cambiar)" -#: ../../Zotlabs/Lib/ThreadItem.php:312 +#: ../../Zotlabs/Lib/ThreadItem.php:335 msgid "Reply on this comment" msgstr "Responder a este comentario" -#: ../../Zotlabs/Lib/ThreadItem.php:312 +#: ../../Zotlabs/Lib/ThreadItem.php:335 msgid "reply" msgstr "responder" -#: ../../Zotlabs/Lib/ThreadItem.php:312 +#: ../../Zotlabs/Lib/ThreadItem.php:335 msgid "Reply to" msgstr "Responder a " -#: ../../Zotlabs/Lib/ThreadItem.php:324 ../../Zotlabs/Widget/Pinned.php:104 -msgid "Share This" -msgstr "Compartir esto" - -#: ../../Zotlabs/Lib/ThreadItem.php:324 ../../Zotlabs/Widget/Pinned.php:104 +#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../Zotlabs/Widget/Pinned.php:93 msgid "share" msgstr "compartir" -#: ../../Zotlabs/Lib/ThreadItem.php:335 +#: ../../Zotlabs/Lib/ThreadItem.php:345 +msgid "Repeat" +msgstr "Repetir" + +#: ../../Zotlabs/Lib/ThreadItem.php:345 +msgid "repeat" +msgstr "repetir" + +#: ../../Zotlabs/Lib/ThreadItem.php:356 msgid "Delivery Report" msgstr "Informe de transmisión" -#: ../../Zotlabs/Lib/ThreadItem.php:355 +#: ../../Zotlabs/Lib/ThreadItem.php:376 #, php-format -msgid "%d Comment" -msgid_plural "%d Comments" +msgid "%d comment" +msgid_plural "%d comments" msgstr[0] "%d comentario" msgstr[1] "%d comentarios" msgstr[2] "%d comentarios" -#: ../../Zotlabs/Lib/ThreadItem.php:356 +#: ../../Zotlabs/Lib/ThreadItem.php:377 #, php-format msgid "%d unseen" msgstr "%dno visto/a vistos/as" -#: ../../Zotlabs/Lib/ThreadItem.php:406 +#: ../../Zotlabs/Lib/ThreadItem.php:427 msgid "Forum" msgstr "Foro" -#: ../../Zotlabs/Lib/ThreadItem.php:413 +#: ../../Zotlabs/Lib/ThreadItem.php:434 msgid "to" msgstr "a" -#: ../../Zotlabs/Lib/ThreadItem.php:414 ../../Zotlabs/Widget/Messages.php:148 -#: ../../Zotlabs/Widget/Pinned.php:132 +#: ../../Zotlabs/Lib/ThreadItem.php:435 ../../Zotlabs/Widget/Messages.php:146 +#: ../../Zotlabs/Widget/Messages.php:149 ../../Zotlabs/Widget/Pinned.php:121 msgid "via" msgstr "mediante" -#: ../../Zotlabs/Lib/ThreadItem.php:415 +#: ../../Zotlabs/Lib/ThreadItem.php:436 msgid "Wall-to-Wall" msgstr "De página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../Zotlabs/Lib/ThreadItem.php:416 +#: ../../Zotlabs/Lib/ThreadItem.php:437 msgid "via Wall-To-Wall:" msgstr "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../Zotlabs/Lib/ThreadItem.php:444 +#: ../../Zotlabs/Lib/ThreadItem.php:465 msgid "Attend" msgstr "Participar o asistir" -#: ../../Zotlabs/Lib/ThreadItem.php:445 ../../Zotlabs/Widget/Pinned.php:146 +#: ../../Zotlabs/Lib/ThreadItem.php:466 ../../Zotlabs/Widget/Pinned.php:135 msgid "Attendance Options" msgstr "Opciones de participación o asistencia" -#: ../../Zotlabs/Lib/ThreadItem.php:447 ../../Zotlabs/Widget/Pinned.php:147 +#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../Zotlabs/Widget/Pinned.php:136 msgid "Voting Options" msgstr "Opciones de votación" -#: ../../Zotlabs/Lib/ThreadItem.php:462 +#: ../../Zotlabs/Lib/ThreadItem.php:483 msgid "Go to previous comment" msgstr "Ir al comentario anterior" -#: ../../Zotlabs/Lib/ThreadItem.php:471 ../../Zotlabs/Widget/Pinned.php:159 +#: ../../Zotlabs/Lib/ThreadItem.php:492 ../../Zotlabs/Widget/Pinned.php:148 msgid "Pinned post" msgstr "Entradas ancladas" -#: ../../Zotlabs/Lib/ThreadItem.php:475 +#: ../../Zotlabs/Lib/ThreadItem.php:496 msgid "Add to Calendar" msgstr "Añadir al calendario" -#: ../../Zotlabs/Lib/ThreadItem.php:483 -#: ../../Zotlabs/Module/Notifications.php:111 -msgid "Mark all seen" -msgstr "Marcar todo como visto" +#: ../../Zotlabs/Lib/ThreadItem.php:504 +msgid "Mark all comments seen" +msgstr "Marcar como leídos todos los comentarios" -#: ../../Zotlabs/Lib/ThreadItem.php:490 ../../Zotlabs/Module/Photos.php:1260 -msgctxt "noun" -msgid "Likes" -msgstr "Me gusta" - -#: ../../Zotlabs/Lib/ThreadItem.php:491 ../../Zotlabs/Module/Photos.php:1261 -msgctxt "noun" -msgid "Dislikes" -msgstr "No me gusta" - -#: ../../Zotlabs/Lib/ThreadItem.php:829 ../../Zotlabs/Module/Photos.php:1092 +#: ../../Zotlabs/Lib/ThreadItem.php:859 ../../Zotlabs/Module/Photos.php:1092 #: ../../Zotlabs/Module/Photos.php:1205 msgid "This is you" msgstr "Este es usted" -#: ../../Zotlabs/Lib/ThreadItem.php:838 +#: ../../Zotlabs/Lib/ThreadItem.php:868 msgid "Image" msgstr "Imagen" -#: ../../Zotlabs/Lib/ThreadItem.php:840 +#: ../../Zotlabs/Lib/ThreadItem.php:870 msgid "Insert Link" msgstr "Insertar enlace" -#: ../../Zotlabs/Lib/ThreadItem.php:841 +#: ../../Zotlabs/Lib/ThreadItem.php:871 msgid "Video" msgstr "Vídeo" -#: ../../Zotlabs/Lib/ThreadItem.php:850 +#: ../../Zotlabs/Lib/ThreadItem.php:880 msgid "Your full name (required)" msgstr "Su nombre completo (requerido)" -#: ../../Zotlabs/Lib/ThreadItem.php:851 +#: ../../Zotlabs/Lib/ThreadItem.php:881 msgid "Your email address (required)" msgstr "Su dirección de correo electrónico (requerido)" -#: ../../Zotlabs/Lib/ThreadItem.php:852 +#: ../../Zotlabs/Lib/ThreadItem.php:882 msgid "Your website URL (optional)" msgstr "La URL de su sitio web (opcional)" -#: ../../Zotlabs/Lib/Libzot.php:686 +#: ../../Zotlabs/Lib/Libzot.php:687 msgid "Unable to verify channel signature" msgstr "No ha sido posible de verificar la firma del canal" -#: ../../Zotlabs/Lib/Activity.php:2395 +#: ../../Zotlabs/Lib/Activity.php:2154 #, php-format msgid "Likes %1$s's %2$s" msgstr "Gusta de %2$sde %1$s" -#: ../../Zotlabs/Lib/Activity.php:2398 +#: ../../Zotlabs/Lib/Activity.php:2157 #, php-format msgid "Doesn't like %1$s's %2$s" msgstr "No le gusta %2$sde %1$s" -#: ../../Zotlabs/Lib/Activity.php:2404 +#: ../../Zotlabs/Lib/Activity.php:2163 #, php-format msgid "Will attend %s's event" msgstr "Asistirá al evento de %s" -#: ../../Zotlabs/Lib/Activity.php:2407 +#: ../../Zotlabs/Lib/Activity.php:2166 #, php-format msgid "Will not attend %s's event" msgstr "No asistirá al evento de %s" -#: ../../Zotlabs/Lib/Activity.php:2410 +#: ../../Zotlabs/Lib/Activity.php:2169 #, php-format msgid "May attend %s's event" msgstr "Puede asistir al evento de %s" -#: ../../Zotlabs/Lib/Activity.php:2413 +#: ../../Zotlabs/Lib/Activity.php:2172 #, php-format msgid "May not attend %s's event" msgstr "Puede no asistir al evento de %s" -#: ../../Zotlabs/Lib/Libsync.php:819 +#: ../../Zotlabs/Lib/Libsync.php:823 #, php-format msgid "Unable to verify site signature for %s" msgstr "No ha sido posible de verificar la firma del sitio para %s" @@ -8473,31 +8041,23 @@ msgstr "Editar álbum" #: ../../Zotlabs/Widget/Album.php:103 ../../Zotlabs/Widget/Portfolio.php:114 #: ../../Zotlabs/Widget/Cdav.php:152 ../../Zotlabs/Widget/Cdav.php:188 #: ../../Zotlabs/Storage/Browser.php:546 -#: ../../Zotlabs/Module/Cover_photo.php:423 +#: ../../Zotlabs/Module/Cover_photo.php:380 #: ../../Zotlabs/Module/Embedphotos.php:189 -#: ../../Zotlabs/Module/Profile_photo.php:547 +#: ../../Zotlabs/Module/Profile_photo.php:546 #: ../../Zotlabs/Module/Photos.php:681 msgid "Upload" msgstr "Subir" -#: ../../Zotlabs/Widget/Pinned.php:86 -msgid "I agree" -msgstr "Estoy de acuerdo" - -#: ../../Zotlabs/Widget/Pinned.php:86 -msgid "I disagree" -msgstr "No estoy de acuerdo" - -#: ../../Zotlabs/Widget/Pinned.php:86 -msgid "I abstain" -msgstr "Me abstengo" +#: ../../Zotlabs/Widget/Pinned.php:93 +msgid "Share This" +msgstr "Compartir esto" -#: ../../Zotlabs/Widget/Pinned.php:127 ../../Zotlabs/Widget/Pinned.php:128 +#: ../../Zotlabs/Widget/Pinned.php:116 ../../Zotlabs/Widget/Pinned.php:117 #, php-format msgid "View %s's profile - %s" msgstr "Ver el perfil de %s - %s" -#: ../../Zotlabs/Widget/Pinned.php:161 +#: ../../Zotlabs/Widget/Pinned.php:150 msgid "Don't show" msgstr "No mostrar" @@ -8666,25 +8226,25 @@ msgstr[1] "avisos" msgstr[2] "avisos" #: ../../Zotlabs/Widget/Affinity.php:36 -#: ../../Zotlabs/Module/Contactedit.php:295 +#: ../../Zotlabs/Module/Contactedit.php:281 #: ../../Zotlabs/Module/Connedit.php:579 msgid "Me" msgstr "Yo" #: ../../Zotlabs/Widget/Affinity.php:37 -#: ../../Zotlabs/Module/Contactedit.php:296 +#: ../../Zotlabs/Module/Contactedit.php:282 #: ../../Zotlabs/Module/Connedit.php:580 msgid "Family" msgstr "Familia" #: ../../Zotlabs/Widget/Affinity.php:39 -#: ../../Zotlabs/Module/Contactedit.php:298 +#: ../../Zotlabs/Module/Contactedit.php:284 #: ../../Zotlabs/Module/Connedit.php:582 msgid "Acquaintances" msgstr "Conocidos/as" #: ../../Zotlabs/Widget/Affinity.php:40 -#: ../../Zotlabs/Module/Contactedit.php:299 +#: ../../Zotlabs/Module/Contactedit.php:285 #: ../../Zotlabs/Module/Connedit.php:583 #: ../../Zotlabs/Module/Connections.php:97 #: ../../Zotlabs/Module/Connections.php:111 @@ -8692,10 +8252,11 @@ msgid "All" msgstr "Todos/as" #: ../../Zotlabs/Widget/Affinity.php:60 +#: ../../Zotlabs/Module/Contactedit.php:618 msgid "Refresh" msgstr "Recargar" -#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Site.php:414 +#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Site.php:400 msgid "Site" msgstr "Sitio" @@ -8755,7 +8316,7 @@ msgid "Add new role" msgstr "Añadir nuevo rol" #: ../../Zotlabs/Widget/Permcats.php:92 -#: ../../Zotlabs/Module/Contactedit.php:409 +#: ../../Zotlabs/Module/Contactedit.php:395 msgid "Contact roles" msgstr "Roles del contacto" @@ -8912,7 +8473,7 @@ msgid "Add new group" msgstr "Añadir nuevo grupo" #: ../../Zotlabs/Widget/Privacygroups.php:54 -#: ../../Zotlabs/Module/Contactedit.php:443 +#: ../../Zotlabs/Module/Contactedit.php:429 msgid "Privacy groups" msgstr "Grupos de canales" @@ -9105,19 +8666,18 @@ msgstr "Sólo se reanuda si la sincronización se estanca." msgid "Public access denied." msgstr "Acceso público denegado." -#: ../../Zotlabs/Module/Display.php:45 ../../Zotlabs/Module/Hq.php:41 -#: ../../Zotlabs/Module/Oep.php:82 ../../Zotlabs/Module/Pubstream.php:46 -#: ../../Zotlabs/Module/Channel.php:161 ../../Zotlabs/Module/Channel.php:183 +#: ../../Zotlabs/Module/Display.php:52 ../../Zotlabs/Module/Oep.php:82 +#: ../../Zotlabs/Module/Pubstream.php:54 ../../Zotlabs/Module/Channel.php:194 msgid "Malformed message id." msgstr "ID de mensaje malformado." -#: ../../Zotlabs/Module/Display.php:87 ../../Zotlabs/Module/Network.php:213 -#: ../../Zotlabs/Module/Hq.php:104 ../../Zotlabs/Module/Pubstream.php:89 -#: ../../Zotlabs/Module/Channel.php:267 ../../Zotlabs/Module/Rpost.php:210 +#: ../../Zotlabs/Module/Display.php:94 ../../Zotlabs/Module/Network.php:213 +#: ../../Zotlabs/Module/Hq.php:108 ../../Zotlabs/Module/Pubstream.php:97 +#: ../../Zotlabs/Module/Channel.php:278 ../../Zotlabs/Module/Rpost.php:210 msgid "Reset form" msgstr "Reiniciar el formulario" -#: ../../Zotlabs/Module/Display.php:319 ../../Zotlabs/Module/Channel.php:494 +#: ../../Zotlabs/Module/Display.php:319 ../../Zotlabs/Module/Channel.php:500 msgid "" "You must enable javascript for your browser to be able to view this content." msgstr "Debe habilitar javascript para poder ver este contenido en su navegador." @@ -9135,71 +8695,71 @@ msgstr "Se ha eliminado el elemento." msgid "Image uploaded but image cropping failed." msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. " -#: ../../Zotlabs/Module/Cover_photo.php:196 -#: ../../Zotlabs/Module/Cover_photo.php:254 +#: ../../Zotlabs/Module/Cover_photo.php:194 +#: ../../Zotlabs/Module/Cover_photo.php:251 msgid "Cover Photos" msgstr "Imágenes de portada del perfil" -#: ../../Zotlabs/Module/Cover_photo.php:212 +#: ../../Zotlabs/Module/Cover_photo.php:210 #: ../../Zotlabs/Module/Profile_photo.php:184 msgid "Image resize failed." msgstr "El ajuste del tamaño de la imagen ha fallado." -#: ../../Zotlabs/Module/Cover_photo.php:265 -#: ../../Zotlabs/Module/Profile_photo.php:350 +#: ../../Zotlabs/Module/Cover_photo.php:262 +#: ../../Zotlabs/Module/Profile_photo.php:349 msgid "Image upload failed." msgstr "La carga de la imagen ha fallado." -#: ../../Zotlabs/Module/Cover_photo.php:282 -#: ../../Zotlabs/Module/Profile_photo.php:370 +#: ../../Zotlabs/Module/Cover_photo.php:279 +#: ../../Zotlabs/Module/Profile_photo.php:369 msgid "Unable to process image." msgstr "No ha sido posible procesar la imagen." -#: ../../Zotlabs/Module/Cover_photo.php:367 -#: ../../Zotlabs/Module/Cover_photo.php:382 -#: ../../Zotlabs/Module/Profile_photo.php:432 -#: ../../Zotlabs/Module/Profile_photo.php:497 +#: ../../Zotlabs/Module/Cover_photo.php:324 +#: ../../Zotlabs/Module/Cover_photo.php:339 +#: ../../Zotlabs/Module/Profile_photo.php:431 +#: ../../Zotlabs/Module/Profile_photo.php:496 msgid "Photo not available." msgstr "Foto no disponible." -#: ../../Zotlabs/Module/Cover_photo.php:418 +#: ../../Zotlabs/Module/Cover_photo.php:375 msgid "Your cover photo may be visible to anybody on the internet" msgstr "La foto de la portada puede ser visible para cualquiera en Internet" -#: ../../Zotlabs/Module/Cover_photo.php:420 +#: ../../Zotlabs/Module/Cover_photo.php:377 msgid "Upload File:" msgstr "Subir fichero:" -#: ../../Zotlabs/Module/Cover_photo.php:421 +#: ../../Zotlabs/Module/Cover_photo.php:378 msgid "Select a profile:" msgstr "Seleccionar un perfil:" -#: ../../Zotlabs/Module/Cover_photo.php:422 +#: ../../Zotlabs/Module/Cover_photo.php:379 msgid "Change Cover Photo" msgstr "Cambiar la foto de portada del perfil" -#: ../../Zotlabs/Module/Cover_photo.php:426 -#: ../../Zotlabs/Module/Cover_photo.php:427 +#: ../../Zotlabs/Module/Cover_photo.php:383 +#: ../../Zotlabs/Module/Cover_photo.php:384 +#: ../../Zotlabs/Module/Profile_photo.php:550 #: ../../Zotlabs/Module/Profile_photo.php:551 -#: ../../Zotlabs/Module/Profile_photo.php:552 msgid "Use a photo from your albums" msgstr "Usar una foto de sus álbumes" -#: ../../Zotlabs/Module/Cover_photo.php:438 +#: ../../Zotlabs/Module/Cover_photo.php:395 msgid "Select existing photo" msgstr "Seleccionar una foto" -#: ../../Zotlabs/Module/Cover_photo.php:455 -#: ../../Zotlabs/Module/Profile_photo.php:581 +#: ../../Zotlabs/Module/Cover_photo.php:412 +#: ../../Zotlabs/Module/Profile_photo.php:580 msgid "Crop Image" msgstr "Recortar imagen" -#: ../../Zotlabs/Module/Cover_photo.php:456 -#: ../../Zotlabs/Module/Profile_photo.php:582 +#: ../../Zotlabs/Module/Cover_photo.php:413 +#: ../../Zotlabs/Module/Profile_photo.php:581 msgid "Please adjust the image cropping for optimum viewing." msgstr "Por favor ajuste el recorte de la imagen para una visión óptima." -#: ../../Zotlabs/Module/Cover_photo.php:458 +#: ../../Zotlabs/Module/Cover_photo.php:415 msgid "Done Editing" msgstr "Edición completada" @@ -9211,11 +8771,11 @@ msgstr "Enlace de la página" msgid "Edit Webpage" msgstr "Editar la página web" -#: ../../Zotlabs/Module/Sse_bs.php:623 +#: ../../Zotlabs/Module/Sse_bs.php:626 msgid "Private forum" msgstr "Foro privado" -#: ../../Zotlabs/Module/Sse_bs.php:623 +#: ../../Zotlabs/Module/Sse_bs.php:626 msgid "Public forum" msgstr "Foro público" @@ -9360,7 +8920,7 @@ msgstr "No se encuentra el grupo" msgid "No such channel" msgstr "No se encuentra el canal" -#: ../../Zotlabs/Module/Network.php:172 ../../Zotlabs/Module/Channel.php:234 +#: ../../Zotlabs/Module/Network.php:172 ../../Zotlabs/Module/Channel.php:245 msgid "Search Results For:" msgstr "Buscar resultados para:" @@ -9384,10 +8944,6 @@ msgstr "Administrar apps" msgid "Create Custom App" msgstr "Crear una app personalizada" -#: ../../Zotlabs/Module/Share.php:126 -msgid "Post repeated" -msgstr "Entrada repetida" - #: ../../Zotlabs/Module/Service_limits.php:23 msgid "No service class restrictions found." msgstr "No se han encontrado restricciones sobre esta clase de servicio." @@ -9564,6 +9120,10 @@ msgstr "No hay más notificaciones del sistema" msgid "System Notifications" msgstr "Notificaciones del sistema" +#: ../../Zotlabs/Module/Notifications.php:111 +msgid "Mark all seen" +msgstr "Marcar todo como visto" + #: ../../Zotlabs/Module/Z6trans.php:19 msgid "Update to Hubzilla 5.0 step 2" msgstr "Actualizar a Hubzilla 5.0. Paso 2" @@ -9580,60 +9140,56 @@ msgstr "php util/z6convert.php" msgid "from the terminal." msgstr "desde la terminal." -#: ../../Zotlabs/Module/Thing.php:122 +#: ../../Zotlabs/Module/Thing.php:139 msgid "Thing updated" msgstr "Elemento actualizado." -#: ../../Zotlabs/Module/Thing.php:174 +#: ../../Zotlabs/Module/Thing.php:191 msgid "Object store: failed" msgstr "Guardar objeto: ha fallado" -#: ../../Zotlabs/Module/Thing.php:178 +#: ../../Zotlabs/Module/Thing.php:195 msgid "Thing added" msgstr "Elemento añadido" -#: ../../Zotlabs/Module/Thing.php:204 +#: ../../Zotlabs/Module/Thing.php:210 #, php-format msgid "OBJ: %1$s %2$s %3$s" msgstr "OBJ: %1$s %2$s %3$s" -#: ../../Zotlabs/Module/Thing.php:267 -msgid "Show Thing" -msgstr "Mostrar elemento" - -#: ../../Zotlabs/Module/Thing.php:274 +#: ../../Zotlabs/Module/Thing.php:277 ../../Zotlabs/Module/Thing.php:301 msgid "item not found." msgstr "elemento no encontrado." -#: ../../Zotlabs/Module/Thing.php:307 +#: ../../Zotlabs/Module/Thing.php:336 msgid "Edit Thing" msgstr "Editar elemento" -#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:366 +#: ../../Zotlabs/Module/Thing.php:338 ../../Zotlabs/Module/Thing.php:394 msgid "Select a profile" msgstr "Seleccionar un perfil" -#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 +#: ../../Zotlabs/Module/Thing.php:342 ../../Zotlabs/Module/Thing.php:397 msgid "Post an activity" msgstr "Publicar una actividad" -#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 +#: ../../Zotlabs/Module/Thing.php:342 ../../Zotlabs/Module/Thing.php:397 msgid "Only sends to viewers of the applicable profile" msgstr "Sólo enviar a espectadores del perfil pertinente." -#: ../../Zotlabs/Module/Thing.php:315 ../../Zotlabs/Module/Thing.php:371 +#: ../../Zotlabs/Module/Thing.php:344 ../../Zotlabs/Module/Thing.php:399 msgid "Name of thing e.g. something" msgstr "Nombre del elemento, p. ej.:. \"algo\"" -#: ../../Zotlabs/Module/Thing.php:317 ../../Zotlabs/Module/Thing.php:372 +#: ../../Zotlabs/Module/Thing.php:346 ../../Zotlabs/Module/Thing.php:400 msgid "URL of thing (optional)" msgstr "Dirección del elemento (opcional)" -#: ../../Zotlabs/Module/Thing.php:319 ../../Zotlabs/Module/Thing.php:373 +#: ../../Zotlabs/Module/Thing.php:348 ../../Zotlabs/Module/Thing.php:401 msgid "URL for photo of thing (optional)" msgstr "Dirección para la foto o elemento (opcional)" -#: ../../Zotlabs/Module/Thing.php:364 +#: ../../Zotlabs/Module/Thing.php:392 msgid "Add Thing to your Profile" msgstr "Añadir alguna cosa a su perfil" @@ -9842,303 +9398,274 @@ msgstr "No se ha podido acceder al registro de contacto." msgid "Could not locate selected profile." msgstr "No se ha podido localizar el perfil seleccionado." -#: ../../Zotlabs/Module/Contactedit.php:192 +#: ../../Zotlabs/Module/Contactedit.php:180 #: ../../Zotlabs/Module/Connedit.php:215 msgid "is now connected to" msgstr "ahora está conectado/a" -#: ../../Zotlabs/Module/Contactedit.php:252 -#: ../../Zotlabs/Module/Contactedit.php:401 +#: ../../Zotlabs/Module/Contactedit.php:238 +#: ../../Zotlabs/Module/Contactedit.php:387 #: ../../Zotlabs/Module/Connedit.php:701 msgid "Contact Tools" msgstr "Gestión de contactos" -#: ../../Zotlabs/Module/Contactedit.php:329 +#: ../../Zotlabs/Module/Contactedit.php:315 #: ../../Zotlabs/Module/Connedit.php:622 msgid "Approve this contact" msgstr "Aprobar este contacto" -#: ../../Zotlabs/Module/Contactedit.php:329 +#: ../../Zotlabs/Module/Contactedit.php:315 #: ../../Zotlabs/Module/Connedit.php:622 msgid "Accept contact to allow communication" msgstr "Aceptar el contacto para permitir la comunicación" -#: ../../Zotlabs/Module/Contactedit.php:362 +#: ../../Zotlabs/Module/Contactedit.php:348 #: ../../Zotlabs/Module/Connedit.php:658 msgid "Please select a role for this contact!" msgstr "¡Por favor, seleccione un rol para este contacto!" -#: ../../Zotlabs/Module/Contactedit.php:382 +#: ../../Zotlabs/Module/Contactedit.php:368 #: ../../Zotlabs/Module/Connedit.php:678 msgid "This contact is unreachable from this location." msgstr "Este contacto es inaccesible desde esta ubicación." -#: ../../Zotlabs/Module/Contactedit.php:383 +#: ../../Zotlabs/Module/Contactedit.php:369 #: ../../Zotlabs/Module/Connedit.php:679 msgid "This contact may be unreachable from other channel locations." msgstr "Este contacto puede ser inaccesible desde otras ubicaciones del canal." -#: ../../Zotlabs/Module/Contactedit.php:385 +#: ../../Zotlabs/Module/Contactedit.php:371 #: ../../Zotlabs/Module/Connedit.php:681 msgid "Location independence is not supported by their network." msgstr "La independencia de ubicación no es compatible con su red." -#: ../../Zotlabs/Module/Contactedit.php:395 +#: ../../Zotlabs/Module/Contactedit.php:381 msgid "View profile" msgstr "Ver el perfil" -#: ../../Zotlabs/Module/Contactedit.php:397 +#: ../../Zotlabs/Module/Contactedit.php:383 #: ../../Zotlabs/Module/Connections.php:413 msgid "This is a group/forum channel" msgstr "Este es un canal de grupo/foro" -#: ../../Zotlabs/Module/Contactedit.php:408 +#: ../../Zotlabs/Module/Contactedit.php:394 msgid "Select a role for this contact" msgstr "Selecciones un rol para este contacto" -#: ../../Zotlabs/Module/Contactedit.php:420 +#: ../../Zotlabs/Module/Contactedit.php:406 #: ../../Zotlabs/Module/Connedit.php:703 msgid "Slide to adjust your degree of friendship" msgstr "Deslizar para ajustar el grado de amistad" -#: ../../Zotlabs/Module/Contactedit.php:422 +#: ../../Zotlabs/Module/Contactedit.php:408 #: ../../Zotlabs/Module/Connedit.php:705 msgid "Custom Filter" msgstr "Filtro personalizado" -#: ../../Zotlabs/Module/Contactedit.php:423 +#: ../../Zotlabs/Module/Contactedit.php:409 #: ../../Zotlabs/Module/Connedit.php:706 #: ../../Zotlabs/Module/Settings/Channel.php:286 msgid "Only import posts with this text" msgstr "Importar solo entradas que contengan este texto" -#: ../../Zotlabs/Module/Contactedit.php:423 -#: ../../Zotlabs/Module/Contactedit.php:424 +#: ../../Zotlabs/Module/Contactedit.php:409 +#: ../../Zotlabs/Module/Contactedit.php:410 #: ../../Zotlabs/Module/Connedit.php:706 ../../Zotlabs/Module/Connedit.php:707 -#: ../../Zotlabs/Module/Admin/Site.php:515 -#: ../../Zotlabs/Module/Admin/Site.php:516 +#: ../../Zotlabs/Module/Admin/Site.php:500 +#: ../../Zotlabs/Module/Admin/Site.php:501 msgid "" "words one per line or #tags or /patterns/ or lang=xx, leave blank to import " "all posts" msgstr "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo" -#: ../../Zotlabs/Module/Contactedit.php:424 +#: ../../Zotlabs/Module/Contactedit.php:410 #: ../../Zotlabs/Module/Connedit.php:707 #: ../../Zotlabs/Module/Settings/Channel.php:285 msgid "Do not import posts with this text" msgstr "No importar entradas que contengan este texto" -#: ../../Zotlabs/Module/Contactedit.php:429 +#: ../../Zotlabs/Module/Contactedit.php:415 #: ../../Zotlabs/Module/Connedit.php:714 msgid "Approve contact" msgstr "Aprobar contacto" -#: ../../Zotlabs/Module/Contactedit.php:431 +#: ../../Zotlabs/Module/Contactedit.php:417 #: ../../Zotlabs/Module/Connedit.php:717 msgid "Their" msgstr "Su" -#: ../../Zotlabs/Module/Contactedit.php:432 +#: ../../Zotlabs/Module/Contactedit.php:418 #: ../../Zotlabs/Module/Connedit.php:718 msgid "My" msgstr "Mi" -#: ../../Zotlabs/Module/Contactedit.php:440 +#: ../../Zotlabs/Module/Contactedit.php:426 msgid "Roles" msgstr "Roles" -#: ../../Zotlabs/Module/Contactedit.php:441 +#: ../../Zotlabs/Module/Contactedit.php:427 msgid "Compare permissions" msgstr "Comparar permisos" -#: ../../Zotlabs/Module/Contactedit.php:442 +#: ../../Zotlabs/Module/Contactedit.php:428 msgid "Permission" msgstr "Permiso " -#: ../../Zotlabs/Module/Contactedit.php:445 +#: ../../Zotlabs/Module/Contactedit.php:431 #: ../../Zotlabs/Module/Connedit.php:572 msgid "Affinity" msgstr "Afinidad" -#: ../../Zotlabs/Module/Contactedit.php:446 +#: ../../Zotlabs/Module/Contactedit.php:432 msgid "Content filter" msgstr "Filtro de contenidos" -#: ../../Zotlabs/Module/Contactedit.php:456 +#: ../../Zotlabs/Module/Contactedit.php:442 msgid "Contact updated" msgstr "Contacto actualizado" -#: ../../Zotlabs/Module/Contactedit.php:456 +#: ../../Zotlabs/Module/Contactedit.php:442 msgid "Contact update failed" msgstr "Fallo en la actualización del contacto" -#: ../../Zotlabs/Module/Contactedit.php:462 +#: ../../Zotlabs/Module/Contactedit.php:448 #: ../../Zotlabs/Module/Connections.php:357 msgid "Approve connection" msgstr "Aprobar esta conexión" -#: ../../Zotlabs/Module/Contactedit.php:508 -#: ../../Zotlabs/Module/Contactedit.php:518 -msgid "Refresh succeeded" -msgstr "Actualización con éxito" - -#: ../../Zotlabs/Module/Contactedit.php:511 -msgid "Refresh failed - channel is currently unavailable" -msgstr "Error de actualización: el canal no está disponible en este momento" - -#: ../../Zotlabs/Module/Contactedit.php:530 +#: ../../Zotlabs/Module/Contactedit.php:520 msgid "Block status updated" msgstr "Estado del bloqueo actualizado" -#: ../../Zotlabs/Module/Contactedit.php:534 +#: ../../Zotlabs/Module/Contactedit.php:524 msgid "Block failed" msgstr "Bloqueo fallido" -#: ../../Zotlabs/Module/Contactedit.php:545 +#: ../../Zotlabs/Module/Contactedit.php:535 msgid "Ignore status updated" msgstr "Estado de ignorar actualizado" -#: ../../Zotlabs/Module/Contactedit.php:549 +#: ../../Zotlabs/Module/Contactedit.php:539 msgid "Ignore failed" msgstr "Ignorar falló" -#: ../../Zotlabs/Module/Contactedit.php:560 +#: ../../Zotlabs/Module/Contactedit.php:550 msgid "Archive status updated" msgstr "Estado de archivar actualizado" -#: ../../Zotlabs/Module/Contactedit.php:564 +#: ../../Zotlabs/Module/Contactedit.php:554 msgid "Archive failed" msgstr "Archivar falló" -#: ../../Zotlabs/Module/Contactedit.php:575 +#: ../../Zotlabs/Module/Contactedit.php:565 msgid "Hide status updated" msgstr "Estado de ocultación actualizado" -#: ../../Zotlabs/Module/Contactedit.php:579 +#: ../../Zotlabs/Module/Contactedit.php:569 msgid "Hide failed" msgstr "Ocultar falló" -#: ../../Zotlabs/Module/Contactedit.php:614 +#: ../../Zotlabs/Module/Contactedit.php:604 msgid "Contact removed" msgstr "Contacto eliminado" -#: ../../Zotlabs/Module/Contactedit.php:618 +#: ../../Zotlabs/Module/Contactedit.php:608 msgid "Delete failed" msgstr "Eliminar falló" -#: ../../Zotlabs/Module/Contactedit.php:628 -#: ../../Zotlabs/Module/Connedit.php:487 -msgid "Refresh Permissions" -msgstr "Recargar los permisos" - -#: ../../Zotlabs/Module/Contactedit.php:629 -#: ../../Zotlabs/Module/Connedit.php:490 -msgid "Fetch updated permissions" -msgstr "Obtener los permisos actualizados" - -#: ../../Zotlabs/Module/Contactedit.php:633 -#: ../../Zotlabs/Module/Connedit.php:494 -msgid "Refresh Photo" -msgstr "Actualizar la foto" +#: ../../Zotlabs/Module/Contactedit.php:619 +msgid "Refetch contact info" +msgstr "Recuperar información de contacto" -#: ../../Zotlabs/Module/Contactedit.php:634 -#: ../../Zotlabs/Module/Connedit.php:497 -msgid "Fetch updated photo" -msgstr "Obtener una foto actualizada" - -#: ../../Zotlabs/Module/Contactedit.php:639 +#: ../../Zotlabs/Module/Contactedit.php:623 #: ../../Zotlabs/Module/Connedit.php:508 #: ../../Zotlabs/Module/Admin/Accounts.php:322 msgid "Unblock" msgstr "Desbloquear" -#: ../../Zotlabs/Module/Contactedit.php:639 +#: ../../Zotlabs/Module/Contactedit.php:623 #: ../../Zotlabs/Module/Connedit.php:508 #: ../../Zotlabs/Module/Admin/Accounts.php:321 msgid "Block" msgstr "Bloquear" -#: ../../Zotlabs/Module/Contactedit.php:641 +#: ../../Zotlabs/Module/Contactedit.php:625 #: ../../Zotlabs/Module/Connedit.php:511 msgid "Block (or Unblock) all communications with this connection" msgstr "Bloquear (o desbloquear) todas las comunicaciones con esta conexión" -#: ../../Zotlabs/Module/Contactedit.php:642 +#: ../../Zotlabs/Module/Contactedit.php:626 #: ../../Zotlabs/Module/Connedit.php:512 msgid "This connection is blocked!" msgstr "¡Esta conexión está bloqueada!" -#: ../../Zotlabs/Module/Contactedit.php:646 +#: ../../Zotlabs/Module/Contactedit.php:630 #: ../../Zotlabs/Module/Connedit.php:516 msgid "Unignore" msgstr "Dejar de ignorar" -#: ../../Zotlabs/Module/Contactedit.php:646 +#: ../../Zotlabs/Module/Contactedit.php:630 #: ../../Zotlabs/Module/Connedit.php:516 #: ../../Zotlabs/Module/Connections.php:360 msgid "Ignore" msgstr "Ignorar" -#: ../../Zotlabs/Module/Contactedit.php:648 +#: ../../Zotlabs/Module/Contactedit.php:632 #: ../../Zotlabs/Module/Connedit.php:519 msgid "Ignore (or Unignore) all inbound communications from this connection" msgstr "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión" -#: ../../Zotlabs/Module/Contactedit.php:649 +#: ../../Zotlabs/Module/Contactedit.php:633 #: ../../Zotlabs/Module/Connedit.php:520 msgid "This connection is ignored!" msgstr "¡Esta conexión es ignorada!" -#: ../../Zotlabs/Module/Contactedit.php:653 +#: ../../Zotlabs/Module/Contactedit.php:637 #: ../../Zotlabs/Module/Connedit.php:524 msgid "Unarchive" msgstr "Desarchivar" -#: ../../Zotlabs/Module/Contactedit.php:653 +#: ../../Zotlabs/Module/Contactedit.php:637 #: ../../Zotlabs/Module/Connedit.php:524 msgid "Archive" msgstr "Archivar" -#: ../../Zotlabs/Module/Contactedit.php:655 +#: ../../Zotlabs/Module/Contactedit.php:639 #: ../../Zotlabs/Module/Connedit.php:527 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" -#: ../../Zotlabs/Module/Contactedit.php:656 +#: ../../Zotlabs/Module/Contactedit.php:640 #: ../../Zotlabs/Module/Connedit.php:528 msgid "This connection is archived!" msgstr "¡Esta conexión esta archivada!" -#: ../../Zotlabs/Module/Contactedit.php:660 +#: ../../Zotlabs/Module/Contactedit.php:644 #: ../../Zotlabs/Module/Connedit.php:532 msgid "Unhide" msgstr "Mostrar" -#: ../../Zotlabs/Module/Contactedit.php:660 +#: ../../Zotlabs/Module/Contactedit.php:644 #: ../../Zotlabs/Module/Connedit.php:532 msgid "Hide" msgstr "Ocultar" -#: ../../Zotlabs/Module/Contactedit.php:662 +#: ../../Zotlabs/Module/Contactedit.php:646 #: ../../Zotlabs/Module/Connedit.php:535 msgid "Hide or Unhide this connection from your other connections" msgstr "Ocultar o mostrar esta conexión a sus otras conexiones" -#: ../../Zotlabs/Module/Contactedit.php:663 +#: ../../Zotlabs/Module/Contactedit.php:647 #: ../../Zotlabs/Module/Connedit.php:536 msgid "This connection is hidden!" msgstr "¡Esta conexión está oculta!" -#: ../../Zotlabs/Module/Contactedit.php:669 +#: ../../Zotlabs/Module/Contactedit.php:653 #: ../../Zotlabs/Module/Connedit.php:543 msgid "Delete this connection" msgstr "Eliminar esta conexión" -#: ../../Zotlabs/Module/Mood.php:153 -msgid "Set your current mood and tell your friends" -msgstr "Describir su estado de ánimo para comunicárselo a sus amigos" - #: ../../Zotlabs/Module/Search.php:250 #, php-format msgid "Items tagged with: %s" @@ -10270,7 +9797,7 @@ msgid "This will help to review your registration" msgstr "Esto ayudará a revisar su registro" #: ../../Zotlabs/Module/Register.php:520 -#: ../../Zotlabs/Module/Admin/Site.php:416 +#: ../../Zotlabs/Module/Admin/Site.php:402 msgid "Registration" msgstr "Registro" @@ -10306,47 +9833,47 @@ msgstr "Aplicación instalada." msgid "Malformed app." msgstr "Aplicación con errores" -#: ../../Zotlabs/Module/Appman.php:198 +#: ../../Zotlabs/Module/Appman.php:208 msgid "Embed code" msgstr "Código incorporado" -#: ../../Zotlabs/Module/Appman.php:203 +#: ../../Zotlabs/Module/Appman.php:213 msgid "Edit App" msgstr "Modificar la aplicación" -#: ../../Zotlabs/Module/Appman.php:203 +#: ../../Zotlabs/Module/Appman.php:213 msgid "Create App" msgstr "Crear una aplicación" -#: ../../Zotlabs/Module/Appman.php:208 +#: ../../Zotlabs/Module/Appman.php:218 msgid "Name of app" msgstr "Nombre de la aplicación" -#: ../../Zotlabs/Module/Appman.php:209 +#: ../../Zotlabs/Module/Appman.php:219 msgid "Location (URL) of app" msgstr "Dirección (URL) de la aplicación" -#: ../../Zotlabs/Module/Appman.php:211 +#: ../../Zotlabs/Module/Appman.php:221 msgid "Photo icon URL" msgstr "Dirección del icono" -#: ../../Zotlabs/Module/Appman.php:211 +#: ../../Zotlabs/Module/Appman.php:221 msgid "80 x 80 pixels - optional" msgstr "80 x 80 pixels - opcional" -#: ../../Zotlabs/Module/Appman.php:212 +#: ../../Zotlabs/Module/Appman.php:222 msgid "Categories (optional, comma separated list)" msgstr "Temas (opcional, lista separada por comas)" -#: ../../Zotlabs/Module/Appman.php:213 +#: ../../Zotlabs/Module/Appman.php:223 msgid "Version ID" msgstr "Versión" -#: ../../Zotlabs/Module/Appman.php:214 +#: ../../Zotlabs/Module/Appman.php:224 msgid "Price of app" msgstr "Precio de la aplicación" -#: ../../Zotlabs/Module/Appman.php:215 +#: ../../Zotlabs/Module/Appman.php:225 msgid "Location (URL) to purchase app" msgstr "Dirección (URL) donde adquirir la aplicación" @@ -10354,36 +9881,36 @@ msgstr "Dirección (URL) donde adquirir la aplicación" msgid "item" msgstr "elemento" -#: ../../Zotlabs/Module/Item.php:478 ../../Zotlabs/Module/Pin.php:36 +#: ../../Zotlabs/Module/Item.php:477 ../../Zotlabs/Module/Pin.php:36 msgid "Unable to locate original post." msgstr "No ha sido posible encontrar la entrada original." -#: ../../Zotlabs/Module/Item.php:764 +#: ../../Zotlabs/Module/Item.php:763 msgid "Empty post discarded." msgstr "La entrada vacía ha sido desechada." -#: ../../Zotlabs/Module/Item.php:1179 +#: ../../Zotlabs/Module/Item.php:1205 msgid "Duplicate post suppressed." msgstr "Se ha suprimido la entrada duplicada." -#: ../../Zotlabs/Module/Item.php:1329 +#: ../../Zotlabs/Module/Item.php:1343 msgid "System error. Post not saved." msgstr "Error del sistema. La entrada no se ha podido salvar." -#: ../../Zotlabs/Module/Item.php:1363 +#: ../../Zotlabs/Module/Item.php:1377 msgid "Your comment is awaiting approval." msgstr "Su comentario está pendiente de aprobación." -#: ../../Zotlabs/Module/Item.php:1500 +#: ../../Zotlabs/Module/Item.php:1514 msgid "Unable to obtain post information from database." msgstr "No ha sido posible obtener información de la entrada en la base de datos." -#: ../../Zotlabs/Module/Item.php:1507 +#: ../../Zotlabs/Module/Item.php:1521 #, php-format msgid "You have reached your limit of %1$.0f top level posts." msgstr "Ha alcanzado su límite de %1$.0f entradas en la página principal." -#: ../../Zotlabs/Module/Item.php:1514 +#: ../../Zotlabs/Module/Item.php:1528 #, php-format msgid "You have reached your limit of %1$.0f webpages." msgstr "Ha alcanzado su límite de %1$.0f páginas web." @@ -10431,6 +9958,22 @@ msgstr "La conexión ha sido eliminada." msgid "View %s's profile" msgstr "Ver el perfil de %s" +#: ../../Zotlabs/Module/Connedit.php:487 +msgid "Refresh Permissions" +msgstr "Recargar los permisos" + +#: ../../Zotlabs/Module/Connedit.php:490 +msgid "Fetch updated permissions" +msgstr "Obtener los permisos actualizados" + +#: ../../Zotlabs/Module/Connedit.php:494 +msgid "Refresh Photo" +msgstr "Actualizar la foto" + +#: ../../Zotlabs/Module/Connedit.php:497 +msgid "Fetch updated photo" +msgstr "Obtener una foto actualizada" + #: ../../Zotlabs/Module/Connedit.php:504 msgid "View recent posts and comments" msgstr "Ver publicaciones y comentarios recientes" @@ -10557,7 +10100,7 @@ msgstr "Sitio web" #: ../../Zotlabs/Module/Connedit.php:739 ../../Zotlabs/Module/Locs.php:122 #: ../../Zotlabs/Module/Admin/Channels.php:160 -#: ../../Zotlabs/Module/Profiles.php:472 ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Module/Profiles.php:468 ../../Zotlabs/Module/Cdav.php:1375 msgid "Address" msgstr "Dirección" @@ -10597,7 +10140,7 @@ msgstr "Provincia, región o estado" msgid "ZIP Code" msgstr "Código postal" -#: ../../Zotlabs/Module/Connedit.php:757 ../../Zotlabs/Module/Profiles.php:773 +#: ../../Zotlabs/Module/Connedit.php:757 ../../Zotlabs/Module/Profiles.php:769 #: ../../Zotlabs/Module/Cdav.php:1393 msgid "Country" msgstr "País" @@ -10643,7 +10186,7 @@ msgid "" "hours." msgstr "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo." -#: ../../Zotlabs/Module/Follow.php:92 +#: ../../Zotlabs/Module/Follow.php:75 msgid "Connection added." msgstr "Se ha incorporado una conexión." @@ -10739,35 +10282,35 @@ msgstr "De más antiguo a más nuevo" msgid "No entries (some entries may be hidden)." msgstr "Sin entradas (algunas entradas pueden estar ocultas)." -#: ../../Zotlabs/Module/Profile_photo.php:544 +#: ../../Zotlabs/Module/Profile_photo.php:543 msgid "" "This profile photo will be visible to anybody on the internet and may be " "distributed to other websites." msgstr "Esta foto de perfil será visible para cualquier persona en Internet y podrá ser distribuida a otros sitios web." -#: ../../Zotlabs/Module/Profile_photo.php:544 +#: ../../Zotlabs/Module/Profile_photo.php:543 msgid "" "This profile photo will be visible only to channels with permission to view " "this profile." msgstr "Esta foto de perfil sólo será visible para los canales con permiso para ver este perfil." -#: ../../Zotlabs/Module/Profile_photo.php:546 +#: ../../Zotlabs/Module/Profile_photo.php:545 msgid "Use Photo for Profile" msgstr "Usar la fotografía para el perfil" -#: ../../Zotlabs/Module/Profile_photo.php:546 +#: ../../Zotlabs/Module/Profile_photo.php:545 msgid "Change Profile Photo" msgstr "Cambiar la foto del perfil" -#: ../../Zotlabs/Module/Profile_photo.php:548 +#: ../../Zotlabs/Module/Profile_photo.php:547 msgid "Reset to default" msgstr "Restablecer los valores por defecto" -#: ../../Zotlabs/Module/Profile_photo.php:562 +#: ../../Zotlabs/Module/Profile_photo.php:561 msgid "Select existing" msgstr "Seleccione lo que hay" -#: ../../Zotlabs/Module/Profile_photo.php:584 +#: ../../Zotlabs/Module/Profile_photo.php:583 msgid "Done editing" msgstr "Edición completada" @@ -11136,7 +10679,7 @@ msgstr "Caducado/a" #: ../../Zotlabs/Module/Admin/Addons.php:443 #: ../../Zotlabs/Module/Admin/Channels.php:145 #: ../../Zotlabs/Module/Admin/Logs.php:82 -#: ../../Zotlabs/Module/Admin/Site.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:397 #: ../../Zotlabs/Module/Admin/Security.php:105 #: ../../Zotlabs/Module/Admin.php:140 msgid "Administration" @@ -11710,512 +11253,512 @@ msgstr "Errores" msgid "Site settings updated." msgstr "Ajustes del sitio actualizados." -#: ../../Zotlabs/Module/Admin/Site.php:256 +#: ../../Zotlabs/Module/Admin/Site.php:242 #: ../../Zotlabs/Module/Settings/Display.php:116 #, php-format msgid "%s - (Incompatible)" msgstr "%s - (Incompatible)" -#: ../../Zotlabs/Module/Admin/Site.php:263 +#: ../../Zotlabs/Module/Admin/Site.php:249 msgid "mobile" msgstr "móvil" -#: ../../Zotlabs/Module/Admin/Site.php:265 +#: ../../Zotlabs/Module/Admin/Site.php:251 msgid "experimental" msgstr "experimental" -#: ../../Zotlabs/Module/Admin/Site.php:267 +#: ../../Zotlabs/Module/Admin/Site.php:253 msgid "unsupported" msgstr "no soportado" -#: ../../Zotlabs/Module/Admin/Site.php:320 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "Yes - with approval" msgstr "Sí - con aprobación" -#: ../../Zotlabs/Module/Admin/Site.php:328 +#: ../../Zotlabs/Module/Admin/Site.php:314 msgid "My site is not a public server" msgstr "Mi sitio no es un servidor público" -#: ../../Zotlabs/Module/Admin/Site.php:329 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "My site has paid access only" msgstr "Mi sitio es un servicio de pago" -#: ../../Zotlabs/Module/Admin/Site.php:330 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "My site has free access only" msgstr "Mi sitio es un servicio gratuito" -#: ../../Zotlabs/Module/Admin/Site.php:331 +#: ../../Zotlabs/Module/Admin/Site.php:317 msgid "My site offers free accounts with optional paid upgrades" msgstr "Mi sitio ofrece cuentas gratuitas con opciones extra de pago" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../Zotlabs/Module/Admin/Site.php:335 msgid "Default permission role for new accounts" msgstr "Permisos de rol por defecto para las nuevas cuentas" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../Zotlabs/Module/Admin/Site.php:335 msgid "" "This role will be used for the first channel created after registration." msgstr "Este rol se utilizará para el primer canal creado después del registro." -#: ../../Zotlabs/Module/Admin/Site.php:356 ../../Zotlabs/Module/Invite.php:410 +#: ../../Zotlabs/Module/Admin/Site.php:342 ../../Zotlabs/Module/Invite.php:410 msgid "Minute(s)" msgstr "Minuto(s)" -#: ../../Zotlabs/Module/Admin/Site.php:357 ../../Zotlabs/Module/Invite.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:343 ../../Zotlabs/Module/Invite.php:411 msgid "Hour(s)" msgstr "Hora(s)" -#: ../../Zotlabs/Module/Admin/Site.php:358 ../../Zotlabs/Module/Invite.php:412 +#: ../../Zotlabs/Module/Admin/Site.php:344 ../../Zotlabs/Module/Invite.php:412 msgid "Day(s)" msgstr "Día(s)" -#: ../../Zotlabs/Module/Admin/Site.php:359 +#: ../../Zotlabs/Module/Admin/Site.php:345 msgid "Week(s)" msgstr "Semana(s)" -#: ../../Zotlabs/Module/Admin/Site.php:360 +#: ../../Zotlabs/Module/Admin/Site.php:346 msgid "Month(s)" msgstr "Mes(Meses)" -#: ../../Zotlabs/Module/Admin/Site.php:361 +#: ../../Zotlabs/Module/Admin/Site.php:347 msgid "Year(s)" msgstr "Año(s)" -#: ../../Zotlabs/Module/Admin/Site.php:369 +#: ../../Zotlabs/Module/Admin/Site.php:355 msgid "Register verification delay" msgstr "Retraso en la verificación del registro" -#: ../../Zotlabs/Module/Admin/Site.php:372 +#: ../../Zotlabs/Module/Admin/Site.php:358 msgid "Time to wait before a registration can be verified" msgstr "Tiempo de espera para verificar un registro " -#: ../../Zotlabs/Module/Admin/Site.php:375 -#: ../../Zotlabs/Module/Admin/Site.php:397 ../../Zotlabs/Module/Invite.php:421 +#: ../../Zotlabs/Module/Admin/Site.php:361 +#: ../../Zotlabs/Module/Admin/Site.php:383 ../../Zotlabs/Module/Invite.php:421 msgid "duration up from now" msgstr "duración a partir de ahora " -#: ../../Zotlabs/Module/Admin/Site.php:391 +#: ../../Zotlabs/Module/Admin/Site.php:377 msgid "Register verification expiration time" msgstr "Tiempo de caducidad de la verificación del registro " -#: ../../Zotlabs/Module/Admin/Site.php:394 +#: ../../Zotlabs/Module/Admin/Site.php:380 msgid "Time before an unverified registration will expire" msgstr "Tiempo antes de que caduque un registro no verificado " -#: ../../Zotlabs/Module/Admin/Site.php:417 +#: ../../Zotlabs/Module/Admin/Site.php:403 msgid "File upload" msgstr "Subir fichero" -#: ../../Zotlabs/Module/Admin/Site.php:418 +#: ../../Zotlabs/Module/Admin/Site.php:404 msgid "Policies" msgstr "Políticas" -#: ../../Zotlabs/Module/Admin/Site.php:425 +#: ../../Zotlabs/Module/Admin/Site.php:411 msgid "Banner/Logo" msgstr "Banner/Logo" -#: ../../Zotlabs/Module/Admin/Site.php:425 +#: ../../Zotlabs/Module/Admin/Site.php:411 msgid "Unfiltered HTML/CSS/JS is allowed" msgstr "Se permite HTML/CSS/JS sin filtrar" -#: ../../Zotlabs/Module/Admin/Site.php:426 +#: ../../Zotlabs/Module/Admin/Site.php:412 msgid "Administrator Information" msgstr "Información del Administrador" -#: ../../Zotlabs/Module/Admin/Site.php:426 +#: ../../Zotlabs/Module/Admin/Site.php:412 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" -#: ../../Zotlabs/Module/Admin/Site.php:427 +#: ../../Zotlabs/Module/Admin/Site.php:413 #: ../../Zotlabs/Module/Siteinfo.php:24 msgid "Site Information" msgstr "Información sobre el sitio" -#: ../../Zotlabs/Module/Admin/Site.php:427 +#: ../../Zotlabs/Module/Admin/Site.php:413 msgid "" "Publicly visible description of this site. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Descripción pública de este sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" -#: ../../Zotlabs/Module/Admin/Site.php:429 +#: ../../Zotlabs/Module/Admin/Site.php:414 msgid "System theme" msgstr "Tema gráfico del sistema" -#: ../../Zotlabs/Module/Admin/Site.php:429 +#: ../../Zotlabs/Module/Admin/Site.php:414 msgid "" "Default system theme - may be over-ridden by user profiles - <a href='#' " "id='cnftheme'>change theme settings</a>" msgstr "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>" -#: ../../Zotlabs/Module/Admin/Site.php:432 +#: ../../Zotlabs/Module/Admin/Site.php:417 msgid "Allow Feeds as Connections" msgstr "Permitir contenidos RSS como conexiones" -#: ../../Zotlabs/Module/Admin/Site.php:432 +#: ../../Zotlabs/Module/Admin/Site.php:417 msgid "(Heavy system resource usage)" msgstr "(Uso intenso de los recursos del sistema)" -#: ../../Zotlabs/Module/Admin/Site.php:433 +#: ../../Zotlabs/Module/Admin/Site.php:418 msgid "Maximum image size" msgstr "Tamaño máximo de la imagen" -#: ../../Zotlabs/Module/Admin/Site.php:433 +#: ../../Zotlabs/Module/Admin/Site.php:418 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites." -#: ../../Zotlabs/Module/Admin/Site.php:434 +#: ../../Zotlabs/Module/Admin/Site.php:419 msgid "Minimum age" msgstr "Edad mínima" -#: ../../Zotlabs/Module/Admin/Site.php:434 +#: ../../Zotlabs/Module/Admin/Site.php:419 msgid "Minimum age (in years) for who may register on this site." msgstr "Edad mínima (en años) para poder registrarse en este sitio." -#: ../../Zotlabs/Module/Admin/Site.php:435 +#: ../../Zotlabs/Module/Admin/Site.php:420 msgid "Which best describes the types of account offered by this hub?" msgstr "¿Cómo describiría el tipo de servicio ofrecido por este servidor?" -#: ../../Zotlabs/Module/Admin/Site.php:435 +#: ../../Zotlabs/Module/Admin/Site.php:420 msgid "This is displayed on the public server site list." msgstr "Esto se muestra en la lista de sitios de servidores públicos." -#: ../../Zotlabs/Module/Admin/Site.php:441 +#: ../../Zotlabs/Module/Admin/Site.php:426 msgid "Register text" msgstr "Texto del registro" -#: ../../Zotlabs/Module/Admin/Site.php:443 +#: ../../Zotlabs/Module/Admin/Site.php:428 msgid "This text will be displayed prominently at the registration page" msgstr "Este texto se mostrará de forma destacada en la página de registro " -#: ../../Zotlabs/Module/Admin/Site.php:447 +#: ../../Zotlabs/Module/Admin/Site.php:432 msgid "Does this site allow new member registration?" msgstr "¿Debe este sitio permitir el registro de nuevos miembros?" -#: ../../Zotlabs/Module/Admin/Site.php:454 +#: ../../Zotlabs/Module/Admin/Site.php:439 msgid "Configure the registration open days/hours" msgstr "Configurar los días/horas de apertura del registro" -#: ../../Zotlabs/Module/Admin/Site.php:456 +#: ../../Zotlabs/Module/Admin/Site.php:441 msgid "Empty or '-:-' value will keep registration open 24/7 (default)" msgstr "El valor vacío o \"-:-\" mantendrá el registro abierto 24/7 (por defecto)" -#: ../../Zotlabs/Module/Admin/Site.php:457 +#: ../../Zotlabs/Module/Admin/Site.php:442 msgid "" "Weekdays and hours must be separated by colon ':', From-To ranges with a " "dash `-` example: 1:800-1200" msgstr "Los días de la semana y las horas deben separarse con dos puntos ':', los rangos Desde-Hasta con un guión `-` ejemplo: 1:800-1200" -#: ../../Zotlabs/Module/Admin/Site.php:458 +#: ../../Zotlabs/Module/Admin/Site.php:443 msgid "" "Weekday:Hour pairs must be separated by space ' ' example: 1:900-1700 " "2:900-1700" msgstr "Los pares día de la semana:hora deben estar separados por un espacio ' ' ejemplo: 1:900-1700 2:900-1700" -#: ../../Zotlabs/Module/Admin/Site.php:459 +#: ../../Zotlabs/Module/Admin/Site.php:444 msgid "" "From-To ranges must be separated by comma ',' example: 1:800-1200,1300-1700 " "or 1-2,4-5:900-1700" msgstr "Los rangos desde-hasta deben estar separados por comas ',' ejemplo: 1:800-1200,1300-1700 o 1-2,4-5:900-1700" -#: ../../Zotlabs/Module/Admin/Site.php:460 +#: ../../Zotlabs/Module/Admin/Site.php:445 msgid "Advanced examples:" msgstr "Ejemplos avanzados: " -#: ../../Zotlabs/Module/Admin/Site.php:460 +#: ../../Zotlabs/Module/Admin/Site.php:445 #: ../../Zotlabs/Module/Settings/Channel.php:183 msgid "or" msgstr "o" -#: ../../Zotlabs/Module/Admin/Site.php:461 +#: ../../Zotlabs/Module/Admin/Site.php:446 msgid "Check your configuration" msgstr "Compruebe su configuración" -#: ../../Zotlabs/Module/Admin/Site.php:465 +#: ../../Zotlabs/Module/Admin/Site.php:450 msgid "Max account registrations per day" msgstr "Máximo de registros de cuentas por día " -#: ../../Zotlabs/Module/Admin/Site.php:467 +#: ../../Zotlabs/Module/Admin/Site.php:452 msgid "Unlimited if zero or no value - default 50" msgstr "Ilimitado si es cero o sin valor - por defecto 50" -#: ../../Zotlabs/Module/Admin/Site.php:471 +#: ../../Zotlabs/Module/Admin/Site.php:456 msgid "Max account registrations from same IP" msgstr "Máximo de registros de cuentas desde la misma IP" -#: ../../Zotlabs/Module/Admin/Site.php:473 +#: ../../Zotlabs/Module/Admin/Site.php:458 msgid "Unlimited if zero or no value - default 3" msgstr "Ilimitado si es cero o sin valor - por defecto 3" -#: ../../Zotlabs/Module/Admin/Site.php:479 +#: ../../Zotlabs/Module/Admin/Site.php:464 msgid "Auto channel create" msgstr "Creación automática de canales" -#: ../../Zotlabs/Module/Admin/Site.php:481 +#: ../../Zotlabs/Module/Admin/Site.php:466 msgid "" "If disabled the channel will be created in a separate step during the " "registration process" msgstr "Si se desactiva, el canal se creará en un paso separado durante el proceso de registro" -#: ../../Zotlabs/Module/Admin/Site.php:485 +#: ../../Zotlabs/Module/Admin/Site.php:470 msgid "Require invite code" msgstr "Solicitar código de invitación" -#: ../../Zotlabs/Module/Admin/Site.php:490 +#: ../../Zotlabs/Module/Admin/Site.php:475 msgid "Allow invite code" msgstr "Permitir código de invitación" -#: ../../Zotlabs/Module/Admin/Site.php:495 +#: ../../Zotlabs/Module/Admin/Site.php:480 msgid "Require email address" msgstr "Solicitar dirección de correo electrónico" -#: ../../Zotlabs/Module/Admin/Site.php:497 +#: ../../Zotlabs/Module/Admin/Site.php:482 msgid "The provided email address will be verified (recommended)" msgstr "La dirección de correo electrónico proporcionada será verificada (recomendado)" -#: ../../Zotlabs/Module/Admin/Site.php:501 +#: ../../Zotlabs/Module/Admin/Site.php:486 msgid "Abandon account after x days" msgstr "Abandonar la cuenta después de x días" -#: ../../Zotlabs/Module/Admin/Site.php:503 +#: ../../Zotlabs/Module/Admin/Site.php:488 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo." -#: ../../Zotlabs/Module/Admin/Site.php:508 +#: ../../Zotlabs/Module/Admin/Site.php:493 msgid "Site homepage to show visitors (default: login box)" msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)" -#: ../../Zotlabs/Module/Admin/Site.php:508 +#: ../../Zotlabs/Module/Admin/Site.php:493 msgid "" "example: 'pubstream' to show public stream, 'page/sys/home' to show a system" " webpage called 'home' or 'include:home.html' to include a file." msgstr "ejemplo: 'pubstream' para mostrar el stream público, 'page/sys/home' para mostrar una página web del sistema llamada 'home' o 'include:home.html' para incluir un archivo." -#: ../../Zotlabs/Module/Admin/Site.php:509 +#: ../../Zotlabs/Module/Admin/Site.php:494 msgid "Preserve site homepage URL" msgstr "Preservar la dirección de la página personal" -#: ../../Zotlabs/Module/Admin/Site.php:509 +#: ../../Zotlabs/Module/Admin/Site.php:494 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla." -#: ../../Zotlabs/Module/Admin/Site.php:510 +#: ../../Zotlabs/Module/Admin/Site.php:495 msgid "Allowed friend domains" msgstr "Dominios amigos permitidos" -#: ../../Zotlabs/Module/Admin/Site.php:510 +#: ../../Zotlabs/Module/Admin/Site.php:495 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio." -#: ../../Zotlabs/Module/Admin/Site.php:511 +#: ../../Zotlabs/Module/Admin/Site.php:496 msgid "Force publish" msgstr "Forzar la publicación" -#: ../../Zotlabs/Module/Admin/Site.php:511 +#: ../../Zotlabs/Module/Admin/Site.php:496 msgid "" "Check to force all profiles on this site to be listed in the site directory" msgstr "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio." -#: ../../Zotlabs/Module/Admin/Site.php:512 +#: ../../Zotlabs/Module/Admin/Site.php:497 msgid "Enable public stream" msgstr "Habilitar el \"stream\" público" -#: ../../Zotlabs/Module/Admin/Site.php:512 +#: ../../Zotlabs/Module/Admin/Site.php:497 msgid "Enable the public stream. Warning: this content is unmoderated" msgstr "Habilitar el \"stream\" público. Advertencia: este contenido no está moderado" -#: ../../Zotlabs/Module/Admin/Site.php:513 +#: ../../Zotlabs/Module/Admin/Site.php:498 msgid "Site only public stream" msgstr "Solo contenido público en este sitio" -#: ../../Zotlabs/Module/Admin/Site.php:513 +#: ../../Zotlabs/Module/Admin/Site.php:498 msgid "Restrict the public stream to content originating at this site" msgstr "Restringir el \"stream\" público a los contenidos originados en este sitio" -#: ../../Zotlabs/Module/Admin/Site.php:514 +#: ../../Zotlabs/Module/Admin/Site.php:499 msgid "Allow anybody on the internet to access the public streams" msgstr "Permitir que cualquiera en Internet pueda acceder a los \"streams\" públicos" -#: ../../Zotlabs/Module/Admin/Site.php:514 +#: ../../Zotlabs/Module/Admin/Site.php:499 msgid "Disable to require authentication before viewing" msgstr "Desactivar para requerir autenticación antes de ver" -#: ../../Zotlabs/Module/Admin/Site.php:515 +#: ../../Zotlabs/Module/Admin/Site.php:500 msgid "Only import Public stream posts with this text" msgstr "Importar solo entradas del stream púlbico con este texto " -#: ../../Zotlabs/Module/Admin/Site.php:516 +#: ../../Zotlabs/Module/Admin/Site.php:501 msgid "Do not import Public stream posts with this text" msgstr "No importar entradas del stream público con este texto " -#: ../../Zotlabs/Module/Admin/Site.php:519 +#: ../../Zotlabs/Module/Admin/Site.php:504 msgid "Login on Homepage" msgstr "Iniciar sesión en la página personal" -#: ../../Zotlabs/Module/Admin/Site.php:519 +#: ../../Zotlabs/Module/Admin/Site.php:504 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido." -#: ../../Zotlabs/Module/Admin/Site.php:520 +#: ../../Zotlabs/Module/Admin/Site.php:505 msgid "Enable context help" msgstr "Habilitar la ayuda contextual" -#: ../../Zotlabs/Module/Admin/Site.php:520 +#: ../../Zotlabs/Module/Admin/Site.php:505 msgid "" "Display contextual help for the current page when the help button is " "pressed." msgstr "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda." -#: ../../Zotlabs/Module/Admin/Site.php:522 +#: ../../Zotlabs/Module/Admin/Site.php:507 msgid "Reply-to email address for system generated email." msgstr "Dirección de respuesta para el correo electrónico generado por el sistema." -#: ../../Zotlabs/Module/Admin/Site.php:523 +#: ../../Zotlabs/Module/Admin/Site.php:508 msgid "Sender (From) email address for system generated email." msgstr "Dirección del remitente (From) para el correo electrónico generado por el sistema." -#: ../../Zotlabs/Module/Admin/Site.php:524 +#: ../../Zotlabs/Module/Admin/Site.php:509 msgid "Name of email sender for system generated email." msgstr "Nombre del remitente del correo electrónico generado por el sistema." -#: ../../Zotlabs/Module/Admin/Site.php:526 +#: ../../Zotlabs/Module/Admin/Site.php:511 msgid "Directory Server URL" msgstr "URL del servidor de directorio" -#: ../../Zotlabs/Module/Admin/Site.php:526 +#: ../../Zotlabs/Module/Admin/Site.php:511 msgid "Default directory server" msgstr "Servidor de directorio predeterminado" -#: ../../Zotlabs/Module/Admin/Site.php:528 +#: ../../Zotlabs/Module/Admin/Site.php:513 msgid "Enable SSE Notifications" msgstr "Habilitar notificaciones SSE" -#: ../../Zotlabs/Module/Admin/Site.php:528 +#: ../../Zotlabs/Module/Admin/Site.php:513 msgid "" "If disabled, traditional polling will be used. Warning: this setting might " "not be suited for shared hosting" msgstr "Si está desactivado, se usará el sistema de votación tradicional. Advertencia: esta configuración podría no ser adecuada para el alojamiento compartido" -#: ../../Zotlabs/Module/Admin/Site.php:530 +#: ../../Zotlabs/Module/Admin/Site.php:515 msgid "Proxy user" msgstr "Usuario del proxy" -#: ../../Zotlabs/Module/Admin/Site.php:531 +#: ../../Zotlabs/Module/Admin/Site.php:516 msgid "Proxy URL" msgstr "Dirección del proxy" -#: ../../Zotlabs/Module/Admin/Site.php:532 +#: ../../Zotlabs/Module/Admin/Site.php:517 msgid "Network timeout" msgstr "Tiempo de espera de la red" -#: ../../Zotlabs/Module/Admin/Site.php:532 +#: ../../Zotlabs/Module/Admin/Site.php:517 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)" -#: ../../Zotlabs/Module/Admin/Site.php:533 +#: ../../Zotlabs/Module/Admin/Site.php:518 msgid "Delivery interval" msgstr "Intervalo de entrega" -#: ../../Zotlabs/Module/Admin/Site.php:533 +#: ../../Zotlabs/Module/Admin/Site.php:518 msgid "" "Delay background delivery processes by this many seconds to reduce system " "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " "for large dedicated servers." msgstr "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados." -#: ../../Zotlabs/Module/Admin/Site.php:534 +#: ../../Zotlabs/Module/Admin/Site.php:519 msgid "Deliveries per process" msgstr "Intentos de envío por proceso" -#: ../../Zotlabs/Module/Admin/Site.php:534 +#: ../../Zotlabs/Module/Admin/Site.php:519 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust" " if necessary to tune system performance. Recommend: 1-5." msgstr "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5." -#: ../../Zotlabs/Module/Admin/Site.php:536 +#: ../../Zotlabs/Module/Admin/Site.php:521 msgid "Poll interval" msgstr "Intervalo máximo de tiempo entre dos mensajes sucesivos" -#: ../../Zotlabs/Module/Admin/Site.php:536 +#: ../../Zotlabs/Module/Admin/Site.php:521 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega." -#: ../../Zotlabs/Module/Admin/Site.php:537 +#: ../../Zotlabs/Module/Admin/Site.php:522 msgid "Path to ImageMagick convert program" msgstr "Ruta al programa de conversión de ImageMagick" -#: ../../Zotlabs/Module/Admin/Site.php:537 +#: ../../Zotlabs/Module/Admin/Site.php:522 msgid "" "If set, use this program to generate photo thumbnails for huge images ( > " "4000 pixels in either dimension), otherwise memory exhaustion may occur. " "Example: /usr/bin/convert" msgstr "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert" -#: ../../Zotlabs/Module/Admin/Site.php:538 +#: ../../Zotlabs/Module/Admin/Site.php:523 msgid "Maximum Load Average" msgstr "Carga media máxima" -#: ../../Zotlabs/Module/Admin/Site.php:538 +#: ../../Zotlabs/Module/Admin/Site.php:523 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50." -#: ../../Zotlabs/Module/Admin/Site.php:539 +#: ../../Zotlabs/Module/Admin/Site.php:524 msgid "Expiration period in days for imported (grid/network) content" msgstr "Caducidad del contenido importado de otros sitios (en días)" -#: ../../Zotlabs/Module/Admin/Site.php:539 +#: ../../Zotlabs/Module/Admin/Site.php:524 msgid "0 for no expiration of imported content" msgstr "0 para que no caduque el contenido importado" -#: ../../Zotlabs/Module/Admin/Site.php:540 +#: ../../Zotlabs/Module/Admin/Site.php:525 msgid "" "Do not expire any posts which have comments less than this many days ago" msgstr "No caduque ningún mensaje que tenga menos comentarios que este hace muchos días" -#: ../../Zotlabs/Module/Admin/Site.php:541 +#: ../../Zotlabs/Module/Admin/Site.php:526 msgid "" "Public servers: Optional landing (marketing) webpage for new registrants" msgstr "Servidores públicos: Página web de acogida (marketing) opcional para nuevos registros" -#: ../../Zotlabs/Module/Admin/Site.php:541 +#: ../../Zotlabs/Module/Admin/Site.php:526 #, php-format msgid "Create this page first. Default is %s/register" msgstr "Crear esta página primero. Por defecto es %s/register" -#: ../../Zotlabs/Module/Admin/Site.php:542 +#: ../../Zotlabs/Module/Admin/Site.php:527 msgid "Page to display after creating a new channel" msgstr "Página a mostrar después de la creación de un nuevo canal" -#: ../../Zotlabs/Module/Admin/Site.php:542 +#: ../../Zotlabs/Module/Admin/Site.php:527 msgid "Default: profiles" msgstr "Perfiles predeterminados" -#: ../../Zotlabs/Module/Admin/Site.php:543 +#: ../../Zotlabs/Module/Admin/Site.php:528 msgid "Optional: site location" msgstr "Opcional: ubicación del sitio" -#: ../../Zotlabs/Module/Admin/Site.php:543 +#: ../../Zotlabs/Module/Admin/Site.php:528 msgid "Region or country" msgstr "Región o país" -#: ../../Zotlabs/Module/Admin/Site.php:628 -#: ../../Zotlabs/Module/Admin/Site.php:629 +#: ../../Zotlabs/Module/Admin/Site.php:613 +#: ../../Zotlabs/Module/Admin/Site.php:614 msgid "Invalid 24h time value (hhmm/hmm)" msgstr "Valor de tiempo de 24h no válido (hhmm/hmm)" @@ -12410,75 +11953,55 @@ msgstr "Reenvío del email de verificación" msgid "Unable to resend email verification message." msgstr "No se puede reenviar el mensaje de verificación por correo electrónico." -#: ../../Zotlabs/Module/Dreport.php:38 +#: ../../Zotlabs/Module/Dreport.php:37 msgid "Invalid message" msgstr "Mensaje no válido" -#: ../../Zotlabs/Module/Dreport.php:68 +#: ../../Zotlabs/Module/Dreport.php:67 msgid "no results" msgstr "sin resultados" -#: ../../Zotlabs/Module/Dreport.php:82 +#: ../../Zotlabs/Module/Dreport.php:81 msgid "channel sync processed" msgstr "se ha realizado la sincronización del canal" -#: ../../Zotlabs/Module/Dreport.php:86 +#: ../../Zotlabs/Module/Dreport.php:85 msgid "queued" msgstr "encolado" -#: ../../Zotlabs/Module/Dreport.php:90 +#: ../../Zotlabs/Module/Dreport.php:89 msgid "posted" msgstr "enviado" -#: ../../Zotlabs/Module/Dreport.php:94 +#: ../../Zotlabs/Module/Dreport.php:93 msgid "accepted for delivery" msgstr "aceptado para el envío" -#: ../../Zotlabs/Module/Dreport.php:98 +#: ../../Zotlabs/Module/Dreport.php:97 msgid "updated" msgstr "actualizado" -#: ../../Zotlabs/Module/Dreport.php:102 +#: ../../Zotlabs/Module/Dreport.php:101 msgid "update ignored" msgstr "actualización ignorada" -#: ../../Zotlabs/Module/Dreport.php:105 +#: ../../Zotlabs/Module/Dreport.php:104 msgid "permission denied" msgstr "permiso denegado" -#: ../../Zotlabs/Module/Dreport.php:109 +#: ../../Zotlabs/Module/Dreport.php:108 msgid "recipient not found" msgstr "destinatario no encontrado" -#: ../../Zotlabs/Module/Dreport.php:129 +#: ../../Zotlabs/Module/Dreport.php:128 #, php-format msgid "Delivery report for %1$s" msgstr "Informe de entrega para %1$s" -#: ../../Zotlabs/Module/Dreport.php:134 +#: ../../Zotlabs/Module/Dreport.php:133 msgid "Redeliver" msgstr "Volver a enviar" -#: ../../Zotlabs/Module/Poke.php:182 -msgid "Poke somebody" -msgstr "Dar un toque a alguien" - -#: ../../Zotlabs/Module/Poke.php:186 -msgid "Poke or ping somebody" -msgstr "Dar un toque o hacer ping a alguien" - -#: ../../Zotlabs/Module/Poke.php:193 -msgid "Recipient" -msgstr "Destinatario" - -#: ../../Zotlabs/Module/Poke.php:194 -msgid "Choose action" -msgstr "Elegir una acción" - -#: ../../Zotlabs/Module/Poke.php:197 ../../Zotlabs/Module/Poke.php:198 -msgid "Make this post private" -msgstr "Convertir en privado este envío" - #: ../../Zotlabs/Module/Chatsvc.php:131 msgid "Away" msgstr "Ausente" @@ -12487,12 +12010,12 @@ msgstr "Ausente" msgid "Online" msgstr "Conectado/a" -#: ../../Zotlabs/Module/Subthread.php:128 +#: ../../Zotlabs/Module/Subthread.php:125 #, php-format msgid "%1$s is following %2$s's %3$s" msgstr "%1$s está siguiendo %3$s de %2$s" -#: ../../Zotlabs/Module/Subthread.php:130 +#: ../../Zotlabs/Module/Subthread.php:127 #, php-format msgid "%1$s stopped following %2$s's %3$s" msgstr "%1$s ha dejado de seguir %3$s de %2$s" @@ -12605,7 +12128,7 @@ msgstr "Registros pendientes" msgid "Registered channels" msgstr "Canales registrados" -#: ../../Zotlabs/Module/Admin.php:147 +#: ../../Zotlabs/Module/Admin.php:147 ../../Zotlabs/Module/Siteinfo.php:41 msgid "Active addons" msgstr "Addons acivos" @@ -12947,6 +12470,10 @@ msgstr "Página principal del proyecto" msgid "Developer homepage" msgstr "Página principal del desarrollador" +#: ../../Zotlabs/Module/Siteinfo.php:42 +msgid "Blocked sites" +msgstr "Sitios bloqueados" + #: ../../Zotlabs/Module/Attach.php:68 msgid "Item not available." msgstr "Elemento no disponible" @@ -13020,57 +12547,46 @@ msgid "" "href=\"%1$s\">%2$s</a> on any site containing your channel." msgstr "Esta exportación puede ser importada o restaurada visitando <a href=\"%1$s\">%2$s</a> cualquier sitio que contenga su canal." -#: ../../Zotlabs/Module/Like.php:112 +#: ../../Zotlabs/Module/Like.php:111 msgid "Like/Dislike" msgstr "Me gusta/No me gusta" -#: ../../Zotlabs/Module/Like.php:118 +#: ../../Zotlabs/Module/Like.php:117 msgid "This action is restricted to members." msgstr "Esta acción está restringida solo para miembros." -#: ../../Zotlabs/Module/Like.php:119 +#: ../../Zotlabs/Module/Like.php:118 msgid "" "Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a " "href=\"register\">register as a new $Projectname member</a> to continue." msgstr "Por favor, <a href=\"rmagic\">identifíquese con su $Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo $Projectname member</a> para continuar." -#: ../../Zotlabs/Module/Like.php:172 ../../Zotlabs/Module/Like.php:198 -#: ../../Zotlabs/Module/Like.php:236 +#: ../../Zotlabs/Module/Like.php:171 ../../Zotlabs/Module/Like.php:197 +#: ../../Zotlabs/Module/Like.php:230 msgid "Invalid request." msgstr "Solicitud incorrecta." -#: ../../Zotlabs/Module/Like.php:213 +#: ../../Zotlabs/Module/Like.php:212 msgid "thing" msgstr "elemento" -#: ../../Zotlabs/Module/Like.php:259 +#: ../../Zotlabs/Module/Like.php:253 msgid "Channel unavailable." msgstr "Canal no disponible." -#: ../../Zotlabs/Module/Like.php:295 +#: ../../Zotlabs/Module/Like.php:289 msgid "Previous action reversed." msgstr "Acción anterior revocada." -#: ../../Zotlabs/Module/Like.php:489 -#, php-format -msgid "%1$s agrees with %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s está de acuerdo" - -#: ../../Zotlabs/Module/Like.php:491 -#, php-format -msgid "%1$s doesn't agree with %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s no está de acuerdo" - -#: ../../Zotlabs/Module/Like.php:493 -#, php-format -msgid "%1$s abstains from a decision on %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s se abstiene" +#: ../../Zotlabs/Module/Like.php:453 +msgid "profile" +msgstr "perfil" -#: ../../Zotlabs/Module/Like.php:617 +#: ../../Zotlabs/Module/Like.php:610 msgid "Action completed." msgstr "Acción completada." -#: ../../Zotlabs/Module/Like.php:618 +#: ../../Zotlabs/Module/Like.php:611 msgid "Thank you." msgstr "Gracias." @@ -13394,6 +12910,10 @@ msgstr "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com" msgid "Flag as adult in album view" msgstr "Marcar como \"solo para adultos\" en el álbum" +#: ../../Zotlabs/Module/Photos.php:1125 ../../Zotlabs/Module/Photos.php:1137 +msgid "View all" +msgstr "Ver todo" + #: ../../Zotlabs/Module/Photos.php:1238 msgid "Photo Tools" msgstr "Gestión de las fotos" @@ -13406,21 +12926,31 @@ msgstr "En esta foto:" msgid "Map" msgstr "Mapa" +#: ../../Zotlabs/Module/Photos.php:1260 +msgctxt "noun" +msgid "Likes" +msgstr "Me gusta" + +#: ../../Zotlabs/Module/Photos.php:1261 +msgctxt "noun" +msgid "Dislikes" +msgstr "No me gusta" + #: ../../Zotlabs/Module/Ochannel.php:32 ../../Zotlabs/Module/Chat.php:29 msgid "You must be logged in to see this page." msgstr "Debe haber iniciado sesión para poder ver esta página." -#: ../../Zotlabs/Module/Hcard.php:37 ../../Zotlabs/Module/Channel.php:141 +#: ../../Zotlabs/Module/Hcard.php:37 ../../Zotlabs/Module/Channel.php:149 #: ../../Zotlabs/Module/Profile.php:62 msgid "Posts and comments" msgstr "Publicaciones y comentarios" -#: ../../Zotlabs/Module/Hcard.php:44 ../../Zotlabs/Module/Channel.php:148 +#: ../../Zotlabs/Module/Hcard.php:44 ../../Zotlabs/Module/Channel.php:156 #: ../../Zotlabs/Module/Profile.php:69 msgid "Only posts" msgstr "Solo publicaciones" -#: ../../Zotlabs/Module/Channel.php:219 +#: ../../Zotlabs/Module/Channel.php:230 msgid "Insufficient permissions. Request redirected to profile page." msgstr "Permisos insuficientes. Petición redirigida a la página del perfil." @@ -13508,260 +13038,260 @@ msgstr "Fuente eliminada" msgid "Unable to remove source." msgstr "No se puede eliminar la fuente." -#: ../../Zotlabs/Module/Profiles.php:26 ../../Zotlabs/Module/Profiles.php:214 -#: ../../Zotlabs/Module/Profiles.php:642 +#: ../../Zotlabs/Module/Profiles.php:22 ../../Zotlabs/Module/Profiles.php:210 +#: ../../Zotlabs/Module/Profiles.php:638 msgid "Profile not found." msgstr "Perfil no encontrado." -#: ../../Zotlabs/Module/Profiles.php:46 +#: ../../Zotlabs/Module/Profiles.php:42 msgid "Profile deleted." msgstr "Perfil eliminado." -#: ../../Zotlabs/Module/Profiles.php:70 ../../Zotlabs/Module/Profiles.php:107 +#: ../../Zotlabs/Module/Profiles.php:66 ../../Zotlabs/Module/Profiles.php:103 msgid "Profile-" msgstr "Perfil-" -#: ../../Zotlabs/Module/Profiles.php:92 ../../Zotlabs/Module/Profiles.php:129 +#: ../../Zotlabs/Module/Profiles.php:88 ../../Zotlabs/Module/Profiles.php:125 msgid "New profile created." msgstr "El nuevo perfil ha sido creado." -#: ../../Zotlabs/Module/Profiles.php:113 +#: ../../Zotlabs/Module/Profiles.php:109 msgid "Profile unavailable to clone." msgstr "Perfil no disponible para clonar." -#: ../../Zotlabs/Module/Profiles.php:148 +#: ../../Zotlabs/Module/Profiles.php:144 msgid "Profile unavailable to export." msgstr "Perfil no disponible para exportar." -#: ../../Zotlabs/Module/Profiles.php:224 +#: ../../Zotlabs/Module/Profiles.php:220 msgid "Profile Name is required." msgstr "Se necesita el nombre del perfil." -#: ../../Zotlabs/Module/Profiles.php:429 +#: ../../Zotlabs/Module/Profiles.php:425 msgid "Marital Status" msgstr "Estado civil" -#: ../../Zotlabs/Module/Profiles.php:433 +#: ../../Zotlabs/Module/Profiles.php:429 msgid "Romantic Partner" msgstr "Pareja sentimental" -#: ../../Zotlabs/Module/Profiles.php:437 ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Profiles.php:433 ../../Zotlabs/Module/Profiles.php:784 msgid "Likes" msgstr "Me gusta" -#: ../../Zotlabs/Module/Profiles.php:441 ../../Zotlabs/Module/Profiles.php:789 +#: ../../Zotlabs/Module/Profiles.php:437 ../../Zotlabs/Module/Profiles.php:785 msgid "Dislikes" msgstr "No me gusta" -#: ../../Zotlabs/Module/Profiles.php:445 ../../Zotlabs/Module/Profiles.php:796 +#: ../../Zotlabs/Module/Profiles.php:441 ../../Zotlabs/Module/Profiles.php:792 msgid "Work/Employment" msgstr "Trabajo:" -#: ../../Zotlabs/Module/Profiles.php:448 +#: ../../Zotlabs/Module/Profiles.php:444 msgid "Religion" msgstr "Religión" -#: ../../Zotlabs/Module/Profiles.php:452 +#: ../../Zotlabs/Module/Profiles.php:448 msgid "Political Views" msgstr "Ideas políticas" -#: ../../Zotlabs/Module/Profiles.php:460 +#: ../../Zotlabs/Module/Profiles.php:456 msgid "Sexual Preference" msgstr "Preferencia sexual" -#: ../../Zotlabs/Module/Profiles.php:464 +#: ../../Zotlabs/Module/Profiles.php:460 msgid "Homepage" msgstr "Página personal" -#: ../../Zotlabs/Module/Profiles.php:468 +#: ../../Zotlabs/Module/Profiles.php:464 msgid "Interests" msgstr "Intereses" -#: ../../Zotlabs/Module/Profiles.php:576 +#: ../../Zotlabs/Module/Profiles.php:572 msgid "Profile updated." msgstr "Perfil actualizado." -#: ../../Zotlabs/Module/Profiles.php:672 +#: ../../Zotlabs/Module/Profiles.php:668 msgid "Hide my connections from viewers of this profile" msgstr "Ocultar mis conexiones a los espectadores de este perfil" -#: ../../Zotlabs/Module/Profiles.php:685 +#: ../../Zotlabs/Module/Profiles.php:681 msgid "Publish my default profile in the network directory" msgstr "Publicar mi perfil por defecto en el directorio de la red" -#: ../../Zotlabs/Module/Profiles.php:693 +#: ../../Zotlabs/Module/Profiles.php:689 msgid "Suggest me as a potential contact to new members" msgstr "Sugerirme como contacto potencial a los nuevos miembros" -#: ../../Zotlabs/Module/Profiles.php:697 +#: ../../Zotlabs/Module/Profiles.php:693 msgid "Reveal my online status" msgstr "Revelar mi estado en línea" -#: ../../Zotlabs/Module/Profiles.php:738 +#: ../../Zotlabs/Module/Profiles.php:734 msgid "Edit Profile Details" msgstr "Modificar los detalles de este perfil" -#: ../../Zotlabs/Module/Profiles.php:740 +#: ../../Zotlabs/Module/Profiles.php:736 msgid "View this profile" msgstr "Ver este perfil" -#: ../../Zotlabs/Module/Profiles.php:742 +#: ../../Zotlabs/Module/Profiles.php:738 msgid "Profile Tools" msgstr "Gestión del perfil" -#: ../../Zotlabs/Module/Profiles.php:743 +#: ../../Zotlabs/Module/Profiles.php:739 msgid "Change cover photo" msgstr "Cambiar la imagen de portada del perfil" -#: ../../Zotlabs/Module/Profiles.php:745 +#: ../../Zotlabs/Module/Profiles.php:741 msgid "Create a new profile using these settings" msgstr "Crear un nuevo perfil usando estos ajustes" -#: ../../Zotlabs/Module/Profiles.php:746 +#: ../../Zotlabs/Module/Profiles.php:742 msgid "Clone this profile" msgstr "Clonar este perfil" -#: ../../Zotlabs/Module/Profiles.php:747 +#: ../../Zotlabs/Module/Profiles.php:743 msgid "Delete this profile" msgstr "Eliminar este perfil" -#: ../../Zotlabs/Module/Profiles.php:748 +#: ../../Zotlabs/Module/Profiles.php:744 msgid "Add profile things" msgstr "Añadir cosas al perfil" -#: ../../Zotlabs/Module/Profiles.php:749 +#: ../../Zotlabs/Module/Profiles.php:745 msgid "Basic" msgstr "Básico" -#: ../../Zotlabs/Module/Profiles.php:751 +#: ../../Zotlabs/Module/Profiles.php:747 msgid "Relationship" msgstr "Relación" -#: ../../Zotlabs/Module/Profiles.php:754 +#: ../../Zotlabs/Module/Profiles.php:750 msgid "Import profile from file" msgstr "Importar perfil desde un fichero" -#: ../../Zotlabs/Module/Profiles.php:755 +#: ../../Zotlabs/Module/Profiles.php:751 msgid "Export profile to file" msgstr "Exportar perfil a un fichero" -#: ../../Zotlabs/Module/Profiles.php:756 +#: ../../Zotlabs/Module/Profiles.php:752 msgid "Your gender" msgstr "Género" -#: ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Profiles.php:753 msgid "Marital status" msgstr "Estado civil" -#: ../../Zotlabs/Module/Profiles.php:758 +#: ../../Zotlabs/Module/Profiles.php:754 msgid "Sexual preference" msgstr "Preferencia sexual" -#: ../../Zotlabs/Module/Profiles.php:761 +#: ../../Zotlabs/Module/Profiles.php:757 msgid "Profile name" msgstr "Nombre del perfil" -#: ../../Zotlabs/Module/Profiles.php:763 +#: ../../Zotlabs/Module/Profiles.php:759 msgid "This is your default profile." msgstr "Este es su perfil principal." -#: ../../Zotlabs/Module/Profiles.php:765 +#: ../../Zotlabs/Module/Profiles.php:761 msgid "Your full name" msgstr "Nombre completo" -#: ../../Zotlabs/Module/Profiles.php:766 +#: ../../Zotlabs/Module/Profiles.php:762 msgid "Short title/description" msgstr "Breve título y descripción" -#: ../../Zotlabs/Module/Profiles.php:766 +#: ../../Zotlabs/Module/Profiles.php:762 msgid "Maximal 190 characters" msgstr "Máximo de 190 caracteres" -#: ../../Zotlabs/Module/Profiles.php:769 +#: ../../Zotlabs/Module/Profiles.php:765 msgid "Street address" msgstr "Dirección" -#: ../../Zotlabs/Module/Profiles.php:770 +#: ../../Zotlabs/Module/Profiles.php:766 msgid "Locality/City" msgstr "Ciudad" -#: ../../Zotlabs/Module/Profiles.php:771 +#: ../../Zotlabs/Module/Profiles.php:767 msgid "Region/State" msgstr "Región o Estado" -#: ../../Zotlabs/Module/Profiles.php:772 +#: ../../Zotlabs/Module/Profiles.php:768 msgid "Postal/Zip code" msgstr "Código postal" -#: ../../Zotlabs/Module/Profiles.php:778 +#: ../../Zotlabs/Module/Profiles.php:774 msgid "Who (if applicable)" msgstr "Quién (si es pertinente)" -#: ../../Zotlabs/Module/Profiles.php:778 +#: ../../Zotlabs/Module/Profiles.php:774 msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "Por ejemplo: ana123, María González, sara@ejemplo.com" -#: ../../Zotlabs/Module/Profiles.php:779 +#: ../../Zotlabs/Module/Profiles.php:775 msgid "Since (date)" msgstr "Desde (fecha)" -#: ../../Zotlabs/Module/Profiles.php:782 +#: ../../Zotlabs/Module/Profiles.php:778 msgid "Tell us about yourself" msgstr "Háblenos de usted" -#: ../../Zotlabs/Module/Profiles.php:784 +#: ../../Zotlabs/Module/Profiles.php:780 msgid "Hometown" msgstr "Lugar de nacimiento" -#: ../../Zotlabs/Module/Profiles.php:785 +#: ../../Zotlabs/Module/Profiles.php:781 msgid "Political views" msgstr "Ideas políticas" -#: ../../Zotlabs/Module/Profiles.php:786 +#: ../../Zotlabs/Module/Profiles.php:782 msgid "Religious views" msgstr "Creencias religiosas" -#: ../../Zotlabs/Module/Profiles.php:787 +#: ../../Zotlabs/Module/Profiles.php:783 msgid "Keywords used in directory listings" msgstr "Palabras clave utilizadas en los listados de directorios" -#: ../../Zotlabs/Module/Profiles.php:787 +#: ../../Zotlabs/Module/Profiles.php:783 msgid "Example: fishing photography software" msgstr "Por ejemplo: software de fotografía submarina" -#: ../../Zotlabs/Module/Profiles.php:790 +#: ../../Zotlabs/Module/Profiles.php:786 msgid "Musical interests" msgstr "Preferencias musicales" -#: ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Profiles.php:787 msgid "Books, literature" msgstr "Libros, literatura" -#: ../../Zotlabs/Module/Profiles.php:792 +#: ../../Zotlabs/Module/Profiles.php:788 msgid "Television" msgstr "Televisión" -#: ../../Zotlabs/Module/Profiles.php:793 +#: ../../Zotlabs/Module/Profiles.php:789 msgid "Film/Dance/Culture/Entertainment" msgstr "Cine, danza, cultura, entretenimiento" -#: ../../Zotlabs/Module/Profiles.php:794 +#: ../../Zotlabs/Module/Profiles.php:790 msgid "Hobbies/Interests" msgstr "Aficiones o intereses" -#: ../../Zotlabs/Module/Profiles.php:795 +#: ../../Zotlabs/Module/Profiles.php:791 msgid "Love/Romance" msgstr "Vida sentimental o amorosa" -#: ../../Zotlabs/Module/Profiles.php:797 +#: ../../Zotlabs/Module/Profiles.php:793 msgid "School/Education" msgstr "Estudios" -#: ../../Zotlabs/Module/Profiles.php:798 +#: ../../Zotlabs/Module/Profiles.php:794 msgid "Contact information and social networks" msgstr "Información de contacto y redes sociales" -#: ../../Zotlabs/Module/Profiles.php:799 +#: ../../Zotlabs/Module/Profiles.php:795 msgid "My other channels" msgstr "Mis otros canales" @@ -14139,7 +13669,7 @@ msgid "" msgstr "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos." #: ../../Zotlabs/Module/Setup.php:207 ../../Zotlabs/Module/Setup.php:271 -#: ../../Zotlabs/Module/Setup.php:778 +#: ../../Zotlabs/Module/Setup.php:796 msgid "Please see the file \"install/INSTALL.txt\"." msgstr "Por favor, lea el fichero \"install/INSTALL.txt\"." @@ -14320,199 +13850,223 @@ msgstr "Si está en un servidor Windows, por favor, lea \"http://www.php.net/man msgid "Generate encryption keys" msgstr "Generar claves de cifrado" -#: ../../Zotlabs/Module/Setup.php:510 +#: ../../Zotlabs/Module/Setup.php:497 +msgid "Error: the sodium encryption library is not installed." +msgstr "Error: la biblioteca de encriptación sodium no está instalada." + +#: ../../Zotlabs/Module/Setup.php:499 +msgid "Generate ed25519 encryption keys" +msgstr "Generar claves de cifrado ed25519" + +#: ../../Zotlabs/Module/Setup.php:504 +msgid "Error: one of \"bcmath\" or \"gmp\" (bigmath library) extensions are required." +msgstr "Error: se requiere una de las extensiones \"bcmath\" o \"gmp\" (bigmath library)." + +#: ../../Zotlabs/Module/Setup.php:506 +msgid "Bigmath library (either bcmath or gmp)" +msgstr "Biblioteca Bigmath (bcmath o gmp)" + +#: ../../Zotlabs/Module/Setup.php:523 msgid "libCurl PHP module" msgstr "módulo libCurl PHP" -#: ../../Zotlabs/Module/Setup.php:511 +#: ../../Zotlabs/Module/Setup.php:524 msgid "GD graphics PHP module" msgstr "módulo PHP GD graphics" -#: ../../Zotlabs/Module/Setup.php:512 +#: ../../Zotlabs/Module/Setup.php:525 msgid "OpenSSL PHP module" msgstr "módulo PHP OpenSSL" -#: ../../Zotlabs/Module/Setup.php:513 +#: ../../Zotlabs/Module/Setup.php:526 msgid "PDO database PHP module" msgstr "Módulo PHP de la base de datos PDO " -#: ../../Zotlabs/Module/Setup.php:514 +#: ../../Zotlabs/Module/Setup.php:527 msgid "mb_string PHP module" msgstr "módulo PHP mb_string" -#: ../../Zotlabs/Module/Setup.php:515 +#: ../../Zotlabs/Module/Setup.php:528 msgid "xml PHP module" msgstr "módulo PHP xml" -#: ../../Zotlabs/Module/Setup.php:516 +#: ../../Zotlabs/Module/Setup.php:529 msgid "zip PHP module" msgstr "Módulo zip PHP" -#: ../../Zotlabs/Module/Setup.php:520 ../../Zotlabs/Module/Setup.php:522 +#: ../../Zotlabs/Module/Setup.php:530 +msgid "intl PHP module" +msgstr "módulo intl PHP" + +#: ../../Zotlabs/Module/Setup.php:534 ../../Zotlabs/Module/Setup.php:536 msgid "Apache mod_rewrite module" msgstr "módulo Apache mod_rewrite " -#: ../../Zotlabs/Module/Setup.php:520 +#: ../../Zotlabs/Module/Setup.php:534 msgid "" "Error: Apache webserver mod-rewrite module is required but not installed." msgstr "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:526 ../../Zotlabs/Module/Setup.php:529 +#: ../../Zotlabs/Module/Setup.php:540 ../../Zotlabs/Module/Setup.php:543 msgid "exec" msgstr "ejecutable" -#: ../../Zotlabs/Module/Setup.php:526 +#: ../../Zotlabs/Module/Setup.php:540 msgid "" "Error: exec is required but is either not installed or has been disabled in " "php.ini" msgstr "Error: se necesita un ejecutable pero o no se instaló o está deshabilitado en php.ini" -#: ../../Zotlabs/Module/Setup.php:532 ../../Zotlabs/Module/Setup.php:535 +#: ../../Zotlabs/Module/Setup.php:546 ../../Zotlabs/Module/Setup.php:549 msgid "shell_exec" msgstr "shell_exec" -#: ../../Zotlabs/Module/Setup.php:532 +#: ../../Zotlabs/Module/Setup.php:546 msgid "" "Error: shell_exec is required but is either not installed or has been " "disabled in php.ini" msgstr "Error: se necesita shell_exec pero o no se instaló o está deshabilitado en php.ini" -#: ../../Zotlabs/Module/Setup.php:540 +#: ../../Zotlabs/Module/Setup.php:554 msgid "Error: libCURL PHP module required but not installed." msgstr "Error: se necesita el módulo PHP libCURL pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:544 +#: ../../Zotlabs/Module/Setup.php:558 msgid "" "Error: GD PHP module with JPEG support or ImageMagick graphics library " "required but not installed." msgstr "Error: Se requiere el módulo GD PHP con soporte para JPEG o la biblioteca de gráficos ImageMagick, pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:548 +#: ../../Zotlabs/Module/Setup.php:562 msgid "Error: openssl PHP module required but not installed." msgstr "Error: el módulo PHP openssl es necesario, pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:554 +#: ../../Zotlabs/Module/Setup.php:568 msgid "" "Error: PDO database PHP module missing a driver for either mysql or pgsql." msgstr "Error: El módulo PHP de la base de datos PDO carece de un controlador para mysql o pgsql." -#: ../../Zotlabs/Module/Setup.php:559 +#: ../../Zotlabs/Module/Setup.php:573 msgid "Error: PDO database PHP module required but not installed." msgstr "Error: se necesita el módulo PHP de la base de datos PDO, pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:563 +#: ../../Zotlabs/Module/Setup.php:577 msgid "Error: mb_string PHP module required but not installed." msgstr "Error: el módulo PHP mb_string es necesario, pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:567 +#: ../../Zotlabs/Module/Setup.php:581 msgid "Error: xml PHP module required for DAV but not installed." msgstr "Error: el módulo PHP xml es necesario para DAV, pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:571 +#: ../../Zotlabs/Module/Setup.php:585 msgid "Error: zip PHP module required but not installed." msgstr "Error: se requiere el módulo zip PHP pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:590 ../../Zotlabs/Module/Setup.php:599 +#: ../../Zotlabs/Module/Setup.php:589 +msgid "Error: intl PHP module required but not installed." +msgstr "Error: el módulo intl PHP es necesario pero no está instalado." + +#: ../../Zotlabs/Module/Setup.php:608 ../../Zotlabs/Module/Setup.php:617 msgid ".htconfig.php is writable" msgstr ".htconfig.php tiene permisos de escritura" -#: ../../Zotlabs/Module/Setup.php:595 +#: ../../Zotlabs/Module/Setup.php:613 msgid "" "The web installer needs to be able to create a file called \".htconfig.php\"" " in the top folder of your web server and it is unable to do so." msgstr "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor." -#: ../../Zotlabs/Module/Setup.php:596 +#: ../../Zotlabs/Module/Setup.php:614 msgid "" "This is most often a permission setting, as the web server may not be able " "to write files in your folder - even if you can." msgstr "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos." -#: ../../Zotlabs/Module/Setup.php:597 +#: ../../Zotlabs/Module/Setup.php:615 msgid "Please see install/INSTALL.txt for additional information." msgstr "Por favor, consulte install/INSTALL.txt para más información." -#: ../../Zotlabs/Module/Setup.php:613 +#: ../../Zotlabs/Module/Setup.php:631 msgid "" "This software uses the Smarty3 template engine to render its web views. " "Smarty3 compiles templates to PHP to speed up rendering." msgstr "Este software hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 compila las plantillas a PHP para acelerar la renderización." -#: ../../Zotlabs/Module/Setup.php:614 +#: ../../Zotlabs/Module/Setup.php:632 #, php-format msgid "" "In order to store these compiled templates, the web server needs to have " "write access to the directory %s under the top level web folder." msgstr "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal." -#: ../../Zotlabs/Module/Setup.php:615 ../../Zotlabs/Module/Setup.php:636 +#: ../../Zotlabs/Module/Setup.php:633 ../../Zotlabs/Module/Setup.php:654 msgid "" "Please ensure that the user that your web server runs as (e.g. www-data) has" " write access to this folder." msgstr "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)." -#: ../../Zotlabs/Module/Setup.php:616 +#: ../../Zotlabs/Module/Setup.php:634 #, php-format msgid "" "Note: as a security measure, you should give the web server write access to " "%s only--not the template files (.tpl) that it contains." msgstr "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene." -#: ../../Zotlabs/Module/Setup.php:619 +#: ../../Zotlabs/Module/Setup.php:637 #, php-format msgid "%s is writable" msgstr "%s tiene permisos de escritura" -#: ../../Zotlabs/Module/Setup.php:635 +#: ../../Zotlabs/Module/Setup.php:653 msgid "" "This software uses the store directory to save uploaded files. The web " "server needs to have write access to the store directory under the top level" " web folder" msgstr "Este software utiliza el directorio de almacenamiento para guardar los ficheros subidos. El servidor web debe tener acceso de escritura a este directorio en la carpeta de nivel superior" -#: ../../Zotlabs/Module/Setup.php:639 +#: ../../Zotlabs/Module/Setup.php:657 msgid "store is writable" msgstr "\"store\" tiene permisos de escritura" -#: ../../Zotlabs/Module/Setup.php:671 +#: ../../Zotlabs/Module/Setup.php:689 msgid "" "SSL certificate cannot be validated. Fix certificate or disable https access" " to this site." msgstr "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio." -#: ../../Zotlabs/Module/Setup.php:672 +#: ../../Zotlabs/Module/Setup.php:690 msgid "" "If you have https access to your website or allow connections to TCP port " "443 (the https: port), you MUST use a browser-valid certificate. You MUST " "NOT use self-signed certificates!" msgstr "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo." -#: ../../Zotlabs/Module/Setup.php:673 +#: ../../Zotlabs/Module/Setup.php:691 msgid "" "This restriction is incorporated because public posts from you may for " "example contain references to images on your own hub." msgstr "Se ha incorporado esta restricción para evitar que sus entradas públicas hagan referencia a imágenes en su propio servidor." -#: ../../Zotlabs/Module/Setup.php:674 +#: ../../Zotlabs/Module/Setup.php:692 msgid "" "If your certificate is not recognized, members of other sites (who may " "themselves have valid certificates) will get a warning message on their own " "site complaining about security issues." msgstr "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web." -#: ../../Zotlabs/Module/Setup.php:675 +#: ../../Zotlabs/Module/Setup.php:693 msgid "" "This can cause usability issues elsewhere (not just on your own site) so we " "must insist on this requirement." msgstr "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos." -#: ../../Zotlabs/Module/Setup.php:676 +#: ../../Zotlabs/Module/Setup.php:694 msgid "" "Providers are available that issue free certificates which are browser-" "valid." msgstr "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos." -#: ../../Zotlabs/Module/Setup.php:677 +#: ../../Zotlabs/Module/Setup.php:695 msgid "" "If you are confident that the certificate is valid and signed by a trusted " "authority, check to see if you have failed to install an intermediate cert. " @@ -14520,32 +14074,32 @@ msgid "" "server communications." msgstr "Si se tiene la certeza de que el certificado es válido y está firmado por una autoridad de confianza, comprobar para ver si hubo un error al instalar un certificado intermedio. Estos no son normalmente requeridos por los navegadores, pero son necesarios para las comunicaciones de servidor a servidor." -#: ../../Zotlabs/Module/Setup.php:679 +#: ../../Zotlabs/Module/Setup.php:697 msgid "SSL certificate validation" msgstr "validación del certificado SSL" -#: ../../Zotlabs/Module/Setup.php:685 +#: ../../Zotlabs/Module/Setup.php:703 msgid "" "Url rewrite in .htaccess is not working. Check your server " "configuration.Test: " msgstr "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:" -#: ../../Zotlabs/Module/Setup.php:688 +#: ../../Zotlabs/Module/Setup.php:706 msgid "Url rewrite is working" msgstr "La reescritura de las direcciones funciona correctamente" -#: ../../Zotlabs/Module/Setup.php:701 +#: ../../Zotlabs/Module/Setup.php:719 msgid "" "The database configuration file \".htconfig.php\" could not be written. " "Please use the enclosed text to create a configuration file in your web " "server root." msgstr "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor." -#: ../../Zotlabs/Module/Setup.php:776 +#: ../../Zotlabs/Module/Setup.php:794 msgid "<h1>What next?</h1>" msgstr "<h1>¿Qué sigue?</h1>" -#: ../../Zotlabs/Module/Setup.php:777 +#: ../../Zotlabs/Module/Setup.php:795 msgid "" "IMPORTANT: You will need to [manually] setup a scheduled task for the " "poller." diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php index 5f449df83..d10e40ed0 100644 --- a/view/es-es/hstrings.php +++ b/view/es-es/hstrings.php @@ -1,9 +1,11 @@ <?php -if(! function_exists("string_plural_select_es_es")) { -function string_plural_select_es_es($n){ - return ($n != 1 ? 1 : 0); -}} +if(!function_exists("string_plural_select_es_es")) { + function string_plural_select_es_es($n) { + return ($n != 1 ? 1 : 0); + } +} + App::$rtl = 0; App::$strings["plural_function_code"] = "(n != 1 ? 1 : 0)"; App::$strings["Source channel not found."] = "No se ha encontrado el canal de origen."; @@ -14,6 +16,12 @@ App::$strings["Theme settings"] = "Ajustes del tema"; App::$strings["Dark style"] = "Estilo oscuro"; App::$strings["Light style"] = "Estilo claro"; App::$strings["Common settings"] = "Ajustes comunes"; +App::$strings["Primary theme color"] = "Color del tema principal"; +App::$strings["Current color, leave empty for default"] = "Color actual, dejar vacío por defecto"; +App::$strings["Success theme color"] = "Éxito en el color del tema"; +App::$strings["Info theme color"] = "Información del color del tema"; +App::$strings["Warning theme color"] = "Advertencia sobre el color del tema"; +App::$strings["Danger theme color"] = "Peligro en el color del tema"; App::$strings["Default to dark mode"] = "Modo oscuro por defecto"; App::$strings["No"] = "No"; App::$strings["Yes"] = "Sí"; @@ -22,21 +30,18 @@ App::$strings["Enable this option if you use a dark navbar color in light mode"] App::$strings["Narrow navbar"] = "Estrechar la barra de navegación"; App::$strings["Navigation bar background color"] = "Color de fondo de la barra de navegación"; App::$strings["Dark navigation bar background color"] = "Color de fondo oscuro de la barra de navegación"; -App::$strings["Link color"] = "Color del enlace"; -App::$strings["Dark link color"] = "Color oscuro del enlace"; -App::$strings["Link hover color"] = "Color de los enlaces al pasar por encima"; -App::$strings["Dark link hover color"] = "Color oscuro del enlace flotante"; App::$strings["Set the background color"] = "Ajustar el color de fondo"; App::$strings["Set the dark background color"] = "Establecer el color de fondo oscuro"; App::$strings["Set the background image"] = "Ajustar la imagen de fondo"; App::$strings["Set the dark background image"] = "Establecer la imagen de fondo oscuro"; App::$strings["Set font-size for the entire application"] = "Ajustar el tamaño de letra para toda la aplicación"; App::$strings["Examples: 1rem, 100%, 16px"] = "Ejemplos: 1rem, 100%, 16px"; -App::$strings["Set radius of corners"] = "Establecer el radio de curvatura de las esquinas"; -App::$strings["Example: 4px"] = "Ejemplo: 4px"; +App::$strings["Set radius of corners in rem"] = "Fijar el radio de las esquinas en rem"; +App::$strings["Leave empty for default radius"] = "Dejar vacío para el radio por defecto"; App::$strings["Set maximum width of content region in rem"] = "Ajustar la anchura máxima de la región de contenido, en rem"; App::$strings["Leave empty for default width"] = "Dejar en blanco para la anchura predeterminada"; App::$strings["Set size of conversation author photo"] = "Ajustar el tamaño de la foto del autor de la conversación"; +App::$strings["Leave empty for default size"] = "Dejar vacío para el tamaño por defecto"; App::$strings["Set size of followup author photos"] = "Ajustar el tamaño de foto de los seguidores del autor"; App::$strings["Show advanced settings"] = "Mostrar ajustes avanzados"; App::$strings["%1\$s's bookmarks"] = "Marcadores de %1\$s"; @@ -84,7 +89,7 @@ App::$strings["Visible to anybody on %s."] = "Visible para cualquiera en %s."; App::$strings["Visible to all connections."] = "Visible para todas las conexiones."; App::$strings["Visible to approved connections."] = "Visible para las conexiones permitidas."; App::$strings["Visible to specific connections."] = "Visible para conexiones específicas."; -App::$strings["🔁 Repeated %1\$s's %2\$s"] = "🔁 Repetidos %2\$sde %1\$s"; +App::$strings["🔁 Repeated %1\$s's %2\$s"] = "🔁 Repitió %2\$sde %1\$s"; App::$strings["Item not found."] = "Elemento no encontrado."; App::$strings["Permission denied."] = "Acceso denegado."; App::$strings["Privacy group not found."] = "Grupo de canales no encontrado."; @@ -92,15 +97,6 @@ App::$strings["Privacy group is empty."] = "El grupo de canales está vacío."; App::$strings["Privacy group: %s"] = "Grupo de canales: %s"; App::$strings["Connection: %s"] = "Conexión: %s"; App::$strings["Connection not found."] = "Conexión no encontrada"; -App::$strings["female"] = "mujer"; -App::$strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["male"] = "hombre"; -App::$strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["profile photo"] = "foto del perfil"; -App::$strings["[Edited %s]"] = "[se ha editado %s]"; -App::$strings["__ctx:edit_activity__ Post"] = "Publicar"; -App::$strings["__ctx:edit_activity__ Comment"] = "Comentar"; App::$strings["Off"] = "Desactivado"; App::$strings["On"] = "Activado"; App::$strings["Calendar"] = "Calendario"; @@ -264,10 +260,12 @@ App::$strings["It's complicated"] = "Es complicado"; App::$strings["Don't care"] = "No me importa"; App::$strings["Ask me"] = "Pregúnteme"; App::$strings[" and "] = " y "; +App::$strings[", "] = ", "; +App::$strings["Profile Photo"] = "Foto del perfil"; +App::$strings["Cover Photo"] = "Imagen de portada del perfil"; App::$strings["public profile"] = "el perfil público"; -App::$strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s ha cambiado %2\$s a “%3\$s”"; -App::$strings["Visit %1\$s's %2\$s"] = "Visitar %2\$s de %1\$s"; -App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha actualizado %2\$s, cambiando %3\$s."; +App::$strings["%1\$s %2\$s has been updated to %3\$s."] = "%1\$s%2\$sse ha actualizado a %3\$s."; +App::$strings["%1\$s updated the %2\$s. Changed %3\$s."] = "%1\$sactualizó el %2\$s. Ha cambiado %3\$s."; App::$strings["%d invitation available"] = array( 0 => "%d invitación pendiente", 1 => "%d invitaciones disponibles", @@ -469,22 +467,18 @@ App::$strings["channel"] = "el canal"; App::$strings["post"] = "la entrada"; App::$strings["comment"] = "el comentario"; App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s"; -App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; App::$strings["likes %1\$s's %2\$s"] = "gusta de %2\$s de %1\$s"; +App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; App::$strings["doesn't like %1\$s's %2\$s"] = "no gusta de %2\$s de %1\$s"; -App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora está conectado/a con %2\$s"; -App::$strings["%1\$s poked %2\$s"] = "%1\$s ha dado un toque a %2\$s"; -App::$strings["poked"] = "ha dado un toque a"; -App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s"; +App::$strings["%1\$s repeated %2\$s's %3\$s"] = "%1\$s repitió %3\$sde %2\$s"; +App::$strings["repeated %1\$s's %2\$s"] = "repitió %2\$s de %1\$s"; App::$strings["This is an unsaved preview"] = "Esta es una previsualización sin guardar"; App::$strings["__ctx:title__ Likes"] = "Me gusta"; App::$strings["__ctx:title__ Dislikes"] = "No me gusta"; -App::$strings["__ctx:title__ Agree"] = "De acuerdo"; -App::$strings["__ctx:title__ Disagree"] = "En desacuerdo"; -App::$strings["__ctx:title__ Abstain"] = "Abstención"; App::$strings["__ctx:title__ Attending"] = "Participaré"; App::$strings["__ctx:title__ Not attending"] = "No participaré"; App::$strings["__ctx:title__ Might attend"] = "Quizá participe"; +App::$strings["__ctx:title__ Repeats"] = "Repite"; App::$strings["Select"] = "Seleccionar"; App::$strings["Delete"] = "Eliminar"; App::$strings["Toggle Star Status"] = "Activar o desactivar el estado de entrada preferida"; @@ -511,7 +505,6 @@ App::$strings["View Profile"] = "Ver el perfil"; App::$strings["Recent Activity"] = "Actividad reciente"; App::$strings["Connect"] = "Conectar"; App::$strings["Edit Connection"] = "Editar conexión"; -App::$strings["Poke"] = "Toques y otras cosas"; App::$strings["Approve this item"] = "Aprobar este elemento"; App::$strings["Delete this item"] = "Borrar este elemento"; App::$strings["%s likes this."] = "A %s le gusta esto."; @@ -580,6 +573,11 @@ App::$strings["Other networks and post services"] = "Otras redes y servicios de App::$strings["Set expiration date"] = "Configurar fecha de caducidad"; App::$strings["Set publish date"] = "Establecer la fecha de publicación"; App::$strings["Encrypt text"] = "Cifrar texto"; +App::$strings["__ctx:noun__ Repeat"] = array( + 0 => "Se repite", + 1 => "Se repite", + 2 => "Repite", +); App::$strings["__ctx:noun__ Dislike"] = array( 0 => "No me gusta", 1 => "No me gusta", @@ -600,21 +598,6 @@ App::$strings["__ctx:noun__ Undecided"] = array( 1 => "Indecisos/as", 2 => "Indecisos/as", ); -App::$strings["__ctx:noun__ Agree"] = array( - 0 => "De acuerdo", - 1 => "De acuerdo", - 2 => "De acuerdo", -); -App::$strings["__ctx:noun__ Disagree"] = array( - 0 => "En desacuerdo", - 1 => "En desacuerdo", - 2 => "En desacuerdo", -); -App::$strings["__ctx:noun__ Abstain"] = array( - 0 => "se abstiene", - 1 => "Se abstienen", - 2 => "Se abstienen", -); App::$strings["Remote authentication"] = "Acceder desde su servidor"; App::$strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor de inicio"; App::$strings["Channels"] = "Canales"; @@ -764,30 +747,6 @@ App::$strings["Nothing"] = "Nada"; App::$strings["View all %s connections"] = "Ver todas las %s conexiones"; App::$strings["Network: %s"] = "Red %s"; App::$strings["Save"] = "Guardar"; -App::$strings["poke"] = "un toque"; -App::$strings["ping"] = "un \"ping\""; -App::$strings["pinged"] = "ha enviado un \"ping\" a"; -App::$strings["happy"] = "feliz "; -App::$strings["sad"] = "triste "; -App::$strings["mellow"] = "tranquilo/a"; -App::$strings["tired"] = "cansado/a "; -App::$strings["perky"] = "vivaz"; -App::$strings["angry"] = "enfadado/a"; -App::$strings["stupefied"] = "asombrado/a"; -App::$strings["puzzled"] = "perplejo/a"; -App::$strings["interested"] = "interesado/a"; -App::$strings["bitter"] = "amargado/a"; -App::$strings["cheerful"] = "alegre"; -App::$strings["alive"] = "animado/a"; -App::$strings["annoyed"] = "molesto/a"; -App::$strings["anxious"] = "ansioso/a"; -App::$strings["cranky"] = "de mal humor"; -App::$strings["disturbed"] = "perturbado/a"; -App::$strings["frustrated"] = "frustrado/a"; -App::$strings["depressed"] = "deprimido/a"; -App::$strings["motivated"] = "motivado/a"; -App::$strings["relaxed"] = "relajado/a"; -App::$strings["surprised"] = "sorprendido/a"; App::$strings["May"] = "mayo"; App::$strings["Unknown attachment"] = "Adjunto no reconocido"; App::$strings["Size"] = "Tamaño"; @@ -867,7 +826,6 @@ App::$strings["This channel has not added a profile description yet"] = "Este ca App::$strings["Change your profile photo"] = "Cambiar su foto del perfil"; App::$strings["Trans"] = "Trans"; App::$strings["Full Name:"] = "Nombre completo:"; -App::$strings["Like this channel"] = "Me gusta este canal"; App::$strings["j F, Y"] = "j F Y"; App::$strings["j F"] = "j F"; App::$strings["Birthday:"] = "Cumpleaños:"; @@ -925,6 +883,15 @@ App::$strings["IRC settings saved."] = "Se han guardado los ajustes de IRC."; App::$strings["IRC Chatroom"] = "Sala de chat IRC"; App::$strings["Hide the button and show the smilies directly."] = "Ocultar el botón y mostrar los smilies directamente."; App::$strings["Smileybutton Settings"] = "Ajustes de Smileybutton"; +App::$strings["ERROR: word length is not correct!"] = "ERROR: ¡la longitud de la palabra no es correcta!"; +App::$strings["Fediquest App"] = "Aplicación Fediquest"; +App::$strings["A distributed quest for a given word (game)."] = "Una búsqueda distribuida de una palabra determinada (juego)."; +App::$strings["To start a game, enter [fediquest]your_word[/fediquest] somewhere in a toplevel post."] = "Para empezar una partida, introduce [fediquest]tu_palabra[/fediquest] en algún lugar de un post de toplevel."; +App::$strings["Your contacts can post their guess in the comments."] = "Sus contactos pueden publicar sus conjeturas en los comentarios."; +App::$strings["Your channel will evaluate the guess and automatically post the response."] = "Su canal evaluará la conjetura y publicará automáticamente la respuesta."; +App::$strings["Correct letters"] = "Letras correctas"; +App::$strings["Letters contained in the word but at the wrong spot"] = "Letras contenidas en la palabra pero en el lugar equivocado"; +App::$strings["Letters not contained in the word"] = "Letras no contenidas en la palabra"; App::$strings["Network error"] = "Error de red"; App::$strings["API error"] = "Error de API"; App::$strings["Unknown issue"] = "Problema desconocido"; @@ -947,15 +914,6 @@ App::$strings["Show Upload Limits"] = "Mostrar los límites de subida"; App::$strings["Hubzilla configured maximum size: "] = "Tamaño máximo configurado por Hubzilla: "; App::$strings["PHP upload_max_filesize: "] = "PHP upload_max_filesize: "; App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (debe ser mayor que upload_max_filesize): "; -App::$strings["ERROR: word length is not correct!"] = "ERROR: ¡la longitud de la palabra no es correcta!"; -App::$strings["Fediwordle App"] = "App Fediwordle"; -App::$strings["A distributed word game inspired by wordle."] = "Un juego de palabras distribuido inspirado en el wordle."; -App::$strings["To start a game, enter [wordle]your_word[/wordle] somewhere in a toplevel post."] = "Para empezar una partida, introduzca [wordle]mi_palabra[/wordle] en algún lugar de un post de nivel superior."; -App::$strings["Your contacts can post their guess in the comments."] = "Sus contactos pueden publicar sus conjeturas en los comentarios."; -App::$strings["Your channel will evaluate the guess and automatically post the response."] = "Su canal evaluará la conjetura y publicará automáticamente la respuesta."; -App::$strings["Correct letters"] = "Letras correctas"; -App::$strings["Letters contained in the word but at the wrong spot"] = "Letras contenidas en la palabra pero en el lugar equivocado"; -App::$strings["Letters not contained in the word"] = "Letras no contenidas en la palabra"; App::$strings["Send your identity to all websites"] = "Enviar su identidad a todos los sitios web"; App::$strings["Send ZID"] = "Enviar ZID"; App::$strings["Send email to all members"] = "Enviar un correo electrónico a todos los miembros"; @@ -977,7 +935,6 @@ App::$strings["First Name"] = "Nombre"; App::$strings["Last Name"] = "Apellido"; App::$strings["Nickname"] = "Alias"; App::$strings["Full Name"] = "Nombre completo"; -App::$strings["Profile Photo"] = "Foto del perfil"; App::$strings["Profile Photo 16px"] = "Foto del perfil 16px"; App::$strings["Profile Photo 32px"] = "Foto del perfil 32px"; App::$strings["Profile Photo 48px"] = "Foto del perfil 48px"; @@ -1119,14 +1076,13 @@ App::$strings["Logfile size in bytes before rotating"] = "Tamaño del fichero de App::$strings["Number of logfiles to retain"] = "Número de ficheros de informe que se deben retener"; App::$strings["Your account on %s will expire in a few days."] = "Su cuenta en %s caducará en unos pocos días."; App::$strings["Your test account is about to expire."] = "Su cuenta de prueba está a punto de expirar."; -App::$strings["status"] = "el mensaje de estado "; App::$strings["ActivityPub Protocol Settings updated."] = "Se han actualizado los ajustes del protocolo ActivityPub."; App::$strings["The activitypub protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "El protocolo ActivityPub no soporta la independencia de ubicación. Las conexiones que realice dentro de esa red pueden no ser accesibles desde ubicaciones de canales alternativos."; -App::$strings["Deliver to ActivityPub recipients in privacy groups"] = "Entregar a los destinatarios de ActivityPub en grupos de canales"; -App::$strings["May result in a large number of mentions and expose all the members of your privacy group"] = "Puede resultar en un gran número de menciones y exponer a todos los miembros de su grupo de canales"; -App::$strings["Send multi-media HTML articles"] = "Enviar artículos multimedia en HTML"; -App::$strings["Not supported by some microblog services such as Mastodon"] = "No soportado por algunos servicios de microblog como Mastodon"; +App::$strings["Send activities of type note instead of article"] = "Enviar actividades de tipo nota en lugar de artículo"; +App::$strings["Microblog services such as Mastodon do not properly support articles"] = "Los servicios de microblog como Mastodon no soportan correctamente los artículos"; App::$strings["Activitypub Protocol"] = "Protocolo Activitypub"; +App::$strings["Refresh failed"] = "Error de actualización"; +App::$strings["Refresh succeeded"] = "Actualización con éxito"; App::$strings["Save Bookmarks"] = "Guardar en Marcadores"; App::$strings["Random Planet App"] = "App Random Planet"; App::$strings["Set a random planet from the Star Wars Empire as your location when posting"] = "Establecer un planeta aleatorio del Imperio de la Guerra de las Galaxias como su ubicación cuando publique."; @@ -1148,6 +1104,7 @@ App::$strings["No username found in import file."] = "No se ha encontrado el nom App::$strings["Import completed."] = "Importación completada."; App::$strings["\$projectname"] = "\$projectname"; App::$strings["%1\$s dislikes %2\$s's %3\$s"] = "a %1\$s no le gusta el %3\$s de %2\$s"; +App::$strings["status"] = "el mensaje de estado "; App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s participa"; App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no participa"; App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s quizá participe"; @@ -1447,28 +1404,6 @@ App::$strings["Maximum tweet length"] = "Longitud máxima del tweet"; App::$strings["Send public postings to Twitter by default"] = "Enviar mensajes públicos a Twitter de forma predeterminada"; App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada."; App::$strings["Twitter Crosspost Connector"] = "Twitter Crosspost Connector"; -App::$strings["lonely"] = "Solo/a"; -App::$strings["drunk"] = "ebrio/a"; -App::$strings["horny"] = "caliente"; -App::$strings["stoned"] = "drogado/a"; -App::$strings["fucked up"] = "jodido/a"; -App::$strings["clusterfucked"] = "hecho/a polvo"; -App::$strings["crazy"] = "loco/a"; -App::$strings["hurt"] = "ofendido/a"; -App::$strings["sleepy"] = "soñoliento/a"; -App::$strings["grumpy"] = "gruñón/ona"; -App::$strings["high"] = "superior"; -App::$strings["semi-conscious"] = "semiconsciente"; -App::$strings["in love"] = "enamorado/a"; -App::$strings["in lust"] = "lujurioso/a"; -App::$strings["naked"] = "desnudo/a"; -App::$strings["stinky"] = "apestoso/a"; -App::$strings["sweaty"] = "sudoroso/a"; -App::$strings["bleeding out"] = "exánime"; -App::$strings["victorious"] = "victorioso/a"; -App::$strings["defeated"] = "derrotado/a"; -App::$strings["envious"] = "envidioso/a"; -App::$strings["jealous"] = "celoso/a"; App::$strings["generic profile image"] = "imagen del perfil general"; App::$strings["random geometric pattern"] = "patrón geométrico aleatorio"; App::$strings["monster face"] = "cara de monstruo"; @@ -1518,44 +1453,6 @@ App::$strings["Workflow settings"] = "Ajustes del flujo de trabajo"; App::$strings["Some setting"] = "Algunos ajustes"; App::$strings["A setting"] = "Un ajuste"; App::$strings["Skeleton Settings"] = "Ajustes de Skeleton"; -App::$strings["bitchslap"] = "una bofetada humillante"; -App::$strings["bitchslapped"] = "ha abofeteado de forma humillante a"; -App::$strings["shag"] = "un polvo"; -App::$strings["shagged"] = "ha dejado exhausto/a a"; -App::$strings["patent"] = "una patente"; -App::$strings["patented"] = "ha patentado a"; -App::$strings["hug"] = "un abrazo"; -App::$strings["hugged"] = "ha abrazado a"; -App::$strings["murder"] = "un asesinato"; -App::$strings["murdered"] = "ha asesinado a"; -App::$strings["worship"] = "una alabanza"; -App::$strings["worshipped"] = "ha elogiado a"; -App::$strings["kiss"] = "un beso"; -App::$strings["kissed"] = "ha besado a"; -App::$strings["tempt"] = "una tentación"; -App::$strings["tempted"] = "ha tentado a"; -App::$strings["raise eyebrows at"] = "un levantamiento de cejas"; -App::$strings["raised their eyebrows at"] = "ha levantado las cejas a"; -App::$strings["insult"] = "un insulto"; -App::$strings["insulted"] = "ha insultado a"; -App::$strings["praise"] = "un elogio"; -App::$strings["praised"] = "ha elogiado a"; -App::$strings["be dubious of"] = "una indecisión"; -App::$strings["was dubious of"] = "estaba dudoso de"; -App::$strings["eat"] = "una comida"; -App::$strings["ate"] = "ha comido"; -App::$strings["giggle and fawn at"] = "una sonrisa aduladora"; -App::$strings["giggled and fawned at"] = "ha sonreído y adulado a"; -App::$strings["doubt"] = "una duda"; -App::$strings["doubted"] = "ha dudado de"; -App::$strings["glare"] = "una mirada furiosa"; -App::$strings["glared at"] = "ha mirado con furia"; -App::$strings["fuck"] = "una mierda"; -App::$strings["fucked"] = "ha mandado a la mierda a"; -App::$strings["bonk"] = "un golpe"; -App::$strings["bonked"] = "ha golpeado a"; -App::$strings["declare undying love for"] = "una declaración de amor eterno"; -App::$strings["declared undying love for"] = "ha declarado amor eterno a"; App::$strings["Allow magic authentication only to websites of your immediate connections"] = "Permitir la autenticación mágica sólo a los sitios web de sus conexiones próximas"; App::$strings["Authchoose"] = "Autoseleccionar"; App::$strings["No server specified"] = "No se ha especificado ningún servidor"; @@ -1634,6 +1531,7 @@ App::$strings["requested to like"] = "solicita que se permita mostrar agrado "; App::$strings["liked"] = "ha gustado de "; App::$strings["requested to dislike"] = "solicita que se permita mostrar desagrado "; App::$strings["disliked"] = "no ha gustado de "; +App::$strings["repeated"] = "repitió"; App::$strings["voted on"] = "votado en "; App::$strings["%1\$s %2\$s [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s%2\$s [zrl=%3\$s ]un %4\$s[/zrl]"; App::$strings["%1\$s %2\$s [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s %2\$s[zrl=%3\$s]%5\$s de %4\$s[/zrl]"; @@ -1673,9 +1571,6 @@ App::$strings["created a new poll"] = "se ha creado una nueva encuesta"; App::$strings["created a new post"] = "ha creado una nueva entrada"; App::$strings["voted on %s's poll"] = "votado en la encuesta de %s"; App::$strings["commented on %s's post"] = "ha comentado la entrada de %s"; -App::$strings["repeated %s's post"] = "repetida la entrada de %s"; -App::$strings["liked %s's post"] = "Le ha gustado la entrada de %s"; -App::$strings["disliked %s's post"] = "No le ha gustado la entrada de %s"; App::$strings["shared a file with you"] = "compartió un archivo con usted"; App::$strings["edited a post dated %s"] = "ha editado una entrada %s"; App::$strings["edited a comment dated %s"] = "ha editado un comentario %s"; @@ -1693,7 +1588,6 @@ App::$strings["Suggest Channels"] = "Sugerir canales"; App::$strings["Channel Manager"] = "Administración de canales"; App::$strings["Stream"] = "Stream"; App::$strings["Mail"] = "Correo"; -App::$strings["Mood"] = "Estado de ánimo"; App::$strings["Chat"] = "Chat"; App::$strings["Probe"] = "Probar"; App::$strings["Suggest"] = "Sugerir"; @@ -1753,16 +1647,16 @@ App::$strings["Save to Folder"] = "Guardar en carpeta"; App::$strings["I will attend"] = "Participaré"; App::$strings["I will not attend"] = "No participaré"; App::$strings["I might attend"] = "Quizá participe"; -App::$strings["View all"] = "Ver todo"; App::$strings["I like this (toggle)"] = "Me gusta (cambiar)"; App::$strings["I don't like this (toggle)"] = "No me gusta esto (cambiar)"; App::$strings["Reply on this comment"] = "Responder a este comentario"; App::$strings["reply"] = "responder"; App::$strings["Reply to"] = "Responder a "; -App::$strings["Share This"] = "Compartir esto"; App::$strings["share"] = "compartir"; +App::$strings["Repeat"] = "Repetir"; +App::$strings["repeat"] = "repetir"; App::$strings["Delivery Report"] = "Informe de transmisión"; -App::$strings["%d Comment"] = array( +App::$strings["%d comment"] = array( 0 => "%d comentario", 1 => "%d comentarios", 2 => "%d comentarios", @@ -1779,9 +1673,7 @@ App::$strings["Voting Options"] = "Opciones de votación"; App::$strings["Go to previous comment"] = "Ir al comentario anterior"; App::$strings["Pinned post"] = "Entradas ancladas"; App::$strings["Add to Calendar"] = "Añadir al calendario"; -App::$strings["Mark all seen"] = "Marcar todo como visto"; -App::$strings["__ctx:noun__ Likes"] = "Me gusta"; -App::$strings["__ctx:noun__ Dislikes"] = "No me gusta"; +App::$strings["Mark all comments seen"] = "Marcar como leídos todos los comentarios"; App::$strings["This is you"] = "Este es usted"; App::$strings["Image"] = "Imagen"; App::$strings["Insert Link"] = "Insertar enlace"; @@ -1919,9 +1811,7 @@ App::$strings["Channel activities"] = "Actividades del canal"; App::$strings["View Photo"] = "Ver foto"; App::$strings["Edit Album"] = "Editar álbum"; App::$strings["Upload"] = "Subir"; -App::$strings["I agree"] = "Estoy de acuerdo"; -App::$strings["I disagree"] = "No estoy de acuerdo"; -App::$strings["I abstain"] = "Me abstengo"; +App::$strings["Share This"] = "Compartir esto"; App::$strings["View %s's profile - %s"] = "Ver el perfil de %s - %s"; App::$strings["Don't show"] = "No mostrar"; App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Tiene %1$.0f de %2$.0f conexiones permitidas."; @@ -2131,7 +2021,6 @@ App::$strings["Privacy group: "] = "Grupo de canales: "; App::$strings["Installed Apps"] = "Apps instaladas"; App::$strings["Manage Apps"] = "Administrar apps"; App::$strings["Create Custom App"] = "Crear una app personalizada"; -App::$strings["Post repeated"] = "Entrada repetida"; App::$strings["No service class restrictions found."] = "No se han encontrado restricciones sobre esta clase de servicio."; App::$strings["No valid account found."] = "No se ha encontrado una cuenta válida."; App::$strings["Password reset request issued. Check your email."] = "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico."; @@ -2170,6 +2059,7 @@ App::$strings["This site is not a directory server"] = "Este sitio no es un serv App::$strings["New"] = "Nuevas"; App::$strings["No more system notifications."] = "No hay más notificaciones del sistema"; App::$strings["System Notifications"] = "Notificaciones del sistema"; +App::$strings["Mark all seen"] = "Marcar todo como visto"; App::$strings["Update to Hubzilla 5.0 step 2"] = "Actualizar a Hubzilla 5.0. Paso 2"; App::$strings["To complete the update please run"] = "Para completar la actualización, ejecutar "; App::$strings["php util/z6convert.php"] = "php util/z6convert.php"; @@ -2178,7 +2068,6 @@ App::$strings["Thing updated"] = "Elemento actualizado."; App::$strings["Object store: failed"] = "Guardar objeto: ha fallado"; App::$strings["Thing added"] = "Elemento añadido"; App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s"; -App::$strings["Show Thing"] = "Mostrar elemento"; App::$strings["item not found."] = "elemento no encontrado."; App::$strings["Edit Thing"] = "Editar elemento"; App::$strings["Select a profile"] = "Seleccionar un perfil"; @@ -2261,8 +2150,6 @@ App::$strings["Content filter"] = "Filtro de contenidos"; App::$strings["Contact updated"] = "Contacto actualizado"; App::$strings["Contact update failed"] = "Fallo en la actualización del contacto"; App::$strings["Approve connection"] = "Aprobar esta conexión"; -App::$strings["Refresh succeeded"] = "Actualización con éxito"; -App::$strings["Refresh failed - channel is currently unavailable"] = "Error de actualización: el canal no está disponible en este momento"; App::$strings["Block status updated"] = "Estado del bloqueo actualizado"; App::$strings["Block failed"] = "Bloqueo fallido"; App::$strings["Ignore status updated"] = "Estado de ignorar actualizado"; @@ -2273,10 +2160,7 @@ App::$strings["Hide status updated"] = "Estado de ocultación actualizado"; App::$strings["Hide failed"] = "Ocultar falló"; App::$strings["Contact removed"] = "Contacto eliminado"; App::$strings["Delete failed"] = "Eliminar falló"; -App::$strings["Refresh Permissions"] = "Recargar los permisos"; -App::$strings["Fetch updated permissions"] = "Obtener los permisos actualizados"; -App::$strings["Refresh Photo"] = "Actualizar la foto"; -App::$strings["Fetch updated photo"] = "Obtener una foto actualizada"; +App::$strings["Refetch contact info"] = "Recuperar información de contacto"; App::$strings["Unblock"] = "Desbloquear"; App::$strings["Block"] = "Bloquear"; App::$strings["Block (or Unblock) all communications with this connection"] = "Bloquear (o desbloquear) todas las comunicaciones con esta conexión"; @@ -2294,7 +2178,6 @@ App::$strings["Hide"] = "Ocultar"; App::$strings["Hide or Unhide this connection from your other connections"] = "Ocultar o mostrar esta conexión a sus otras conexiones"; App::$strings["This connection is hidden!"] = "¡Esta conexión está oculta!"; App::$strings["Delete this connection"] = "Eliminar esta conexión"; -App::$strings["Set your current mood and tell your friends"] = "Describir su estado de ánimo para comunicárselo a sus amigos"; App::$strings["Items tagged with: %s"] = "elementos etiquetados con: %s"; App::$strings["Search results for: %s"] = "Resultados de la búsqueda para: %s"; App::$strings["Email address required"] = "Dirección de correo electrónico requerida"; @@ -2364,6 +2247,10 @@ App::$strings["Refresh failed - channel is currently unavailable."] = "Recarga f App::$strings["Unable to set address book parameters."] = "No ha sido posible establecer los parámetros de la libreta de direcciones."; App::$strings["Connection has been removed."] = "La conexión ha sido eliminada."; App::$strings["View %s's profile"] = "Ver el perfil de %s"; +App::$strings["Refresh Permissions"] = "Recargar los permisos"; +App::$strings["Fetch updated permissions"] = "Obtener los permisos actualizados"; +App::$strings["Refresh Photo"] = "Actualizar la foto"; +App::$strings["Fetch updated photo"] = "Obtener una foto actualizada"; App::$strings["View recent posts and comments"] = "Ver publicaciones y comentarios recientes"; App::$strings["Fetch Vcard"] = "Obtener una vcard"; App::$strings["Fetch electronic calling card for this connection"] = "Obtener una tarjeta de llamada electrónica para esta conexión"; @@ -2840,11 +2727,6 @@ App::$strings["permission denied"] = "permiso denegado"; App::$strings["recipient not found"] = "destinatario no encontrado"; App::$strings["Delivery report for %1\$s"] = "Informe de entrega para %1\$s"; App::$strings["Redeliver"] = "Volver a enviar"; -App::$strings["Poke somebody"] = "Dar un toque a alguien"; -App::$strings["Poke or ping somebody"] = "Dar un toque o hacer ping a alguien"; -App::$strings["Recipient"] = "Destinatario"; -App::$strings["Choose action"] = "Elegir una acción"; -App::$strings["Make this post private"] = "Convertir en privado este envío"; App::$strings["Away"] = "Ausente"; App::$strings["Online"] = "Conectado/a"; App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo %3\$s de %2\$s"; @@ -2956,6 +2838,7 @@ App::$strings["Additional federated transport protocols:"] = "Protocolos adicion App::$strings["Version %s"] = "Versión %s"; App::$strings["Project homepage"] = "Página principal del proyecto"; App::$strings["Developer homepage"] = "Página principal del desarrollador"; +App::$strings["Blocked sites"] = "Sitios bloqueados"; App::$strings["Item not available."] = "Elemento no disponible"; App::$strings["No content available for year"] = "No hay contenido disponible para el año"; App::$strings["Export Channel"] = "Exportar el canal"; @@ -2979,9 +2862,7 @@ App::$strings["Invalid request."] = "Solicitud incorrecta."; App::$strings["thing"] = "elemento"; App::$strings["Channel unavailable."] = "Canal no disponible."; App::$strings["Previous action reversed."] = "Acción anterior revocada."; -App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s está de acuerdo"; -App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no está de acuerdo"; -App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s se abstiene"; +App::$strings["profile"] = "perfil"; App::$strings["Action completed."] = "Acción completada."; App::$strings["Thank you."] = "Gracias."; App::$strings["Block Name"] = "Nombre del bloque"; @@ -3061,9 +2942,12 @@ App::$strings["or select an existing one (doubleclick)"] = "o seleccionar un ál App::$strings["Add a Tag"] = "Añadir una etiqueta"; App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com"; App::$strings["Flag as adult in album view"] = "Marcar como \"solo para adultos\" en el álbum"; +App::$strings["View all"] = "Ver todo"; App::$strings["Photo Tools"] = "Gestión de las fotos"; App::$strings["In This Photo:"] = "En esta foto:"; App::$strings["Map"] = "Mapa"; +App::$strings["__ctx:noun__ Likes"] = "Me gusta"; +App::$strings["__ctx:noun__ Dislikes"] = "No me gusta"; App::$strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página."; App::$strings["Posts and comments"] = "Publicaciones y comentarios"; App::$strings["Only posts"] = "Solo publicaciones"; @@ -3280,6 +3164,10 @@ App::$strings["PHP upload limits"] = "Límites PHP de subida"; App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado."; App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"."; App::$strings["Generate encryption keys"] = "Generar claves de cifrado"; +App::$strings["Error: the sodium encryption library is not installed."] = "Error: la biblioteca de encriptación sodium no está instalada."; +App::$strings["Generate ed25519 encryption keys"] = "Generar claves de cifrado ed25519"; +App::$strings["Error: one of \"bcmath\" or \"gmp\" (bigmath library) extensions are required."] = "Error: se requiere una de las extensiones \"bcmath\" o \"gmp\" (bigmath library)."; +App::$strings["Bigmath library (either bcmath or gmp)"] = "Biblioteca Bigmath (bcmath o gmp)"; App::$strings["libCurl PHP module"] = "módulo libCurl PHP"; App::$strings["GD graphics PHP module"] = "módulo PHP GD graphics"; App::$strings["OpenSSL PHP module"] = "módulo PHP OpenSSL"; @@ -3287,6 +3175,7 @@ App::$strings["PDO database PHP module"] = "Módulo PHP de la base de datos PDO App::$strings["mb_string PHP module"] = "módulo PHP mb_string"; App::$strings["xml PHP module"] = "módulo PHP xml"; App::$strings["zip PHP module"] = "Módulo zip PHP"; +App::$strings["intl PHP module"] = "módulo intl PHP"; App::$strings["Apache mod_rewrite module"] = "módulo Apache mod_rewrite "; App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado."; App::$strings["exec"] = "ejecutable"; @@ -3301,6 +3190,7 @@ App::$strings["Error: PDO database PHP module required but not installed."] = "E App::$strings["Error: mb_string PHP module required but not installed."] = "Error: el módulo PHP mb_string es necesario, pero no está instalado."; App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: el módulo PHP xml es necesario para DAV, pero no está instalado."; App::$strings["Error: zip PHP module required but not installed."] = "Error: se requiere el módulo zip PHP pero no está instalado."; +App::$strings["Error: intl PHP module required but not installed."] = "Error: el módulo intl PHP es necesario pero no está instalado."; App::$strings[".htconfig.php is writable"] = ".htconfig.php tiene permisos de escritura"; App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor."; App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos."; diff --git a/view/js/main.js b/view/js/main.js index c9798dede..6fda3c8d0 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -1008,7 +1008,7 @@ function liveUpdate(notify_id) { in_progress = false; liveRecurse ++; if(liveRecurse < 10) { - liveUpdate(); + liveUpdate(notify_id); } else { console.log('Incomplete data. Too many attempts. Giving up.'); @@ -1305,7 +1305,8 @@ function dropItem(url, object, b64mid) { $(object + ', #pinned-wrapper-' + id).remove(); $('body').css('cursor', 'auto'); - $.jGrowl(aStr.itemdel, { sticky: false, theme: 'info', life: 3000 }); + toast(aStr.itemdel, 'info') + //$.jGrowl(aStr.itemdel, { sticky: false, theme: 'info', life: 3000 }); if (typeof b64mid !== typeof undefined) { $('[data-b64mid=\'' + b64mid + '\']').fadeOut(function() { @@ -1408,7 +1409,8 @@ function submitPoll(id) { $.post('vote/' + id, $('#question-form-' + id).serialize(), function(data) { - $.jGrowl(data.message, { sticky: false, theme: ((data.success) ? 'info' : 'notice'), life: 10000 }); + toast(data.message, ((data.success) ? 'info' : 'danger')); + //$.jGrowl(data.message, { sticky: false, theme: ((data.success) ? 'info' : 'notice'), life: 10000 }); if(timer) clearTimeout(timer); timer = setTimeout(updateInit, 500); } @@ -1815,3 +1817,26 @@ function toggleAside() { $('<div id="overlay"></div>').appendTo('body').one('click', function() { toggleAside(); }); } } + +function toast(string, severity) { + let id = btoa(string); + let container = document.getElementById('toast-container'); + let toast = document.getElementById(id); + + if (!toast) { + toast = document.createElement('div'); + toast.setAttribute('id', id); + toast.innerHTML = '<div class="d-flex"><div class="toast-body">' + string + '</div><button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button></div>'; + toast.classList.add('toast', 'p-2', 'bg-' + severity + '-subtle', 'text-' + severity + '-emphasis', 'border-' + severity); + } + + container.prepend(toast); + + let toastInstance = bootstrap.Toast.getOrCreateInstance(toast); + + if (severity === 'danger') { + toastInstance._config.autohide = false; + } + + toastInstance.show(); +} diff --git a/view/js/mod_cloud.js b/view/js/mod_cloud.js index e0f59beab..fc9219bff 100644 --- a/view/js/mod_cloud.js +++ b/view/js/mod_cloud.js @@ -73,7 +73,7 @@ $(document).ready(function () { close_and_deactivate_all_panels(); $('body').css('cursor', 'wait'); - $.jGrowl(aStr.download_info, { sticky: false, theme: 'info', life: 10000 }); + toast(aStr.download_info, 'info'); let data = [ {name: 'attach_path', value: window.location.pathname}, @@ -301,7 +301,7 @@ $(document).ready(function () { close_and_deactivate_all_panels(); $('body').css('cursor', 'wait'); - $.jGrowl(aStr.download_info, { sticky: false, theme: 'info', life: 10000 }); + toast(aStr.download_info, 'info'); post_data.push( {name: 'attach_path', value: window.location.pathname}, diff --git a/view/pdl/mod_admin.pdl b/view/pdl/mod_admin.pdl index 3c9633a69..f5e46baed 100644 --- a/view/pdl/mod_admin.pdl +++ b/view/pdl/mod_admin.pdl @@ -1,10 +1,7 @@ +[template]doubleleft[/template] [region=aside] [widget=admin][/widget] [/region] [region=content] $content [/region] -[region=right_aside] -[widget=notifications][/widget] -[widget=newmember][/widget] -[/region] diff --git a/view/php/doubleleft.php b/view/php/doubleleft.php index 2d1571bf8..97b1546dc 100644 --- a/view/php/doubleleft.php +++ b/view/php/doubleleft.php @@ -23,7 +23,7 @@ <main> <div class="content"> <div class="columns"> - <aside id="region_1"><div class="aside_spacer_top_left"></div><div class="aside_spacer_left"><div id="left_aside_wrapper" class="aside_wrapper"><?php if(x($page,'aside')) echo $page['aside']; ?></div></div></aside> + <aside id="region_1" class="d-none d-lg-block"><div class="aside_spacer_top_left"></div><div class="aside_spacer_left"><div id="left_aside_wrapper" class="aside_wrapper"><?php if(x($page,'aside')) echo $page['aside']; ?></div></div></aside> <section id="region_2"><?php if(x($page,'content')) echo $page['content']; ?> <div id="page-footer"></div> <div id="pause"></div> diff --git a/view/php/theme_init.php b/view/php/theme_init.php index 50da8b5f9..821e9b46e 100644 --- a/view/php/theme_init.php +++ b/view/php/theme_init.php @@ -3,7 +3,6 @@ require_once('include/plugin.php'); head_add_css('/library/tiptip/tipTip.css'); -head_add_css('/library/jgrowl/jquery.jgrowl.css'); head_add_css('/library/jRange/jquery.range.css'); head_add_css('/view/css/conversation.css'); @@ -23,7 +22,6 @@ head_add_js('autocomplete.js'); head_add_js('/library/jquery.timeago.js'); head_add_js('/library/readmore.js/readmore.js'); -head_add_js('/library/jgrowl/jquery.jgrowl.min.js'); head_add_js('/library/sjcl/sjcl.js'); head_add_js('/library/sodium-plus/dist/sodium-plus.min.js'); diff --git a/view/theme/redbasic/css/narrow_navbar.css b/view/theme/redbasic/css/narrow_navbar.css index 9f915418e..2b0ec9a05 100644 --- a/view/theme/redbasic/css/narrow_navbar.css +++ b/view/theme/redbasic/css/narrow_navbar.css @@ -4,9 +4,4 @@ --bs-navbar-padding-y: 1px; } - #jGrowl.top-right { - top: 3.5rem; - right: 15px; - } - } diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index 56194c735..2de40d671 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -168,6 +168,11 @@ input[type=text], textarea { color: #FF0000; } +#toast-container { + z-index: 1060; + width: 300px; +} + #powered-by { font-size: 0.5rem; position: absolute; @@ -708,26 +713,6 @@ nav .acpopup { color:#cc0000; } -/* popup notifications */ -div.jGrowl div.notice { - background: #511919 url("../../../../images/icons/48/notice.png") no-repeat 5px center; - color: #ffffff; - padding-left: 58px; -} -div.jGrowl div.info { - background: #364e59 url("../../../../images/icons/48/info.png") no-repeat 5px center; - color: #ffffff; - padding-left: 58px; -} -#jGrowl.top-right { - top: 4.5rem; - right: .25rem; -} - -div.jGrowl div.jGrowl-notification { - min-height: 60px; -} - .jslider .jslider-scale ins { color: #333; font-size: 1rem; @@ -796,7 +781,7 @@ div.jGrowl div.jGrowl-notification { .shared_header img { border-radius: var(--bs-border-radius); - margin-right: .75rem; + margin-right: .5rem; } .tag1 { @@ -910,25 +895,6 @@ a .drop-icons:hover { list-style-type: none; } -table { - border-spacing: 2px; - max-width: 100%; -} - -th,td { - padding: 3px; -} - -#channels > tbody > tr > td, #users > tbody > tr > td { - max-width: 19.4em; - overflow: hidden; -} - -/* mail */ - -img.mail-conv-sender-photo { - border-radius: var(--bs-border-radius); -} /* jot */ @@ -1098,7 +1064,7 @@ img.mail-conv-sender-photo { } .abook-self { - background-color: #ffdddd; + background-color: var(--bs-light-bg-subtle); } .abook-pending-contact, .abook-permschange { diff --git a/view/theme/redbasic/php/theme_init.php b/view/theme/redbasic/php/theme_init.php index 54e6e7be3..cffe22de6 100644 --- a/view/theme/redbasic/php/theme_init.php +++ b/view/theme/redbasic/php/theme_init.php @@ -1,4 +1,6 @@ <?php +use Zotlabs\Lib\Config; + require_once('view/php/theme_init.php'); head_add_css('/library/fork-awesome/css/fork-awesome.min.css'); @@ -24,8 +26,8 @@ if (App::$profile_uid) { } if (!$redbasic_mode) { - $redbasic_mode = ((get_config('redbasic', 'dark_mode')) ? 'dark' : 'light'); - $redbasic_navbar_mode = ((get_config('redbasic', 'navbar_dark_mode')) ? 'dark' : 'light'); + $redbasic_mode = ((Config::Get('redbasic', 'dark_mode')) ? 'dark' : 'light'); + $redbasic_navbar_mode = ((Config::Get('redbasic', 'navbar_dark_mode')) ? 'dark' : 'light'); } App::$page['color_mode'] = 'data-bs-theme="' . $redbasic_mode . '"'; diff --git a/view/tpl/admin_accounts.tpl b/view/tpl/admin_accounts.tpl index 1f5617f00..4e2b79876 100644 --- a/view/tpl/admin_accounts.tpl +++ b/view/tpl/admin_accounts.tpl @@ -1,4 +1,4 @@ -<div class="generic-content-wrapper-styled" id="adminpage"> +<div class="generic-content-wrapper-styled table-responsive" id="adminpage"> <h1>{{$title}} - {{$page}}</h1> <form action="{{$baseurl}}/admin/accounts" method="post"> diff --git a/view/tpl/admin_channels.tpl b/view/tpl/admin_channels.tpl index 75db77593..19b3c292f 100644 --- a/view/tpl/admin_channels.tpl +++ b/view/tpl/admin_channels.tpl @@ -10,7 +10,7 @@ return false; } </script> -<div class = "generic-content-wrapper-styled" id='adminpage'> +<div class="generic-content-wrapper-styled table-responsive" id='adminpage'> <h1>{{$title}} - {{$page}}</h1> <form action="{{$baseurl}}/admin/channels" method="post"> diff --git a/view/tpl/cdav_calendar.tpl b/view/tpl/cdav_calendar.tpl index 88aa0789d..5d8c6115f 100644 --- a/view/tpl/cdav_calendar.tpl +++ b/view/tpl/cdav_calendar.tpl @@ -480,7 +480,7 @@ function on_submit() { eventSource.refetch(); } else { - $.jGrowl('{{$disabled_warning}}', { sticky: false, theme: 'notice', life: 10000 }); + toast('{{$disabled_warning}}', 'danger'); } reset_form(); }); @@ -506,7 +506,7 @@ function on_submit() { eventSource.refetch(); } else { - $.jGrowl('{{$disabled_warning}}', { sticky: false, theme: 'notice', life: 10000 }); + toast('{{$disabled_warning}}', 'danger'); } reset_form(); }); diff --git a/view/tpl/contact_edit_modal.tpl b/view/tpl/contact_edit_modal.tpl index 72feb7138..b9d9ead08 100644 --- a/view/tpl/contact_edit_modal.tpl +++ b/view/tpl/contact_edit_modal.tpl @@ -54,11 +54,11 @@ $.post('contactedit/' + poi, form_data, function(data) { if (!data.success) { - $.jGrowl(data.message, {sticky: false, theme: 'notice', life: 10000}); + toast(data.message, 'danger'); return; } activate(data); - $.jGrowl(data.message, {sticky: false, theme: ((data.success) ? 'info' : 'notice'), life: ((data.success) ? 3000 : 10000)}); + toast(data.message, ((data.success) ? 'info' : 'danger')); // $('#edit-modal').modal('hide'); }); @@ -70,7 +70,7 @@ $.get('contactedit/' + poi + '/' + cmd, function(data) { $('#edit-modal-tools').html(data.tools); - $.jGrowl(data.message, {sticky: false, theme: ((data.success) ? 'info' : 'notice'), life: ((data.success) ? 3000 : 10000)}); + toast(data.message, ((data.success) ? 'info' : 'danger')); if (cmd === 'drop') { if ($('#contact-entry-wrapper-' + poi).length) { $('#contact-entry-wrapper-' + poi).fadeOut(); @@ -110,7 +110,7 @@ $('.contact-edit-icon-' + poi).hide(); $.get('contactedit/' + poi, function(data) { if (!data.success) { - $.jGrowl(data.message, {sticky: false, theme: 'notice', life: 10000}); + toast(data.message, 'danger'); return; } $('#edit-modal').modal('show'); diff --git a/view/tpl/field_input.tpl b/view/tpl/field_input.tpl index 2f9f83ac5..1b548221f 100644 --- a/view/tpl/field_input.tpl +++ b/view/tpl/field_input.tpl @@ -1,7 +1,18 @@ <div id="id_{{$field.0}}_wrapper" class="mb-3"> - <label for="id_{{$field.0}}" id="label_{{$field.0}}">{{$field.1}}{{if $field.4}}<sup class="required zuiqmid"> {{$field.4}}</sup>{{/if}}</label> - <input class="form-control" name="{{$field.0}}" id="id_{{$field.0}}" type="text" value="{{$field.2}}"{{if $field.5}} {{$field.5}}{{/if}}> - <small id="help_{{$field.0}}" class="form-text text-muted">{{$field.3}}</small> + <label for="id_{{$field.0}}" id="label_{{$field.0}}"> + {{$field.1}}{{if $field.4}}<sup class="required zuiqmid"> {{$field.4}}</sup>{{/if}} + </label> + <input + class="form-control" + name="{{$field.0}}" + id="id_{{$field.0}}" + type="text" + value="{{$field.2|escape:'html':'UTF-8':FALSE}}" + {{if $field.5}}{{$field.5}}{{/if}} + > + <small id="help_{{$field.0}}" class="form-text text-muted"> + {{$field.3}} + </small> </div> {{* COMMENTS for this template: diff --git a/view/tpl/hdr.tpl b/view/tpl/hdr.tpl index e69de29bb..f4f346fb7 100644 --- a/view/tpl/hdr.tpl +++ b/view/tpl/hdr.tpl @@ -0,0 +1 @@ +<div id="toast-container" class="vstack gap-3 m-3 position-fixed top-0 end-0"></div> diff --git a/view/tpl/help.tpl b/view/tpl/help.tpl index 5022e7b1b..ba61a43ce 100644 --- a/view/tpl/help.tpl +++ b/view/tpl/help.tpl @@ -13,19 +13,19 @@ </div> </div> </div> - <h2>{{$title}}: {{$heading}}</h2> + <h2>{{$module->get_page_title()}}</h2> </div> <div class="section-content-wrapper" id="doco-content"> <h3 id="doco-top-toc-heading"> <span class="fakelink" onclick="docoTocToggle(); return false;"> <i class="fa fa-fw fa-caret-right fakelink" id="doco-toc-toggle"></i> - {{$tocHeading}} + {{$module->get_toc_heading()}} </span> </h3> <ul id="doco-top-toc" style="margin-bottom: 1.5em; display: none;"></ul> - {{$content}} + {{$module->render_content()}} </div> </div> <script> - var help_language = '{{$language}}' + var help_language = '{{$module->lang["language"]}}' </script> diff --git a/view/tpl/install.tpl b/view/tpl/install.tpl index 5ab722b12..56faa0527 100644 --- a/view/tpl/install.tpl +++ b/view/tpl/install.tpl @@ -2,7 +2,9 @@ <div class="jumbotron"> <h1>{{$title}}</h1> <hr class="my-4"> + {{if $icon}} <h2><i class="fa fa-{{$icon}}"></i> {{$pass}}</h2> + {{/if}} </div> {{if $status}} @@ -11,5 +13,5 @@ <div class="alert alert-info">{{$text}}</div> <br> - {{$what_next}} + {{if $what_next}}{{$what_next}}{{/if}} </div> diff --git a/view/tpl/invite.tpl b/view/tpl/invite.tpl index 304816e0b..08c984a5e 100644 --- a/view/tpl/invite.tpl +++ b/view/tpl/invite.tpl @@ -76,7 +76,6 @@ ' .zai_n { width: 5em; text-align: center; }'+ ' #id_zaiexpire_fs { display: inline-block; }'+ ' .invites { text-transform: capitalize; }'+ - ' .jGrowl-message { font-family: monospace; }'+ '</style>'); $('#zai-txt').attr('placeholder','{{$personal_pointer}}'); zaitx(); diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl index ca3cabd61..67ba1824b 100644 --- a/view/tpl/jot-header.tpl +++ b/view/tpl/jot-header.tpl @@ -184,7 +184,6 @@ var activeCommentText = ''; } function jotGetExpiry() { - //reply = prompt("{{$expirewhen}}", $('#jot-expire').val()); $('#expiryModal').modal('show'); $('#expiry-modal-OKButton').on('click', function() { reply=$('#expiration-date').val(); @@ -196,7 +195,6 @@ var activeCommentText = ''; } function jotGetPubDate() { - //reply = prompt("{{$expirewhen}}", $('#jot-expire').val()); $('#createdModal').modal('show'); $('#created-modal-OKButton').on('click', function() { reply=$('#created-date').val(); diff --git a/view/tpl/notifications_widget.tpl b/view/tpl/notifications_widget.tpl index 9ea5ffec6..a9d98dae9 100644 --- a/view/tpl/notifications_widget.tpl +++ b/view/tpl/notifications_widget.tpl @@ -337,17 +337,16 @@ sse_setNotificationsStatus(); // notice and info - $.jGrowl.defaults.closerTemplate = '<div>[ ' + aStr.closeAll + ']</div>'; if(obj.notice) { $(obj.notice.notifications).each(function() { - $.jGrowl(this, { sticky: true, theme: 'notice' }); + toast(this, 'danger'); }); } if(obj.info) { $(obj.info.notifications).each(function(){ - $.jGrowl(this, { sticky: false, theme: 'info', life: 10000 }); + toast(this, 'info'); }); } diff --git a/view/tpl/nwiki_page_history.tpl b/view/tpl/nwiki_page_history.tpl deleted file mode 100644 index 6926cca2d..000000000 --- a/view/tpl/nwiki_page_history.tpl +++ /dev/null @@ -1,59 +0,0 @@ -<style> - .diff { - width:100%; - word-break: break-all; - } - - .diff td{ - padding:0 0.667em; - vertical-align:top; - white-space:pre; - white-space:pre-wrap; - font-family:Consolas,'Courier New',Courier,monospace; - font-size:1.0em; - line-height:1.333; - } - - .diff span{ - display:block; - min-height:1.333em; - margin-top:-1px; - padding:0 3px; - } - - * html .diff span{ - height:1.333em; - } - - .diff span:first-child{ - margin-top:0; - } - - .diffDeleted span{ - border:1px solid rgb(255,192,192); - background:rgb(255,224,224); - } - - .diffInserted span{ - border:1px solid rgb(192,255,192); - background:rgb(224,255,224); - } -</style> -<table class="" style="width: 100%;"> - {{foreach $pageHistory as $commit}} - <tr class="wikis-index-row"><td> - <table id="rev-{{$commit.revision}}" onclick="$('#details-{{$commit.revision}}').show()" style="width: 100%;"> - <tr><td width="10%">{{$date_lbl}}</td><td width="70%">{{$commit.date}}</td> - <td rowspan="3" width="20%" align="right"> - {{if $permsWrite}} - <button id="revert-{{$commit.revision}}" class="btn btn-danger btn-sm" onclick="wiki_revert_page('{{$commit.revision}}')">{{$revert_btn}}</button> - <br><br> - {{/if}} - <button id="compare-{{$commit.revision}}" class="btn btn-warning btn-sm" onclick="wiki_compare_page('{{$commit.revision}}')">{{$compare_btn}}</button> - </td></tr> - <tr><td>{{$name_lbl}}</td><td>{{$commit.name}}</td></tr> - <tr><td>{{$msg_label}}</td><td>{{$commit.title}}</td></tr> - </table> - </td></tr> - {{/foreach}} -</table>
\ No newline at end of file diff --git a/view/tpl/oembed_video.tpl b/view/tpl/oembed_video.tpl index d821ebdb2..f1513a5d5 100644 --- a/view/tpl/oembed_video.tpl +++ b/view/tpl/oembed_video.tpl @@ -1,4 +1 @@ -<a href="{{$embedurl}}" onclick="this.innerHTML=Base64.decode('{{$escapedhtml}}'); return false;" style="float:left; margin: 1em; position: relative;"> - <img width="{{$tw}}" height="{{$th}}" src="{{$turl}}" /> - <div style="position: absolute; top: 0px; left: 0px; width: {{$twpx}}; height: {{$thpx}}; background: url('{{$baseurl}}/images/icons/48/play.png') no-repeat center center;"></div> -</a> +<a href="{{$embedurl}}" onclick="this.innerHTML=Base64.decode('{{$escapedhtml}}'); return false;" style="float:left; margin-right: 1em; position: relative;"><img width="{{$tw}}" height="{{$th}}" src="{{$turl}}" /></a> diff --git a/view/tpl/profile_vcard.tpl b/view/tpl/profile_vcard.tpl index dd372beac..de08cfc19 100644 --- a/view/tpl/profile_vcard.tpl +++ b/view/tpl/profile_vcard.tpl @@ -99,8 +99,11 @@ </dl> {{/if}} </div> + {{/if}} + {{if $details}} <div class="hcard-addon"></div> {{/if}} + </div> {{if $details}} {{$chanmenu}} diff --git a/view/tpl/register.tpl b/view/tpl/register.tpl index 8e1530eb4..cc2b8e47b 100644 --- a/view/tpl/register.tpl +++ b/view/tpl/register.tpl @@ -47,7 +47,7 @@ {{include file="field_input.tpl" field=$email}} {{include file="field_password.tpl" field=$pass1}} {{include file="field_password.tpl" field=$pass2}} - {{if $reg_is}} + {{if $register_msg}} {{include file="field_textarea.tpl" field=$register_msg}} {{/if}} {{if $enable_tos}} diff --git a/view/tpl/siteinfo.tpl b/view/tpl/siteinfo.tpl index 6cf7da756..08e4790f2 100644 --- a/view/tpl/siteinfo.tpl +++ b/view/tpl/siteinfo.tpl @@ -55,7 +55,7 @@ <div>{{$prj_src}}</div> <br><br> -<div>{{$prj_transport}} ({{$transport_link}})</div> +<div>{{$prj_transport}} {{$transport_link}}</div> {{if $additional_fed}} <div>{{$additional_text}} {{$additional_fed}}</div> diff --git a/view/tpl/totp_setup.tpl b/view/tpl/totp_setup.tpl index 6f995edf1..1f028f6f9 100644 --- a/view/tpl/totp_setup.tpl +++ b/view/tpl/totp_setup.tpl @@ -50,12 +50,12 @@ {totp_code: document.getElementById('totp_test').value}, function(data) { if (data['status']) { - $.jGrowl('{{$test_pass}}', { sticky: false, theme: 'info', life: 10000 }); + toast('{{$test_pass}}', 'info'); let e = document.getElementById('mfa-submit-wrapper'); e.classList.remove('d-none'); return; } - $.jGrowl('{{$test_fail}}', { sticky: false, theme: 'notice', life: 10000 }); + toast('{{$test_fail}}', 'danger'); } ); } diff --git a/view/tpl/widget.tpl b/view/tpl/widget.tpl new file mode 100644 index 000000000..4bbbb2df9 --- /dev/null +++ b/view/tpl/widget.tpl @@ -0,0 +1,12 @@ +{{* Generic template for widgets. + * + * To use this template, pass the `$this` object reference of the widget, + * and implement the `title()` and `contents()` functions as public methods + * on the widget class. + *}} +<div class="widget"> + {{if $widget->title()}} + <h3>{{$widget->title()}}</h3> + {{/if}} + {{$widget->contents()}} +</div> |