forked from friendica/friendica-addons
Merge remote branch 'upstream/master'
This commit is contained in:
commit
daed8c8720
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Disable LF normalization for all files
|
||||
* -text
|
|
@ -22,11 +22,17 @@ define("CARDDAV_NAMESPACE_PHONECONTACTS", 2);
|
|||
|
||||
define("CALDAV_DB_VERSION", 1);
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
function getCurMicrotime () {
|
||||
list($usec, $sec) = explode(" ", microtime());
|
||||
return sprintf("%14.0f", $sec * 10000 + $usec * 10000);
|
||||
} // function getCurMicrotime
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function debug_time() {
|
||||
$cur = getCurMicrotime();
|
||||
if ($GLOBALS["debug_time_last"] > 0) {
|
||||
|
@ -80,13 +86,30 @@ function dav_compat_principal2uid($principalUri = "")
|
|||
return dav_compat_username2id($username);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @return null|string
|
||||
*/
|
||||
function dav_compat_getRequestVar($name = "") {
|
||||
if (x($_REQUEST, $name)) return $_REQUEST[$name];
|
||||
else return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $text
|
||||
* @return mixed
|
||||
* @return null|string
|
||||
*/
|
||||
function wdcal_parse_text_serverside($text)
|
||||
function dav_compat_parse_text_serverside($text)
|
||||
{
|
||||
return $text;
|
||||
return dav_compat_getRequestVar($text);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $uri
|
||||
*/
|
||||
function dav_compat_redirect($uri = "") {
|
||||
goaway($uri);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -477,6 +477,67 @@ function wdcal_get_list_range_params($day, $weekstartday, $num_days, $type)
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param string $uri
|
||||
* @param string $recurr_uri
|
||||
* @param int $uid
|
||||
* @param string $timezone
|
||||
* @param string $goaway_url
|
||||
* @return string
|
||||
*/
|
||||
function wdcal_postEditPage($uri, $recurr_uri = "", $uid = 0, $timezone = "", $goaway_url = "")
|
||||
{
|
||||
$uid = IntVal($uid);
|
||||
$localization = wdcal_local::getInstanceByUser($uid);
|
||||
|
||||
if (isset($_REQUEST["allday"])) {
|
||||
$start = $localization->date_parseLocal($_REQUEST["start_date"] . " 00:00");
|
||||
$end = $localization->date_parseLocal($_REQUEST["end_date"] . " 20:00");
|
||||
$isallday = true;
|
||||
} else {
|
||||
$start = $localization->date_parseLocal($_REQUEST["start_date"] . " " . $_REQUEST["start_time"]);
|
||||
$end = $localization->date_parseLocal($_REQUEST["end_date"] . " " . $_REQUEST["end_time"]);
|
||||
$isallday = false;
|
||||
}
|
||||
|
||||
if ($uri == "new") {
|
||||
$cals = dav_getMyCals($uid);
|
||||
foreach ($cals as $c) {
|
||||
$cs = wdcal_calendar_factory($uid, $c->namespace, $c->namespace_id);
|
||||
$p = $cs->getPermissionsCalendar($uid);
|
||||
|
||||
if ($p["write"]) try {
|
||||
$cs->addItem($start, $end, dav_compat_getRequestVar("subject"), $isallday, dav_compat_parse_text_serverside("wdcal_desc"),
|
||||
dav_compat_getRequestVar("location"), dav_compat_getRequestVar("color"), $timezone,
|
||||
isset($_REQUEST["notification"]), $_REQUEST["notification_type"], $_REQUEST["notification_value"]);
|
||||
} catch (Exception $e) {
|
||||
notification(t("Error") . ": " . $e);
|
||||
}
|
||||
dav_compat_redirect($goaway_url);
|
||||
}
|
||||
|
||||
} else {
|
||||
$cals = dav_getMyCals($uid);
|
||||
foreach ($cals as $c) {
|
||||
$cs = wdcal_calendar_factory($uid, $c->namespace, $c->namespace_id);
|
||||
$p = $cs->getPermissionsItem($uid, $uri, $recurr_uri);
|
||||
if ($p["write"]) try {
|
||||
$cs->updateItem($uri, $start, $end,
|
||||
dav_compat_getRequestVar("subject"), $isallday, dav_compat_parse_text_serverside("wdcal_desc"),
|
||||
dav_compat_getRequestVar("location"), dav_compat_getRequestVar("color"), $timezone,
|
||||
isset($_REQUEST["notification"]), $_REQUEST["notification_type"], $_REQUEST["notification_value"]);
|
||||
} catch (Exception $e) {
|
||||
notification(t("Error") . ": " . $e);
|
||||
}
|
||||
dav_compat_redirect($goaway_url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
|
|
@ -1,17 +1,53 @@
|
|||
function wdcal_edit_getStartEnd() {
|
||||
"use strict";
|
||||
|
||||
var start = $("#cal_start_date").datepicker("getDate");
|
||||
var start_time = $.timePicker("#cal_start_time").getTime();
|
||||
start.setHours(start_time.getHours());
|
||||
start.setMinutes(start_time.getMinutes());
|
||||
|
||||
var end = $("#cal_end_date").datepicker("getDate");
|
||||
var end_time = $.timePicker("#cal_end_time").getTime();
|
||||
end.setHours(end_time.getHours());
|
||||
end.setMinutes(end_time.getMinutes());
|
||||
|
||||
return {"start": start, "end": end};
|
||||
}
|
||||
|
||||
function wdcal_edit_checktime_startChanged() {
|
||||
"use strict";
|
||||
var time = wdcal_edit_getStartEnd();
|
||||
if (time.start.getTime() >= time.end.getTime()) {
|
||||
var newend = new Date(time.start.getTime() + 3600000);
|
||||
$("#cal_end_date").datepicker("setDate", newend);
|
||||
$.timePicker("#cal_end_time").setTime(newend);
|
||||
}
|
||||
}
|
||||
|
||||
function wdcal_edit_checktime_endChanged() {
|
||||
"use strict";
|
||||
var time = wdcal_edit_getStartEnd();
|
||||
if (time.start.getTime() >= time.end.getTime()) {
|
||||
var newstart = new Date(time.end.getTime() - 3600000);
|
||||
$("#cal_start_date").datepicker("setDate", newstart);
|
||||
$.timePicker("#cal_start_time").setTime(newstart);
|
||||
}
|
||||
}
|
||||
|
||||
function wdcal_edit_init(dateFormat) {
|
||||
"use strict";
|
||||
|
||||
$("#cal_color").colorPicker();
|
||||
|
||||
$("#cal_start_time").timePicker({ step: 15 });
|
||||
$("#cal_end_time").timePicker();
|
||||
$("#cal_start_time").timePicker({ step: 15 }).on("change", wdcal_edit_checktime_startChanged);
|
||||
$("#cal_end_time").timePicker().on("change", wdcal_edit_checktime_endChanged);
|
||||
|
||||
$("#cal_start_date").datepicker({
|
||||
"dateFormat": dateFormat
|
||||
});
|
||||
}).on("change", wdcal_edit_checktime_startChanged);
|
||||
$("#cal_end_date").datepicker({
|
||||
"dateFormat": dateFormat
|
||||
});
|
||||
}).on("change", wdcal_edit_checktime_endChanged);
|
||||
|
||||
$("#notification").on("click change", function() {
|
||||
if ($(this).prop("checked")) $("#notification_detail").show();
|
||||
|
|
|
@ -195,6 +195,7 @@
|
|||
* {Number} Calendar height, false for page height by default.
|
||||
*/
|
||||
height:false,
|
||||
baseurl: "",
|
||||
/**
|
||||
* @description {Config} url
|
||||
* {String} Url to request calendar data.
|
||||
|
@ -1744,21 +1745,21 @@
|
|||
temparr.push(i18n.xgcalendar.time, ':</th><td class=cb-value><div id="bbit-cal-buddle-timeshow"></div></td></tr><tr><th class="cb-key">');
|
||||
temparr.push(i18n.xgcalendar.content, ':</th><td class="cb-value"><div class="textbox-fill-wrapper"><div class="textbox-fill-mid"><input id="bbit-cal-what" class="textbox-fill-input"/></div></div><div class="cb-example">');
|
||||
temparr.push(i18n.xgcalendar.example, '</div></td></tr></tbody></table><input id="bbit-cal-start" type="hidden"/><input id="bbit-cal-end" type="hidden"/><input id="bbit-cal-allday" type="hidden"/><input id="bbit-cal-quickAddBTN" value="');
|
||||
temparr.push(i18n.xgcalendar.create_event, '" type="submit"/> <SPAN id="bbit-cal-editLink" class="lk">');
|
||||
temparr.push(i18n.xgcalendar.create_event, '" type="submit"/> <a href="" class="lk bbit-cal-editLink">');
|
||||
temparr.push(i18n.xgcalendar.update_detail, ' <StrONG>>></StrONG></SPAN></div></div></div><tr><td><div id="bl1" class="bubble-corner"><div class="bubble-sprite bubble-bl"></div></div><td><div class="bubble-bottom"></div><td><div id="br1" class="bubble-corner"><div class="bubble-sprite bubble-br"></div></div></tr></tbody></table><div id="bubbleClose1" class="bubble-closebutton"></div><div id="prong2" class="prong"><div class=bubble-sprite></div></div></div>');
|
||||
temparr.push('</form>');
|
||||
var tempquickAddHanler = temparr.join("");
|
||||
var tempquickAddHandler = temparr.join("");
|
||||
temparr = null;
|
||||
$(document.body).append(tempquickAddHanler);
|
||||
$(document.body).append(tempquickAddHandler);
|
||||
buddle = $("#bbit-cal-buddle");
|
||||
$("#bubbleClose1").click(function () {
|
||||
$("#bubbleClose1").on("click", function () {
|
||||
$("#bbit-cal-buddle").css("visibility", "hidden");
|
||||
releasedragevent();
|
||||
});
|
||||
$("#bbit-cal-submitFORM").keyup(function (e) {
|
||||
$("#bbit-cal-submitFORM").on("keyup", function (e) {
|
||||
if (e.which == 27) $("#bubbleClose1").click();
|
||||
});
|
||||
$("#bbit-cal-submitFORM").submit(function (e) {
|
||||
$("#bbit-cal-submitFORM").on("submit", function (e) {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
if (option.isloading) {
|
||||
|
@ -1838,7 +1839,7 @@
|
|||
}
|
||||
return false;
|
||||
});
|
||||
buddle.mousedown(function (e) {
|
||||
buddle.on("mousedown", function (e) {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
});
|
||||
|
@ -1857,6 +1858,10 @@
|
|||
$("#bbit-cal-allday").val(isallday ? "1" : "0");
|
||||
$("#bbit-cal-start").val(start.getTime());
|
||||
$("#bbit-cal-end").val(end.getTime());
|
||||
|
||||
var addurl = option.baseurl + "new/?start=" + Math.floor($("#bbit-cal-start").val() / 1000) + "&end=" + Math.floor($("#bbit-cal-end").val() / 1000) + "&isallday=" + (isallday ? "1" : "0");
|
||||
buddle.find(".bbit-cal-editLink").attr("href", addurl);
|
||||
|
||||
buddle.css({ "visibility":"visible", left:off.left, top:off.top });
|
||||
calwhat.blur().focus(); //add 2010-01-26 blur() fixed chrome
|
||||
$(document).one("mousedown", function () {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/**
|
||||
* Name: Calendar with CalDAV Support
|
||||
* Description: A web-based calendar system with CalDAV-support. Also brings your Friendica-Contacts to your CardDAV-capable mobile phone. Requires PHP >= 5.3.
|
||||
* Version: 0.1
|
||||
* Version: 0.1.1
|
||||
* Author: Tobias Hößl <https://github.com/CatoTH/>
|
||||
*/
|
||||
|
||||
|
|
|
@ -18,8 +18,11 @@ function wdcal_addRequiredHeaders()
|
|||
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/dav/wdcal/css/main.css' . '" media="all" />' . "\r\n";
|
||||
|
||||
switch (get_config("system", "language")) {
|
||||
case "de": $a->page['htmlhead'] .= '<script type="text/javascript" src="' . $a->get_baseurl() . '/addon/dav/common/wdcal/js/wdCalendar_lang_DE.js"></script>' . "\r\n"; break;
|
||||
default: $a->page['htmlhead'] .= '<script type="text/javascript" src="' . $a->get_baseurl() . '/addon/dav/common/wdcal/js/wdCalendar_lang_EN.js"></script>' . "\r\n";
|
||||
case "de":
|
||||
$a->page['htmlhead'] .= '<script type="text/javascript" src="' . $a->get_baseurl() . '/addon/dav/common/wdcal/js/wdCalendar_lang_DE.js"></script>' . "\r\n";
|
||||
break;
|
||||
default:
|
||||
$a->page['htmlhead'] .= '<script type="text/javascript" src="' . $a->get_baseurl() . '/addon/dav/common/wdcal/js/wdCalendar_lang_EN.js"></script>' . "\r\n";
|
||||
}
|
||||
|
||||
$a->page['htmlhead'] .= '<script type="text/javascript" src="' . $a->get_baseurl() . '/addon/dav/common/wdcal/js/jquery.calendar.js"></script>' . "\r\n";
|
||||
|
@ -80,6 +83,7 @@ function wdcal_printCalendar($calendars, $calendar_preselected, $data_feed_url,
|
|||
"date_format_dm2" => $localization->dateformat_js_dm2(),
|
||||
"date_format_dm3" => $localization->dateformat_js_dm3(),
|
||||
"date_format_full" => $localization->dateformat_datepicker_js(),
|
||||
"baseurl" => $a->get_baseurl() . "/dav/wdcal/",
|
||||
);
|
||||
|
||||
$x = '
|
||||
|
@ -111,6 +115,9 @@ function wdcal_printCalendar($calendars, $calendar_preselected, $data_feed_url,
|
|||
<div class="fbutton faddbtn" style="float: right;">
|
||||
<div><a href="' . $a->get_baseurl() . '/dav/settings/"><span>' . t("Settings") . ' / ' . t("Help") . '</span></a></div>
|
||||
</div>
|
||||
<div class="fbutton addcal">
|
||||
<div><a href="' . $a->get_baseurl() . '/dav/wdcal/new/" class="addcal">' . t("New event") . '</a></div>
|
||||
</div>
|
||||
<div class="btnseparator"></div>
|
||||
<div class="fbutton showtodaybtn">
|
||||
<div><span class="showtoday">' . t("Today") . '</span></div>
|
||||
|
@ -122,7 +129,7 @@ function wdcal_printCalendar($calendars, $calendar_preselected, $data_feed_url,
|
|||
|
||||
if ($view == "day") $x .= 'fcurrent';
|
||||
|
||||
$x .= '">Tag</span></div>
|
||||
$x .= '">' . t("Day") . '</span></div>
|
||||
</div>
|
||||
<div class="fbutton showweekbtn ';
|
||||
|
||||
|
@ -199,54 +206,12 @@ function wdcal_getDetailPage($uri, $recurr_uri)
|
|||
return $uri . " / " . $recurr_uri . "<br>" . print_r($details, true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $uri
|
||||
* @param string $recurr_uri
|
||||
* @return string
|
||||
*/
|
||||
function wdcal_postEditPage($uri, $recurr_uri)
|
||||
{
|
||||
|
||||
$a = get_app();
|
||||
$localization = wdcal_local::getInstanceByUser($a->user["uid"]);
|
||||
|
||||
check_form_security_token_redirectOnErr($a->get_baseurl() . "/dav/wdcal/", "caledit");
|
||||
|
||||
if (isset($_REQUEST["allday"])) {
|
||||
$start = $localization->date_parseLocal($_REQUEST["start_date"] . " 00:00");
|
||||
$end = $localization->date_parseLocal($_REQUEST["end_date"] . " 20:00");
|
||||
$isallday = true;
|
||||
} else {
|
||||
$start = $localization->date_parseLocal($_REQUEST["start_date"] . " " . $_REQUEST["start_time"]);
|
||||
$end = $localization->date_parseLocal($_REQUEST["end_date"] . " " . $_REQUEST["end_time"]);
|
||||
$isallday = false;
|
||||
}
|
||||
|
||||
|
||||
$cals = dav_getMyCals($a->user["uid"]);
|
||||
foreach ($cals as $c) {
|
||||
$cs = wdcal_calendar_factory($a->user["uid"], $c->namespace, $c->namespace_id);
|
||||
$p = $cs->getPermissionsItem($a->user["uid"], $uri, $recurr_uri);
|
||||
if ($p["write"]) try {
|
||||
$cs->updateItem($uri, $start, $end,
|
||||
stripslashes($_REQUEST["subject"]), $isallday, wdcal_parse_text_serverside($_REQUEST["wdcal_desc"]),
|
||||
stripslashes($_REQUEST["location"]), $_REQUEST["color"], $a->timezone,
|
||||
isset($_REQUEST["notification"]), $_REQUEST["notification_type"], $_REQUEST["notification_value"]);
|
||||
} catch (Exception $e) {
|
||||
notification(t("Error") . ": " . $e);
|
||||
}
|
||||
goaway($a->get_baseurl() . "/dav/wdcal/");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $uri
|
||||
* @param string $recurr_uri
|
||||
* @return string
|
||||
*/
|
||||
function wdcal_getEditPage($uri, $recurr_uri)
|
||||
function wdcal_getEditPage($uri, $recurr_uri = "")
|
||||
{
|
||||
|
||||
$a = get_app();
|
||||
|
@ -290,8 +255,8 @@ function wdcal_getEditPage($uri, $recurr_uri)
|
|||
"Subject" => $_REQUEST["title"],
|
||||
"Location" => "",
|
||||
"Description" => "",
|
||||
"StartTime" => $_REQUEST["start"],
|
||||
"EndTime" => $_REQUEST["end"],
|
||||
"StartTime" => wdcal_php2MySqlTime($_REQUEST["start"]),
|
||||
"EndTime" => wdcal_php2MySqlTime($_REQUEST["end"]),
|
||||
"IsAllDayEvent" => $_REQUEST["isallday"],
|
||||
"Color" => null,
|
||||
"RecurringRule" => null,
|
||||
|
@ -311,10 +276,10 @@ function wdcal_getEditPage($uri, $recurr_uri)
|
|||
"Subject" => "",
|
||||
"Location" => "",
|
||||
"Description" => "",
|
||||
"StartTime" => "",
|
||||
"EndTime" => "",
|
||||
"IsAllDayEvent" => "",
|
||||
"Color" => null,
|
||||
"StartTime" => date("Y-m-d H:i:s"),
|
||||
"EndTime" => date("Y-m-d H:i:s", time() + 3600),
|
||||
"IsAllDayEvent" => "0",
|
||||
"Color" => "#5858ff",
|
||||
"RecurringRule" => null,
|
||||
);
|
||||
$notification_type = "hour";
|
||||
|
@ -322,26 +287,27 @@ function wdcal_getEditPage($uri, $recurr_uri)
|
|||
$notification = true;
|
||||
}
|
||||
|
||||
$postto = $a->get_baseurl() . "/dav/wdcal/" . ($uri == "new" ? "new/" : $uri . "/edit/");
|
||||
|
||||
$out = "<a href='" . $a->get_baseurl() . "/dav/wdcal/'>" . t("Go back to the calendar") . "</a><br><br>";
|
||||
$out .= "<form method='POST' action='" . $a->get_baseurl() . "/dav/wdcal/$uri/edit/'><input type='hidden' name='form_security_token' value='" . get_form_security_token('caledit') . "'>\n";
|
||||
$out .= "<form method='POST' action='$postto'><input type='hidden' name='form_security_token' value='" . get_form_security_token('caledit') . "'>\n";
|
||||
|
||||
$out .= "<label for='cal_subject'>Subject:</label>
|
||||
<input name='color' id='cal_color' value='" . (strlen($event["Color"]) != 7 ? "#5858ff" : escape_tags($event["Color"])) . "'>
|
||||
<input name='subject' id='cal_subject' value='" . escape_tags($event["Subject"]) . "'><br>\n";
|
||||
$out .= "<label for='cal_allday'>Is All-Day event:</label><input type='checkbox' name='allday' id='cal_allday' " . ($event["IsAllDayEvent"] ? "checked" : "") . "><br>\n";
|
||||
|
||||
$out .= "<label for='cal_startdate'>Starts:</label>";
|
||||
$out .= "<label for='cal_startdate'>" . t("Starts") . ":</label>";
|
||||
$out .= "<input name='start_date' value='" . $localization->dateformat_datepicker_php(wdcal_mySql2PhpTime($event["StartTime"])) . "' id='cal_start_date'>";
|
||||
$out .= "<input name='start_time' value='" . substr($event["StartTime"], 11, 5) . "' id='cal_start_time'>";
|
||||
$out .= "<br>\n";
|
||||
|
||||
$out .= "<label for='cal_enddate'>Ends:</label>";
|
||||
$out .= "<label for='cal_enddate'>" . t("Ends") . ":</label>";
|
||||
$out .= "<input name='end_date' value='" . $localization->dateformat_datepicker_php(wdcal_mySql2PhpTime($event["EndTime"])) . "' id='cal_end_date'>";
|
||||
$out .= "<input name='end_time' value='" . substr($event["EndTime"], 11, 5) . "' id='cal_end_time'>";
|
||||
$out .= "<br>\n";
|
||||
|
||||
$out .= "<label for='cal_location'>Location:</label><input name='location' id='cal_location' value='" . escape_tags($event["Location"]) . "'><br>\n";
|
||||
$out .= "<label for='cal_location'>" . t("Location") . ":</label><input name='location' id='cal_location' value='" . escape_tags($event["Location"]) . "'><br>\n";
|
||||
|
||||
$out .= "<label for='event-desc-textarea'>" . t("Description") . ":</label> <textarea id='event-desc-textarea' name='wdcal_desc' style='vertical-align: top; width: 400px; height: 100px;'>" . escape_tags($event["Description"]) . "</textarea>";
|
||||
$out .= "<br style='clear: both;'>";
|
||||
|
|
19
dav/main.php
19
dav/main.php
|
@ -22,7 +22,8 @@ function dav_module()
|
|||
{
|
||||
}
|
||||
|
||||
function dav_include_files() {
|
||||
function dav_include_files()
|
||||
{
|
||||
require_once (__DIR__ . "/common/dbclasses/dbclass_animexx.class.php");
|
||||
require_once (__DIR__ . "/common/dbclasses/dbclass.friendica.calendars.class.php");
|
||||
require_once (__DIR__ . "/common/dbclasses/dbclass.friendica.jqcalendar.class.php");
|
||||
|
@ -175,15 +176,29 @@ function dav_content()
|
|||
} elseif ($a->argv[1] == "wdcal") {
|
||||
if ($a->argc >= 3 && strlen($a->argv[2]) > 0) {
|
||||
$uri = $a->argv[2];
|
||||
|
||||
if ($uri == "new") {
|
||||
$o = "";
|
||||
if (isset($_REQUEST["save"])) {
|
||||
check_form_security_token_redirectOnErr($a->get_baseurl() . "/dav/wdcal/", "caledit");
|
||||
$o .= wdcal_postEditPage("new", "", $a->user["uid"], $a->timezone, $a->get_baseurl() . "/dav/wdcal/");
|
||||
}
|
||||
$o .= wdcal_getEditPage("new");
|
||||
return $o;
|
||||
} else {
|
||||
$recurr_uri = ""; // @TODO
|
||||
if (isset($a->argv[3]) && $a->argv[3] == "edit") {
|
||||
$o = "";
|
||||
if (isset($_REQUEST["save"])) $o .= wdcal_postEditPage($uri, $recurr_uri);
|
||||
if (isset($_REQUEST["save"])) {
|
||||
check_form_security_token_redirectOnErr($a->get_baseurl() . "/dav/wdcal/", "caledit");
|
||||
$o .= wdcal_postEditPage($uri, $recurr_uri, $a->user["uid"], $a->timezone, $a->get_baseurl() . "/dav/wdcal/");
|
||||
}
|
||||
$o .= wdcal_getEditPage($uri, $recurr_uri);
|
||||
return $o;
|
||||
} else {
|
||||
return wdcal_getDetailPage($uri, $recurr_uri);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$cals = dav_getMyCals($a->user["uid"]);
|
||||
$cals_show = array();
|
||||
|
|
10
dav/wdcal/Changelog.txt
Normal file
10
dav/wdcal/Changelog.txt
Normal file
|
@ -0,0 +1,10 @@
|
|||
v0.1.1
|
||||
======
|
||||
[FEATURE] A "New Event" Button in the navigation bar of the calendar is added.
|
||||
[FEATURE] When creating an event by dragging in the calendar, the "Edit Details"-Link leads to a page where the details can be added before actually creating the event.
|
||||
[BUGFIX] When editing a event, the start time cannot be set befor the end time anymore.
|
||||
[BUGFIX] Fixed some problems with Magic Quotes
|
||||
|
||||
v0.1
|
||||
======
|
||||
Initial Release
|
|
@ -107,10 +107,11 @@ a.imgbtn span.Delete
|
|||
background: url(./images/icons/delete.png) no-repeat 3px 4px;
|
||||
}
|
||||
|
||||
span.addcal
|
||||
a.addcal
|
||||
{
|
||||
padding-left:20px;
|
||||
background: url(./images/icons/date_add.png) no-repeat 1px 50%;
|
||||
color: black;
|
||||
}
|
||||
span.showdayview
|
||||
{
|
||||
|
|
BIN
facebook.tgz
BIN
facebook.tgz
Binary file not shown.
|
@ -270,9 +270,13 @@ function fb_get_friends_sync_parsecontact($uid, $contact) {
|
|||
|
||||
if(count($r)) {
|
||||
|
||||
// update profile photos once every two weeks as we have no notification of when they change.
|
||||
|
||||
$update_photo = (($r[0]['avatar-date'] < datetime_convert('','','now -14 days')) ? true : false);
|
||||
|
||||
// check that we have all the photos, this has been known to fail on occasion
|
||||
|
||||
if((! $r[0]['photo']) || (! $r[0]['thumb']) || (! $r[0]['micro'])) {
|
||||
if((! $r[0]['photo']) || (! $r[0]['thumb']) || (! $r[0]['micro']) || ($update_photo)) {
|
||||
require_once("Photo.php");
|
||||
|
||||
$photos = import_profile_photo('https://graph.facebook.com/' . $contact->id . '/picture', $uid, $r[0]['id']);
|
||||
|
|
BIN
libertree.tgz
BIN
libertree.tgz
Binary file not shown.
|
@ -32,7 +32,7 @@ function libertree_jot_nets(&$a,&$b) {
|
|||
if(intval($ltree_post) == 1) {
|
||||
$ltree_defpost = get_pconfig(local_user(),'libertree','post_by_default');
|
||||
$selected = ((intval($ltree_defpost) == 1) ? ' checked="checked" ' : '');
|
||||
$b .= '<div class="profile-jot-net"><input type="checkbox" name="libertree_enable"' . $selected . 'value="1" /> '
|
||||
$b .= '<div class="profile-jot-net"><input type="checkbox" name="libertree_enable"' . $selected . ' value="1" /> '
|
||||
. t('Post to libertree') . '</div>';
|
||||
}
|
||||
}
|
||||
|
|
BIN
notimeline.tgz
Normal file
BIN
notimeline.tgz
Normal file
Binary file not shown.
14
notimeline/notimeline.css
Normal file
14
notimeline/notimeline.css
Normal file
|
@ -0,0 +1,14 @@
|
|||
|
||||
|
||||
|
||||
#notimeline-label {
|
||||
float: left;
|
||||
width: 200px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
#notimeline-checkbox {
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
66
notimeline/notimeline.php
Normal file
66
notimeline/notimeline.php
Normal file
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
/**
|
||||
* Name: Notimeline
|
||||
* Description: Disable "Archives" widget on profile page
|
||||
* Version: 1.0
|
||||
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
function notimeline_install() {
|
||||
|
||||
register_hook('plugin_settings', 'addon/notimeline/notimeline.php', 'notimeline_settings');
|
||||
register_hook('plugin_settings_post', 'addon/notimeline/notimeline.php', 'notimeline_settings_post');
|
||||
|
||||
}
|
||||
|
||||
|
||||
function notimeline_uninstall() {
|
||||
unregister_hook('plugin_settings', 'addon/notimeline/notimeline.php', 'notimeline_settings');
|
||||
unregister_hook('plugin_settings_post', 'addon/notimeline/notimeline.php', 'notimeline_settings_post');
|
||||
|
||||
}
|
||||
|
||||
|
||||
function notimeline_settings_post($a,$post) {
|
||||
if(! local_user() || (! x($_POST,'notimeline-submit')))
|
||||
return;
|
||||
|
||||
set_pconfig(local_user(),'system','no_wall_archive_widget',intval($_POST['notimeline']));
|
||||
info( t('No Timeline settings updated.') . EOL);
|
||||
}
|
||||
|
||||
function notimeline_settings(&$a,&$s) {
|
||||
|
||||
if(! local_user())
|
||||
return;
|
||||
|
||||
/* Add our stylesheet to the page so we can make our settings look nice */
|
||||
|
||||
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/notimeline/notimeline.css' . '" media="all" />' . "\r\n";
|
||||
|
||||
/* Get the current state of our config variable */
|
||||
|
||||
$notimeline = get_pconfig(local_user(),'system','no_wall_archive_widget');
|
||||
if($notimeline === false)
|
||||
$notimeline = false;
|
||||
|
||||
$notimeline_checked = (($notimeline) ? ' checked="checked" ' : '');
|
||||
|
||||
|
||||
/* Add some HTML to the existing form */
|
||||
|
||||
$s .= '<div class="settings-block">';
|
||||
$s .= '<h3>' . t('No Timeline Settings') . '</h3>';
|
||||
$s .= '<div id="notimeline-wrapper">';
|
||||
$s .= '<label id="notimeline-label" for="notimeline-checkbox">' . t('Disable Archive selector on profile wall') . '</label>';
|
||||
$s .= '<input id="notimeline-checkbox" type="checkbox" name="notimeline" value="1" ' . $notimeline_checked . '/>';
|
||||
$s .= '</div><div class="clear"></div>';
|
||||
|
||||
/* provide a submit button */
|
||||
|
||||
$s .= '<div class="settings-submit-wrapper" ><input type="submit" name="notimeline-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
|
||||
|
||||
}
|
BIN
posterous.tgz
BIN
posterous.tgz
Binary file not shown.
|
@ -33,7 +33,7 @@ function posterous_jot_nets(&$a,&$b) {
|
|||
if(intval($pstr_post) == 1) {
|
||||
$pstr_defpost = get_pconfig(local_user(),'posterous','post_by_default');
|
||||
$selected = ((intval($pstr_defpost) == 1) ? ' checked="checked" ' : '');
|
||||
$b .= '<div class="profile-jot-net"><input type="checkbox" name="posterous_enable"' . $selected . 'value="1" /> '
|
||||
$b .= '<div class="profile-jot-net"><input type="checkbox" name="posterous_enable"' . $selected . ' value="1" /> '
|
||||
. t('Post to Posterous') . '</div>';
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
BIN
tumblr.tgz
BIN
tumblr.tgz
Binary file not shown.
|
@ -32,7 +32,7 @@ function tumblr_jot_nets(&$a,&$b) {
|
|||
if(intval($tmbl_post) == 1) {
|
||||
$tmbl_defpost = get_pconfig(local_user(),'tumblr','post_by_default');
|
||||
$selected = ((intval($tmbl_defpost) == 1) ? ' checked="checked" ' : '');
|
||||
$b .= '<div class="profile-jot-net"><input type="checkbox" name="tumblr_enable"' . $selected . 'value="1" /> '
|
||||
$b .= '<div class="profile-jot-net"><input type="checkbox" name="tumblr_enable"' . $selected . ' value="1" /> '
|
||||
. t('Post to Tumblr') . '</div>';
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue