News: When asking for support, it helps us and you, if you read the Posting Guidelines

Login  |  Register
HTML5 Icon HTML5 Icon
TP on Social Media
Welcome, Guest. Please login or register.
Did you miss your activation email?

October 19, 2019, 08:37:13 AM

Login with username, password and session length

Recent

Members
  • Total Members: 3756
  • Latest: Ocean
Stats
  • Total Posts: 189092
  • Total Topics: 20765
  • Online Today: 61
  • Online Ever: 629
  • (November 08, 2018, 01:36:54 PM)
Users Online
Users: 2
Guests: 43
Total: 45

Author Topic: mini-calendar links to big calendar  (Read 2505 times)

0 Members and 1 Guest are viewing this topic.

Offline brynn

  • Full Member
  • ***
  • Posts: 134
mini-calendar links to big calendar
« on: March 04, 2016, 11:48:54 PM »
Hi Friends,
I searched before coming to post this.  I didn't see anything similar to this already posted.  However, I often don't understand technical language, so maybe I just didn't recognize the problem.  Anyway, I apologize if this has been mentioned before.

I'm thinking this is possibly a bug.  But sometimes what I think should be fixed as a bug, is actually fixed with a mod, as a new feature   ???

Ok, so I have the Calendar feature disabled in my forum.  But Tiny Portal provides the Mini-Calendar block, which I've left enabled, because I find it convenient.

Recently a member was asking me about the disabled calendar, and I didn't understand how they even knew there was a disabled calendar.  Eventually I realized that when you click on any date in the MC, it links to the big Calendar.

It does produce an error message saying the calendar is disabled.  But I'm wondering if it wouldn't make more sense, if the MC links were just all disabled, when the big Calendar feature is disabled?

Note that I know very little about programming in general, and even less about SMF or TP development.  So maybe there's some reason why this can't be done.  But it seems more reasonable to me to just have those links disabled, rather than throwing an error when they're clicked.

Just a thought  :)
Thank you very much,
brynn


Offline illori

  • Administrator
  • *
  • Posts: 2051
Re: mini-calendar links to big calendar
« Reply #1 on: March 05, 2016, 04:43:49 AM »
looking at the script it is harder then it looks to tie it further into SMF.

it is possible to remove the calls to the calendar area thought

edit your block and replace the php code with the following

Code: [Select]
global $scripturl, $smcFunc;

$now = mktime();
$today = date('j',$now);
$year = date("Y",$now);
$month = date("n",$now);
$days = array($today => array(NULL, NULL, '<span class="smalltext" style="color: steelblue; font-weight: bold; border: solid 1px black; background-color: white; padding: 0px 4px 0px 4px;">'.$today.'</span>'));

$day_name_length = 3;
$month_href = $scripturl;
$first_day = 1;
$pn = array();

$first_of_month = gmmktime(0,0,0,$month,1,$year);
//remember that mktime will automatically correct if invalid dates are entered
// for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998
// this provides a built in "rounding" feature to generate_calendar()

$day_names = array(); //generate all the day names according to the current locale
for($n=0,$t=(3+$first_day)*86400; $n<7; $n++,$t+=86400) //January 4, 1970 was a Sunday
$day_names[$n] = ucfirst(gmstrftime('%A',$t)); //%A means full textual day name

list($month, $year, $month_name, $weekday) = explode(',', gmstrftime('%m,%Y,%B,%w', $first_of_month));
$weekday = ($weekday + 7 - $first_day) % 7; //adjust for $first_day
$title   = $smcFunc['htmlspecialchars'](ucfirst($month_name)).' '.$year;  //note that some locales don't capitalize month and day names

//Begin calendar. Uses a real <caption>. See http://diveintomark.org/archives/2002/07/03
@list($p, $pl) = each($pn);
@list($n, $nl) = each($pn); //previous and next links, if applicable
if($p)
$p = '<span class="smalltext">'.($pl ? '<a href="'.htmlspecialchars($pl).'">'.$p.'</a>' : $p).'</span> ';
if($n)
$n = ' <span class="smalltext">'.($nl ? '<a href="'.htmlspecialchars($nl).'">'.$n.'</a>' : $n).'</span>';
$calendar = '<table>'."\n".
'<caption >'.$p.($month_href ? ''.$title.'' : $title).$n."</caption>\n<tr>";

if($day_name_length){ #if the day names should be shown ($day_name_length > 0)
//if day_name_length is >3, the full name of the day will be printed
foreach($day_names as $d)
$calendar .= '<th class="smalltext" abbr="'.htmlentities($d).'">'.htmlentities($day_name_length < 4 ? substr($d,0,$day_name_length) : $d).'</th>';

$calendar .= "</tr>\n<tr style=\"text-align:right;\">";
}

if($weekday > 0)
$calendar .= '<td class="smalltext" colspan="'.$weekday.'"> </td>'; //initial 'empty' days
for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++){
if($weekday == 7){
$weekday   = 0; #start a new week
$calendar .= "</tr>\n<tr style=\"text-align:right;\">";
}
if(isset($days[$day]) and is_array($days[$day])){
@list($link, $classes, $content) = $days[$day];
if(is_null($content)) 
$content  = $day;
$calendar .= '<td "'.($classes ? ' class="'.htmlspecialchars($classes).'">' : '>').
($link ? '<a href="'.htmlspecialchars($link).'">'.$content.'</a>' : $content).'</td>';
}
else
{
$calendar .= "<td class=\"smalltext\" style=\"padding-right:4px;\">";
if(((($weekday+$first_day) % 7)==0)||((($weekday+$first_day) % 7)==6))
{
$calendar .= "<span style=\"color:#C00000;\"</span>";
}
$calendar .= " $day</td>";
}
}
if($weekday != 7)
$calendar .= '<td class="smalltext" colspan="'.(7-$weekday).'"> </td>'; //remaining "empty" days

echo $calendar."</tr>\n</table>\n";