-<?php
+<?php /** @file */
+
+/**
+ *
+ * Poke, prod, finger, or otherwise do unspeakable things to somebody - who must be a connection in your address book
+ * This function can be invoked with the required arguments (verb and cid and private and possibly parent) silently via ajax or
+ * other web request. You must be logged in and connected to a profile.
+ * If the required arguments aren't present, we'll display a simple form to choose a recipient and a verb.
+ * parent is a special argument which let's you attach this activity as a comment to an existing conversation, which
+ * may have started with somebody else poking (etc.) somebody, but this isn't necessary. This can be used in the more pokes
+ * plugin version to have entire conversations where Alice poked Bob, Bob fingered Alice, Alice hugged Bob, etc.
+ *
+ * private creates a private conversation with the recipient. Otherwise your profile's default post privacy is used.
+ *
+ */
require_once('include/security.php');
require_once('include/bbcode.php');
logger('poke: verb ' . $verb . ' contact ' . $contact_id, LOGGER_DEBUG);
- $r = q("SELECT * FROM `contact` WHERE `id` = %d and `uid` = %d LIMIT 1",
+ $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($contact_id),
intval($uid)
);
$target = $r[0];
if($parent) {
- $r = q("select uri, private, allow_cid, allow_gid, deny_cid, deny_gid
- from item where id = %d and parent = %d and uid = %d limit 1",
+ $r = q("SELECT `uri`, `private`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`
+ FROM `item` WHERE `id` = %d AND `parent` = %d AND `uid` = %d LIMIT 1",
intval($parent),
intval($parent),
intval($uid)
$id = '';
if(intval($_GET['c'])) {
- $r = q("select id,name from contact where id = %d and uid = %d limit 1",
+ $r = q("SELECT `id`,`name` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($_GET['c']),
intval(local_user())
);
$base = $a->get_baseurl();
- $a->page['htmlhead'] .= '<script src="' . $a->get_baseurl(true) . '/library/jquery_ac/friendica.complete.js" ></script>';
- $a->page['htmlhead'] .= <<< EOT
-
-<script>$(document).ready(function() {
- var a;
- a = $("#poke-recip").autocomplete({
- serviceUrl: '$base/acl',
- minChars: 2,
- width: 350,
- onSelect: function(value,data) {
- $("#poke-recip-complete").val(data);
- }
- });
- a.setOptions({ params: { type: 'a' }});
-
-
-});
+ $head_tpl = get_markup_template('poke_head.tpl');
+ $a->page['htmlhead'] .= replace_macros($head_tpl,array(
+ '$baseurl' => $a->get_baseurl(true),
+ '$base' => $base
+ ));
-</script>
-EOT;
$parent = ((x($_GET,'parent')) ? intval($_GET['parent']) : '0');
-
$verbs = get_poke_verbs();
$shortlist = array();
<div id="poke-desc">{{$desc}}</div>
-<form action="poke" method="get">
-<br />
-<br />
-
-<div id="poke-recip-label">{{$clabel}}</div>
-<br />
-<input id="poke-recip" type="text" size="64" maxlength="255" value="{{$name|escape:'html'}}" name="pokename" autocomplete="off" />
-<input id="poke-recip-complete" type="hidden" value="{{$id}}" name="cid" />
-<input id="poke-parent" type="hidden" value="{{$parent}}" name="parent" />
-<br />
-<br />
-<div id="poke-action-label">{{$choice}}</div>
-<br />
-<br />
-<select name="verb" id="poke-verb-select" >
-{{foreach $verbs as $v}}
-<option value="{{$v.0}}">{{$v.1}}</option>
-{{/foreach}}
-</select>
-<br />
-<br />
-<div id="poke-private-desc">{{$prv_desc}}</div>
-<input type="checkbox" name="private" {{if $parent}}disabled="disabled"{{/if}} value="1" />
-<br />
-<br />
-<input type="submit" name="submit" value="{{$submit|escape:'html'}}" />
-</form>
+
+<div id="poke-wrapper">
+ <form action="poke" method="get">
+
+ <div id="poke-recipient">
+ <div id="poke-recip-label">{{$clabel}}</div>
+ <input id="poke-recip" type="text" size="64" maxlength="255" value="{{$name|escape:'html'}}" name="pokename" autocomplete="off" />
+ <input id="poke-recip-complete" type="hidden" value="{{$id}}" name="cid" />
+ <input id="poke-parent" type="hidden" value="{{$parent}}" name="parent" />
+ </div>
+
+ <div id="poke-action">
+ <div id="poke-action-label">{{$choice}}</div>
+ <select name="verb" id="poke-verb-select" >
+ {{foreach $verbs as $v}}
+ <option value="{{$v.0}}">{{$v.1}}</option>
+ {{/foreach}}
+ </select>
+ </div>
+
+ <div id="poke-privacy-settings">
+ <div id="poke-private-desc">{{$prv_desc}}</div>
+ <input type="checkbox" name="private" {{if $parent}}disabled="disabled"{{/if}} value="1" />
+ </div>
+
+ <input type="submit" name="submit" value="{{$submit|escape:'html'}}" />
+
+ </form>
+</div>
--- /dev/null
+<script src="{{$baseurl}}/library/jquery_ac/friendica.complete.js" ></script>
+
+<script>$(document).ready(function() {
+ var a;
+ a = $("#poke-recip").autocomplete({
+ serviceUrl: '{{$base}}/acl',
+ minChars: 2,
+ width: 350,
+ onSelect: function(value,data) {
+ $("#poke-recip-complete").val(data);
+ }
+ });
+ a.setOptions({ params: { type: 'a' }});
+
+
+});
+
+</script>
\ No newline at end of file
.message-links-end {
clear: both;
}
+#poke-desc {
+ margin: 5px 0 10px;
+}
+
+#poke-wrapper {
+ padding: 10px 0 20px;
+}
+
+#poke-recipient, #poke-action, #poke-privacy-settings {
+ margin: 10px 0 30px;
+}
+
+#poke-recip-label, #poke-action-label, #prvmail-message-label {
+ margin: 10px 0 10px;
+}
#sidebar-group-list ul {
list-style-type: none;
clear: both;\r
}\r
\r
+#poke-desc {\r
+ margin: 5px 0 10px;\r
+}\r
+\r
+#poke-wrapper {\r
+ padding: 10px 0 0px;\r
+}\r
+\r
+#poke-recipient, #poke-action, #poke-privacy-settings {\r
+ margin: 10px 0 30px;\r
+}\r
+\r
+#poke-recip-label, #poke-action-label, #prvmail-message-label {\r
+ margin: 10px 0 10px;\r
+}\r
+\r
#sidebar-group-list ul {\r
list-style-type: none;\r
}\r
clear: both;
}
+#poke-desc {
+ margin: 5px 0 10px;
+}
+
+#poke-wrapper {
+ padding: 10px 0 20px;
+}
+
+#poke-recipient, #poke-action, #poke-privacy-settings {
+ margin: 10px 0 30px;
+}
+
+#poke-recip-label, #poke-action-label, #prvmail-message-label {
+ margin: 10px 0 10px;
+}
+
#sidebar-group-list ul {
list-style-type: none;
}
-ms-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
+/* poke */
+#poke-desc {
+ margin: 5px 0 25px;
+}
+#poke-recipient,
+#poke-action,
+#poke-privacy-settings {
+ margin: 10px 0 30px;
+}
+#poke-recip-label,
+#poke-action-label,
+#prvmail-message-label {
+ margin: 10px 0 10px;
+}
/* theme screenshot */
.screenshot,
#theme-preview {
-ms-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
+/* poke */
+#poke-desc {
+ margin: 5px 0 25px;
+}
+#poke-recipient,
+#poke-action,
+#poke-privacy-settings {
+ margin: 10px 0 30px;
+}
+#poke-recip-label,
+#poke-action-label,
+#prvmail-message-label {
+ margin: 10px 0 10px;
+}
/* theme screenshot */
.screenshot,
#theme-preview {
-ms-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
+/* poke */
+#poke-desc {
+ margin: 5px 0 25px;
+}
+#poke-recipient,
+#poke-action,
+#poke-privacy-settings {
+ margin: 10px 0 30px;
+}
+#poke-recip-label,
+#poke-action-label,
+#prvmail-message-label {
+ margin: 10px 0 10px;
+}
/* theme screenshot */
.screenshot,
#theme-preview {
&:hover .mail-delete { .opaque(1); }
}
+/* poke */
+#poke-desc {
+ margin: 5px 0 25px;
+}
+
+#poke-recipient, #poke-action, #poke-privacy-settings {
+ margin: 10px 0 30px;
+}
+
+#poke-recip-label, #poke-action-label, #prvmail-message-label {
+ margin: 10px 0 10px;
+}
/* theme screenshot */
.screenshot, #theme-preview {
border: 1px solid #7C7D7B;
}
+/* ========== */
+/* = Poke = */
+/* ========== */
+#poke-desc {
+ margin: 5px 0 20px;
+}
+#poke-wrapper {
+ margin: 40px 0 20px;
+}
+#poke-recipient, #poke-action, #poke-privacy-settings {
+ margin: 10px 0 30px;
+}
+#poke-recip-label, #poke-action-label, #prvmail-message-label {
+ margin: 10px 0 20px;
+}
+#poke-recip {
+ float: none;
+}
+
/* ================= */
/* = Notifications = */
/* ================= */
border: none;
}
+/* ========== */
+/* = Poke = */
+/* ========== */
+#poke-desc {
+ margin: 10px 0 20px;
+}
+#poke-wrapper {
+ margin: 40px 0 20px;
+}
+#poke-recipient, #poke-action, #poke-privacy-settings {
+ margin: 10px 0 30px;
+}
+#poke-recip-label, #poke-action-label, #prvmail-message-label {
+ margin: 10px 0 20px;
+}
+
/* ========== */
/* = Events = */
/* ========== */