I'm searching for a way to display the week number on the calendar. For now, I send the Year and Month to have a calendar created. I then repeat the code on the view if more calendars are needed.
I´m using the following preferences on my controller.
$prefs = array(
'start_day' => 'monday',
'month_type' => 'long',
'day_type' => 'abr'
);
View:
$thisyear = $todaysdate->format('Y');
$thismonth = $todaysdate->format('m');
echo $this->calendar->generate($thisyear,$thismonth++);
Any idea of how to do this?
@the End I need :
April 2017
|We|Mo|Tu|We|Th|Fr|Sa|Su
|13 | | | | | | |1|2|
|14 |3|4|5|6|7|8|9|
|15 |10|11|12|13|14|15|16|
|16 |17|18|19|20|21|22|23|
|17 |24|25|26|27|28|29|30|
$("table tr").each(function() {
var myTd = $(this).find("td");
var myContent = myTd.find("div[data-content]").data("content");
if(myContent != undefined) {
$(myTd).first().text(myContent);
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<th></th>
<th colspan="7">Aprile 2017</th>
</tr>
<tr>
<td>We</td>
<td>Lu</td>
<td>Ma</td>
<td>Me</td>
<td>Gi</td>
<td>Ve</td>
<td>Sa</td>
<td>Do</td>
</tr>
<tr>
<td></td>
<td><div> </div></td>
<td><div> </div></td>
<td><div> </div></td>
<td><div> </div></td>
<td><div> </div></td>
<td>
<div data-content="13">1</div>
</td>
<td>
<div data-content="13">2</div>
</td>
</tr>
<tr>
<td></td>
<td>
<div data-content="14">3</div>
</td>
<td>
<div data-content="14">4</div>
</td>
<td>
<div data-content="14">5</div>
</td>
<td>
<div data-content="14">6</div>
</td>
<td>
<div data-content="14">7</div>
</td>
<td>
<div data-content="14">8</div>
</td>
<td>
<div data-content="14">9</div>
</td>
</tr>
<tr>
<td></td>
<td>
<div data-content="15">10</div>
</td><td>
<div data-content="15">11</div>
</td><td>
<div data-content="15">12</div>
</td><td>
<div data-content="15">13</div>
</td><td>
<div data-content="15">14</div>
</td><td>
<div data-content="15">15</div>
</td><td>
<div data-content="15">16</div>
</td>
</tr>
<tr>
<td></td>
<td>
<div data-content="16">17</div>
</td><td>
<div data-content="16">18</div>
</td><td>
<div data-content="16">19</div>
</td><td>
<div data-content="16">20</div>
</td><td>
<div data-content="16">21</div>
</td><td>
<div data-content="16">22</div>
</td><td>
<div data-content="16">23</div>
</td>
</tr>
<tr>
<td></td>
<td>
<div data-content="17">24</div>
</td><td>
<div data-content="17">25</div>
</td><td>
<div data-content="17">26</div>
</td><td>
<div data-content="17">27</div>
</td><td>
<div data-content="17">28</div>
</td><td>
<div data-content="17">29</div>
</td><td>
<div data-content="17">30</div>
</td>
</tr>
</tbody>
</table>
You can make a little hack, depending on the resources you have, javascript, jQuery or else.
With this code you can generate a calendar with the week number like a parameter "data-content" on each TD and an added column for the week numbers. Then you can use jQuery to put the week value on the right TD.
$this->load->library('calendar', array (
'template' => '
{table_open}<table>{/table_open}
{heading_row_start}<tr>{/heading_row_start}
{heading_previous_cell}<th><a href="{previous_url}"><<</a></th>{/heading_previous_cell}
{heading_title_cell}<th></th><th colspan="{colspan}">{heading}</th>{/heading_title_cell}
{heading_next_cell}<th><a href="{next_url}">>></a></th>{/heading_next_cell}
{heading_row_end}</tr>{/heading_row_end}
{week_row_start}<tr><td>We</td>{/week_row_start}
{week_day_cell}<td>{week_day}</td>{/week_day_cell}
{week_row_end}</tr>{/week_row_end}
{cal_row_start}<tr><td></td>{/cal_row_start}
{cal_cell_start}<td>{/cal_cell_start}
{cal_cell_content}
<div data-content="{content}">{day}</div>
{/cal_cell_content}
{cal_cell_content_today}
<div data-content="{content}">{day}</div>
{/cal_cell_content_today}
{cal_cell_no_content}{day}{/cal_cell_no_content}
{cal_cell_no_content_today}<div>{day}</div>{/cal_cell_no_content_today}
{cal_cell_blank}<div> </div>{/cal_cell_blank}
{cal_cell_end}</td>{/cal_cell_end}
{cal_row_end}</tr>{/cal_row_end}
{table_close}</table>{/table_close}',
'start_day' => 'monday',
'month_type' => 'long',
'day_type' => 'abr',
'show_next_prev' => FALSE));
list($num_days, $month, $year) = explode(' ', date("t n Y"));
$array_days = [];
for ($i = 1; $i <= $num_days; $i++)
{
$week = (int)date('W', mktime(0, 0, 0, $month, $i, $year));
$array_days[$i] = "$week";
}
echo $this->calendar->generate($year, $month, $array_days);