aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs
diff options
context:
space:
mode:
Diffstat (limited to 'Zotlabs')
-rw-r--r--Zotlabs/Widget/Chatroom_list.php2
-rw-r--r--Zotlabs/Widget/Common_friends.php2
-rw-r--r--Zotlabs/Widget/Fullprofile.php6
-rw-r--r--Zotlabs/Widget/Helpindex.php7
-rw-r--r--Zotlabs/Widget/Item.php8
-rw-r--r--Zotlabs/Widget/Menu_preview.php6
-rw-r--r--Zotlabs/Widget/Newmember.php9
-rw-r--r--Zotlabs/Widget/Permcats.php7
-rw-r--r--Zotlabs/Widget/Photo.php6
-rw-r--r--Zotlabs/Widget/Photo_albums.php6
-rw-r--r--Zotlabs/Widget/Photo_rand.php11
-rw-r--r--Zotlabs/Widget/Pinned.php9
-rw-r--r--Zotlabs/Widget/Portfolio.php10
-rw-r--r--Zotlabs/Widget/Privacygroups.php7
-rw-r--r--Zotlabs/Widget/Profile.php7
-rw-r--r--Zotlabs/Widget/Pubsites.php16
-rw-r--r--Zotlabs/Widget/Pubtagcloud.php5
-rw-r--r--Zotlabs/Widget/Random_block.php5
-rw-r--r--Zotlabs/Widget/Rating.php6
-rw-r--r--Zotlabs/Widget/Savedsearch.php6
-rw-r--r--Zotlabs/Widget/Settings_menu.php5
-rw-r--r--Zotlabs/Widget/Shortprofile.php18
-rw-r--r--Zotlabs/Widget/Sitesearch.php6
-rw-r--r--Zotlabs/Widget/Suggestions.php13
-rw-r--r--Zotlabs/Widget/Tagcloud.php5
-rw-r--r--Zotlabs/Widget/Tagcloud_wall.php6
-rw-r--r--Zotlabs/Widget/Tasklist.php9
-rw-r--r--Zotlabs/Widget/Tokens.php6
-rw-r--r--Zotlabs/Widget/Vcard.php5
-rw-r--r--Zotlabs/Widget/Website_portation_tools.php7
-rw-r--r--Zotlabs/Widget/Wiki_list.php5
-rw-r--r--Zotlabs/Widget/Wiki_page_history.php8
-rw-r--r--Zotlabs/Widget/Wiki_pages.php10
-rw-r--r--Zotlabs/Widget/Zcard.php5
34 files changed, 190 insertions, 59 deletions
diff --git a/Zotlabs/Widget/Chatroom_list.php b/Zotlabs/Widget/Chatroom_list.php
index 42b92ddb2..d80e40bf9 100644
--- a/Zotlabs/Widget/Chatroom_list.php
+++ b/Zotlabs/Widget/Chatroom_list.php
@@ -1,7 +1,7 @@
<?php
/**
- * * Name: Chantroom list
+ * * Name: Chatroom list
* * Description: A menu with links to your chatrooms
* * Requires: chat, channel, articles, cards, wiki
*/
diff --git a/Zotlabs/Widget/Common_friends.php b/Zotlabs/Widget/Common_friends.php
index dfeeb41b0..6024f82f5 100644
--- a/Zotlabs/Widget/Common_friends.php
+++ b/Zotlabs/Widget/Common_friends.php
@@ -2,7 +2,7 @@
/**
* * Name: Common friends
- * * Description: Display common friends to viitors
+ * * Description: Display common friends to visitors
* * Requires: channel, articles, cards, wiki
*/
diff --git a/Zotlabs/Widget/Fullprofile.php b/Zotlabs/Widget/Fullprofile.php
index e8ed13811..edff88e31 100644
--- a/Zotlabs/Widget/Fullprofile.php
+++ b/Zotlabs/Widget/Fullprofile.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Full profile
+ * * Description: Profile card with extended profile info
+ * * Requires: channel, articles, cards, wiki, cloud, photos
+ */
+
namespace Zotlabs\Widget;
class Fullprofile {
diff --git a/Zotlabs/Widget/Helpindex.php b/Zotlabs/Widget/Helpindex.php
index 6c8748194..fbcd8c8b2 100644
--- a/Zotlabs/Widget/Helpindex.php
+++ b/Zotlabs/Widget/Helpindex.php
@@ -1,11 +1,18 @@
<?php
+/**
+ * * Name: Help index
+ * * Description: Help pages index
+ */
+
namespace Zotlabs\Widget;
class Helpindex {
function widget($arr) {
+ require_once('include/help.php');
+
$o .= '<div class="widget">';
$level_0 = get_help_content('sitetoc');
diff --git a/Zotlabs/Widget/Item.php b/Zotlabs/Widget/Item.php
index 273d5649c..9fd703dfe 100644
--- a/Zotlabs/Widget/Item.php
+++ b/Zotlabs/Widget/Item.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Item
+ * * Description: Display a webpage by title or mid,
+ * * Requires: channel, articles, cards, wiki
+ */
+
namespace Zotlabs\Widget;
require_once('include/security.php');
@@ -35,7 +41,7 @@ class Item {
);
}
else {
- $r = q("select * from item where mid = '%s' and uid = %d and item_type = "
+ $r = q("select * from item where mid = '%s' and uid = %d and item_type = "
. intval(ITEM_TYPE_WEBPAGE) . " $sql_extra limit 1",
dbesc($arr['mid']),
intval($channel_id)
diff --git a/Zotlabs/Widget/Menu_preview.php b/Zotlabs/Widget/Menu_preview.php
index 51218f6cf..ddeb4d12c 100644
--- a/Zotlabs/Widget/Menu_preview.php
+++ b/Zotlabs/Widget/Menu_preview.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Menu preview
+ * * Description: Shows a preview of the current menu
+ * * Requires: mitem
+ */
+
namespace Zotlabs\Widget;
require_once('include/menu.php');
diff --git a/Zotlabs/Widget/Newmember.php b/Zotlabs/Widget/Newmember.php
index 224f7a8a2..70a858fb0 100644
--- a/Zotlabs/Widget/Newmember.php
+++ b/Zotlabs/Widget/Newmember.php
@@ -1,5 +1,10 @@
<?php
+/**
+ * * Name: New member
+ * * Description: Display useful links for new members to help them get started
+ */
+
namespace Zotlabs\Widget;
class Newmember {
@@ -29,7 +34,7 @@ class Newmember {
$options = [
t('Profile Creation'),
- [
+ [
'profile_photo' => t('Upload profile photo'),
'cover_photo' => t('Upload cover photo'),
'profiles' => t('Edit your profile'),
@@ -84,4 +89,4 @@ class Newmember {
}
-
+
diff --git a/Zotlabs/Widget/Permcats.php b/Zotlabs/Widget/Permcats.php
index a908f6220..9226b3c71 100644
--- a/Zotlabs/Widget/Permcats.php
+++ b/Zotlabs/Widget/Permcats.php
@@ -1,5 +1,12 @@
<?php
+/**
+ * * Name: Contact roles
+ * * Description: Display a menu with all defined contact roles and contacts which are assigned to the selected role
+ * * Author: Mario Vavti
+ * * Requires: permcats
+ */
+
namespace Zotlabs\Widget;
use Zotlabs\Lib\Permcat;
diff --git a/Zotlabs/Widget/Photo.php b/Zotlabs/Widget/Photo.php
index 10031f028..5ad6c604c 100644
--- a/Zotlabs/Widget/Photo.php
+++ b/Zotlabs/Widget/Photo.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Photo
+ * * Description: Displays a single photo
+ */
+
+
namespace Zotlabs\Widget;
diff --git a/Zotlabs/Widget/Photo_albums.php b/Zotlabs/Widget/Photo_albums.php
index 6df8ddf3c..2ce916048 100644
--- a/Zotlabs/Widget/Photo_albums.php
+++ b/Zotlabs/Widget/Photo_albums.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Photo albums
+ * * Description: Displays a menu with links to existing photo albums
+ * * Requires: photos
+ */
+
namespace Zotlabs\Widget;
require_once('include/photos.php');
diff --git a/Zotlabs/Widget/Photo_rand.php b/Zotlabs/Widget/Photo_rand.php
index af80a3b9f..cfe026b19 100644
--- a/Zotlabs/Widget/Photo_rand.php
+++ b/Zotlabs/Widget/Photo_rand.php
@@ -1,5 +1,10 @@
<?php
+/**
+ * * Name: Random photo
+ * * Description: Display a random photo
+ */
+
namespace Zotlabs\Widget;
require_once('include/photos.php');
@@ -40,15 +45,15 @@ class Photo_rand {
if(strpos($url, 'http') !== 0)
return '';
-
+
if(array_key_exists('style', $arr) && isset($arr['style']))
$style = $arr['style'];
-
+
// ensure they can't sneak in an eval(js) function
if(strpos($style,'(') !== false)
return '';
-
+
$url = zid($url);
$o = '<div class="widget">';
diff --git a/Zotlabs/Widget/Pinned.php b/Zotlabs/Widget/Pinned.php
index 66d06bbd3..83036e98c 100644
--- a/Zotlabs/Widget/Pinned.php
+++ b/Zotlabs/Widget/Pinned.php
@@ -1,11 +1,14 @@
<?php
namespace Zotlabs\Widget;
-/*
- * Show pinned content
- *
+/**
+ * * Name: Pinned items
+ * * Description: Display pinned items
+ * * Author: Max Kostikov
+ * * Requires: disabled_for_pdledit_gui
*/
+
class Pinned {
private $allowed_types = 0;
diff --git a/Zotlabs/Widget/Portfolio.php b/Zotlabs/Widget/Portfolio.php
index 0cd043246..a06f56e30 100644
--- a/Zotlabs/Widget/Portfolio.php
+++ b/Zotlabs/Widget/Portfolio.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Portfolio
+ * * Description: Display a photo album in a portfolio style
+ * * Requires: channel, articles, cards, wiki
+ */
+
namespace Zotlabs\Widget;
require_once('include/attach.php');
@@ -8,11 +14,9 @@ class Portfolio {
function widget($args) {
-
$owner_uid = \App::$profile_uid;
$sql_extra = permissions_sql($owner_uid);
-
if(! perm_is_allowed($owner_uid,get_observer_hash(),'view_storage'))
return '';
@@ -112,7 +116,7 @@ class Portfolio {
'$upload_form' => $upload_form,
'$usage' => $usage_message
));
-
+
return $o;
}
}
diff --git a/Zotlabs/Widget/Privacygroups.php b/Zotlabs/Widget/Privacygroups.php
index a6b16c552..62f343ea6 100644
--- a/Zotlabs/Widget/Privacygroups.php
+++ b/Zotlabs/Widget/Privacygroups.php
@@ -1,5 +1,12 @@
<?php
+/**
+ * * Name: Privacy Groups
+ * * Description: Display a menu with links to existing privacy groups
+ * * Requires: group
+ */
+
+
namespace Zotlabs\Widget;
use Zotlabs\Lib\AccessList;
diff --git a/Zotlabs/Widget/Profile.php b/Zotlabs/Widget/Profile.php
index 0e5444a56..a0bb1a66a 100644
--- a/Zotlabs/Widget/Profile.php
+++ b/Zotlabs/Widget/Profile.php
@@ -1,5 +1,12 @@
<?php
+/**
+ * * Name: Profile
+ * * Description: Your profile card
+ * * Requires: channel, articles, cards, wiki, cloud, photos
+ */
+
+
namespace Zotlabs\Widget;
use App;
diff --git a/Zotlabs/Widget/Pubsites.php b/Zotlabs/Widget/Pubsites.php
deleted file mode 100644
index 958ba68c2..000000000
--- a/Zotlabs/Widget/Pubsites.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-namespace Zotlabs\Widget;
-
-class Pubsites {
-
- // used by site ratings pages to provide a return link
-
- function widget($arr) {
- if(\App::$poi)
- return;
- return '<div class="widget"><ul class="nav nav-pills"><li><a href="pubsites">' . t('Public Hubs') . '</a></li></ul></div>';
- }
-}
-
-
diff --git a/Zotlabs/Widget/Pubtagcloud.php b/Zotlabs/Widget/Pubtagcloud.php
index 826e3e6ae..db7ea02e7 100644
--- a/Zotlabs/Widget/Pubtagcloud.php
+++ b/Zotlabs/Widget/Pubtagcloud.php
@@ -1,5 +1,10 @@
<?php
+/**
+ * * Name: Public stream tags
+ * * Description: Display public stream tags in a cloud
+ */
+
namespace Zotlabs\Widget;
class Pubtagcloud {
diff --git a/Zotlabs/Widget/Random_block.php b/Zotlabs/Widget/Random_block.php
index 465a51f97..9052bea03 100644
--- a/Zotlabs/Widget/Random_block.php
+++ b/Zotlabs/Widget/Random_block.php
@@ -1,5 +1,10 @@
<?php
+/**
+ * * Name: Random block
+ * * Description: Display a random block item
+ */
+
namespace Zotlabs\Widget;
class Random_block {
diff --git a/Zotlabs/Widget/Rating.php b/Zotlabs/Widget/Rating.php
index 5e09f457b..20c27ff1c 100644
--- a/Zotlabs/Widget/Rating.php
+++ b/Zotlabs/Widget/Rating.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Rating
+ * * Description: Deprecated rating tool
+ * * Requires: disabled_for_pdledit_gui
+ */
+
namespace Zotlabs\Widget;
class Rating {
diff --git a/Zotlabs/Widget/Savedsearch.php b/Zotlabs/Widget/Savedsearch.php
index 378c27139..660fd6d81 100644
--- a/Zotlabs/Widget/Savedsearch.php
+++ b/Zotlabs/Widget/Savedsearch.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Saved searches
+ * * Description: A search form which also displays saved searches if the feature is enabled
+ * * Requires: network
+ */
+
namespace Zotlabs\Widget;
class Savedsearch {
diff --git a/Zotlabs/Widget/Settings_menu.php b/Zotlabs/Widget/Settings_menu.php
index 4d0f1d2dd..ef269d84b 100644
--- a/Zotlabs/Widget/Settings_menu.php
+++ b/Zotlabs/Widget/Settings_menu.php
@@ -1,5 +1,10 @@
<?php
+/**
+ * * Name: Settings menu
+ * * Description: Display the channel settings menu
+ */
+
namespace Zotlabs\Widget;
class Settings_menu {
diff --git a/Zotlabs/Widget/Shortprofile.php b/Zotlabs/Widget/Shortprofile.php
deleted file mode 100644
index 9c2a46e75..000000000
--- a/Zotlabs/Widget/Shortprofile.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Zotlabs\Widget;
-
-class Shortprofile {
-
- function widget($arr) {
-
- if(! \App::$profile['profile_uid'])
- return;
-
- $block = observer_prohibited();
-
- return profile_sidebar(\App::$profile, $block, true, true);
- }
-
-}
-
diff --git a/Zotlabs/Widget/Sitesearch.php b/Zotlabs/Widget/Sitesearch.php
index b3a25d76a..a5f1a5935 100644
--- a/Zotlabs/Widget/Sitesearch.php
+++ b/Zotlabs/Widget/Sitesearch.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Search
+ * * Description: A search form
+ * * Requires: search, network, channel
+ */
+
namespace Zotlabs\Widget;
diff --git a/Zotlabs/Widget/Suggestions.php b/Zotlabs/Widget/Suggestions.php
index b4f384e9d..e7d23bda4 100644
--- a/Zotlabs/Widget/Suggestions.php
+++ b/Zotlabs/Widget/Suggestions.php
@@ -1,5 +1,10 @@
<?php
+/**
+ * * Name: Suggestions
+ * * Description: Display suggestions for new contacts
+ */
+
namespace Zotlabs\Widget;
use Zotlabs\Lib\Apps;
@@ -12,7 +17,7 @@ class Suggestions {
function widget($arr) {
- if((! local_channel()) || (! Apps::system_app_installed(local_channel(), 'Suggest Channels')))
+ if(! local_channel())
return EMPTY_STR;
$r = suggestion_query(local_channel(),get_observer_hash(),0,20);
@@ -23,14 +28,14 @@ class Suggestions {
$arr = array();
- // Get two random entries from the top 20 returned.
+ // Get four random entries from the top 20 returned.
// We'll grab the first one and the one immediately following.
// This will throw some entropy intot he situation so you won't
// be looking at the same two mug shots every time the widget runs
- $index = ((count($r) > 2) ? mt_rand(0,count($r) - 2) : 0);
+ $index = ((count($r) > 4) ? mt_rand(0,count($r) - 4) : 0);
- for($x = $index; $x <= ($index+1); $x ++) {
+ for($x = $index; $x <= ($index+3); $x ++) {
$rr = $r[$x];
if(! $rr['xchan_url'])
break;
diff --git a/Zotlabs/Widget/Tagcloud.php b/Zotlabs/Widget/Tagcloud.php
index f79bd59ad..00456f24f 100644
--- a/Zotlabs/Widget/Tagcloud.php
+++ b/Zotlabs/Widget/Tagcloud.php
@@ -2,6 +2,11 @@
namespace Zotlabs\Widget;
+/**
+ * * Name: Tag cloud
+ * * Description: Display hashtags of your network items in a cloud
+ * * Requires: network, hq
+ */
class Tagcloud {
diff --git a/Zotlabs/Widget/Tagcloud_wall.php b/Zotlabs/Widget/Tagcloud_wall.php
index 7cff6ce09..20def4ab1 100644
--- a/Zotlabs/Widget/Tagcloud_wall.php
+++ b/Zotlabs/Widget/Tagcloud_wall.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Tag cloud wall
+ * * Description: Display hashtags of your channel wall items in a cloud if the feature is enabled
+ * * Requires: channel
+ */
+
namespace Zotlabs\Widget;
class Tagcloud_wall {
diff --git a/Zotlabs/Widget/Tasklist.php b/Zotlabs/Widget/Tasklist.php
index 56342bd17..5ecfd5a27 100644
--- a/Zotlabs/Widget/Tasklist.php
+++ b/Zotlabs/Widget/Tasklist.php
@@ -1,8 +1,11 @@
<?php
-namespace Zotlabs\Widget;
+/**
+ * * Name: Task list
+ * * Description: Simple task list mangager
+ */
-require_once('include/event.php');
+namespace Zotlabs\Widget;
class Tasklist {
@@ -20,7 +23,7 @@ class Tasklist {
}
</script>';
- $o .= '<div class="widget">' . '<h3>' . t('Tasks') . '</h3><div class="tasklist-tasks">';
+ $o .= '<div class="widget">' . '<h3>' . t('Tasks') . '</h3><div class="tasklist-tasks mb-1">';
$o .= '</div><form id="tasklist-new-form" action="" ><input class="form-control" id="tasklist-new-summary" type="text" name="summary" value="" /></form>';
$o .= '</div>';
return $o;
diff --git a/Zotlabs/Widget/Tokens.php b/Zotlabs/Widget/Tokens.php
index 8c31003fc..69452d628 100644
--- a/Zotlabs/Widget/Tokens.php
+++ b/Zotlabs/Widget/Tokens.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Tokens
+ * * Description: Display a menu with links to existing guest access tokens
+ * * Requires: tokens
+ */
+
namespace Zotlabs\Widget;
class Tokens {
diff --git a/Zotlabs/Widget/Vcard.php b/Zotlabs/Widget/Vcard.php
index cab05dfdd..25bb8592c 100644
--- a/Zotlabs/Widget/Vcard.php
+++ b/Zotlabs/Widget/Vcard.php
@@ -1,5 +1,10 @@
<?php
+/**
+ * * Name: Vcard
+ * * Description: Your default profile card
+ */
+
namespace Zotlabs\Widget;
class Vcard {
diff --git a/Zotlabs/Widget/Website_portation_tools.php b/Zotlabs/Widget/Website_portation_tools.php
index 1cf3bb78a..61fe48169 100644
--- a/Zotlabs/Widget/Website_portation_tools.php
+++ b/Zotlabs/Widget/Website_portation_tools.php
@@ -1,7 +1,12 @@
<?php
-namespace Zotlabs\Widget;
+/**
+ * * Name: Website import/export
+ * * Description: Tools to import and export websites
+ * * Requires: website
+ */
+namespace Zotlabs\Widget;
class Website_portation_tools {
diff --git a/Zotlabs/Widget/Wiki_list.php b/Zotlabs/Widget/Wiki_list.php
index 64c988ee7..217ab8706 100644
--- a/Zotlabs/Widget/Wiki_list.php
+++ b/Zotlabs/Widget/Wiki_list.php
@@ -1,5 +1,10 @@
<?php
+/**
+ * * Name: Wiki list
+ * * Description: A list of existing wikis
+ */
+
namespace Zotlabs\Widget;
class Wiki_list {
diff --git a/Zotlabs/Widget/Wiki_page_history.php b/Zotlabs/Widget/Wiki_page_history.php
index dbb322dc3..3c9f5ed1a 100644
--- a/Zotlabs/Widget/Wiki_page_history.php
+++ b/Zotlabs/Widget/Wiki_page_history.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Wiki page history
+ * * Description: History of an existing wiki page
+ * * Requires: wiki
+ */
+
namespace Zotlabs\Widget;
class Wiki_page_history {
@@ -10,7 +16,7 @@ class Wiki_page_history {
$resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
$pageHistory = \Zotlabs\Lib\NativeWikiPage::page_history([
- 'channel_id' => \App::$profile_uid,
+ 'channel_id' => \App::$profile_uid,
'observer_hash' => get_observer_hash(),
'resource_id' => $resource_id,
'pageUrlName' => $pageUrlName
diff --git a/Zotlabs/Widget/Wiki_pages.php b/Zotlabs/Widget/Wiki_pages.php
index dee0a2229..ece712334 100644
--- a/Zotlabs/Widget/Wiki_pages.php
+++ b/Zotlabs/Widget/Wiki_pages.php
@@ -1,5 +1,11 @@
<?php
+/**
+ * * Name: Wiki pages
+ * * Description: A list of existing pages of a wiki
+ * * Requires: wiki
+ */
+
namespace Zotlabs\Widget;
use Zotlabs\Lib\NativeWiki;
@@ -34,7 +40,7 @@ class Wiki_pages {
'$addnew' => t('Add new page'),
'$typelock' => $typelock,
'$lockedtype' => $w['mimeType'],
- '$mimetype' => mimetype_select(0,$w['mimeType'],
+ '$mimetype' => mimetype_select(0,$w['mimeType'],
[ 'text/markdown' => t('Markdown'), 'text/bbcode' => t('BBcode'), 'text/plain' => t('Text') ]),
'$pageName' => array('missingPageName', 'Create Page' , $pageName),
'$refresh' => $arr['refresh'],
@@ -91,7 +97,7 @@ class Wiki_pages {
'$addnew' => t('Add new page'),
'$typelock' => $typelock,
'$lockedtype' => $w['mimeType'],
- '$mimetype' => mimetype_select(0,$w['mimeType'],
+ '$mimetype' => mimetype_select(0,$w['mimeType'],
[ 'text/markdown' => t('Markdown'), 'text/bbcode' => t('BBcode'), 'text/plain' => t('Text') ]),
'$pageName' => array('pageName', t('Page name')),
'$refresh' => $arr['refresh'],
diff --git a/Zotlabs/Widget/Zcard.php b/Zotlabs/Widget/Zcard.php
index 12e53eaab..35362c50e 100644
--- a/Zotlabs/Widget/Zcard.php
+++ b/Zotlabs/Widget/Zcard.php
@@ -1,5 +1,10 @@
<?php
+/**
+ * * Name: Zcard
+ * * Description: Your default profile card including your cover photo
+ */
+
namespace Zotlabs\Widget;
class Zcard {