Fungsi Create Jadwal dan Tampilan

parent 8c3f4e14
/**
* CSS styles for CLinkPager.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.yiiframework.com/
* @copyright Copyright &copy; 2008-2010 Yii Software LLC
* @license http://www.yiiframework.com/license/
* @since 1.0
*/
ul.yiiPager
{
font-size:11px;
border:0;
margin:0;
padding:0;
line-height:100%;
display:inline;
}
ul.yiiPager li
{
display:inline;
}
ul.yiiPager a:link,
ul.yiiPager a:visited
{
border:solid 1px #9aafe5;
font-weight:bold;
color:#0e509e;
padding:1px 6px;
text-decoration:none;
}
ul.yiiPager .page a
{
font-weight:normal;
}
ul.yiiPager a:hover
{
border:solid 1px #0e509e;
}
ul.yiiPager .selected a
{
background:#2e6ab1;
color:#FFFFFF;
font-weight:bold;
}
ul.yiiPager .hidden a
{
border:solid 1px #DEDEDE;
color:#888888;
}
/**
* Hide first and last buttons by default.
*/
ul.yiiPager .first,
ul.yiiPager .last
{
display:none;
}
\ No newline at end of file
......@@ -4,7 +4,12 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/C:/xampp/htdocs/Test/smartcard/protected/views/site/excel.php</file>
<file>file:/C:/xampp/htdocs/Test/smartcard/protected/controllers/SiteController.php</file>
<file>file:/C:/xampp/htdocs/Test/smartcard/protected/views/site/login.php</file>
<file>file:/C:/xampp/htdocs/Test/smartcard/themes/hebo/views/site/pages/elements.php</file>
<file>file:/C:/xampp/htdocs/Test/smartcard/protected/models/LoginForm.php</file>
<file>file:/C:/xampp/htdocs/Test/smartcard/protected/controllers/MJadwalController.php</file>
<file>file:/C:/xampp/htdocs/Test/smartcard/protected/views/mJadwal/_form.php</file>
</group>
</open-files>
</project-private>
......@@ -77,7 +77,8 @@ class MJadwalController extends Controller {
if (isset($_POST['DJadwal'])) {
for ($i = 0; $i < 8; $i++) {
if (!isset($_POST['formsesi'][$i])) {
if (!isset($_POST["formsesi$i"])) {
echo $i;
$detail = new DJadwal;
$detail->KODE_MK = $_POST['DJadwal'][$i]['KODE_MK'];
$detail->RUANGAN = $_POST['DJadwal'][$i]['RUANGAN'];
......@@ -118,7 +119,6 @@ class MJadwalController extends Controller {
if ($kuliah->validate()) {
$kuliah->save();
$this->redirect(array('view', 'id' => $model->ID));
} else {
echo CHtml::errorSummary($kuliah);
}
......@@ -128,6 +128,7 @@ class MJadwalController extends Controller {
}
}
}
$this->redirect(array('view', 'id' => $model->ID));
} else {
echo CHtml::errorSummary($model);
}
......@@ -184,9 +185,14 @@ class MJadwalController extends Controller {
* Lists all models.
*/
public function actionIndex() {
$dataProvider = new CActiveDataProvider('MJadwal');
$model = new MJadwal('search');
$model->unsetAttributes(); // clear any default values
if (isset($_GET['MJadwal']))
$model->attributes = $_GET['MJadwal'];
$this->render('index', array(
'dataProvider' => $dataProvider,
'model' => $model,
));
}
......@@ -300,13 +306,13 @@ class MJadwalController extends Controller {
echo Chtml::tag('option', array('value' => 'Kosong'), CHtml::encode('Free'));
}
public function actionDeskripsi() {
public function actionDeskripsi($id) {
$matkul = $_POST['Jadwal']['KODE_MK'];
$matkul = $_POST['DJadwal'][$id]['KODE_MK'];
$sql = "SELECT * FROM kurikulum WHERE KODE_MK LIKE '$matkul'";
$list = Yii::app()->db->createCommand($sql)->queryAll();
echo $list[0]['NAMA_KUL_IND'];
echo $list[0]['NAMA_KUL_IND'] . "&nbsp(" . $list[0]['SHORT_NAME'] . ")";
}
public function actionLoadChildByAjax($index) {
......
<?php
Yii::import('bootstrap.widgets.TbGridView');
/**
* A Grid View that groups rows by any column(s)
*
* @category User Interface
* @package extensions
* @author Vitaliy Potapov <noginsk@rambler.ru>
* @version 1.3
*/
class BootGroupGridView extends TbGridView {
//column values are merged independently
const MERGE_SIMPLE = 'simple';
//column values are merged if at least one value of nested columns changes (makes sense when several columns in $mergeColumns option)
const MERGE_NESTED = 'nested';
//column values are merged independently, but value is shown in first row of group and below cells just cleared (instead of `rowspan`)
const MERGE_FIRSTROW = 'firstrow';
public $mergeColumns = array();
public $mergeType = self::MERGE_SIMPLE;
public $mergeCellCss = 'text-align: center; vertical-align: middle';
//list of columns on which change extrarow will be triggered
public $extraRowColumns = array();
//expression to get value shown in extrarow
public $extraRowExpression;
//position of extraRow relative to group: 'above' | 'below'
public $extraRowPos = 'above';
//totals expression: function($data, $row, &$totals)
public $extraRowTotals;
//array with groups
private $_groups = array();
public function renderTableBody()
{
if(!empty($this->mergeColumns) || !empty($this->extraRowColumns)) {
$this->groupByColumns();
}
parent::renderTableBody();
}
/**
* find and store changing of group columns
*
* @param mixed $data
*/
public function groupByColumns()
{
$data = $this->dataProvider->getData();
if(count($data) == 0) return;
if(!is_array($this->mergeColumns)) $this->mergeColumns = array($this->mergeColumns);
if(!is_array($this->extraRowColumns)) $this->extraRowColumns = array($this->extraRowColumns);
//store columns for group. Set object for existing columns in grid and string for attributes
$groupColumns = array_unique(array_merge($this->mergeColumns, $this->extraRowColumns));
foreach($groupColumns as $key => $colName) {
foreach($this->columns as $column) {
if(property_exists($column, 'name') && $column->name == $colName) {
$groupColumns[$key] = $column;
break;
}
}
}
//storage for groups in each column
$groups = array();
//values for first row
$values = $this->getRowValues($groupColumns, $data[0], 0);
foreach($values as $colName => $value) {
$groups[$colName][] = array(
'value' => $value,
'column' => $colName,
'start' => 0,
//end - later
//totals - later
);
}
//calc totals for the first row
$totals = array();
if($this->extraRowTotals) {
$this->evaluateExpression($this->extraRowTotals, array('data'=>$data[0], 'row'=>0, 'totals' => &$totals));
}
//iterate data
for($i = 1; $i < count($data); $i++) {
//save row values in array
$current = $this->getRowValues($groupColumns, $data[$i], $i);
//define is change occured. Need this extra foreach for correctly proceed extraRows
$changedColumns = array();
foreach($current as $colName => $curValue) {
$prev = end($groups[$colName]);
if($curValue != $prev['value']) {
$changedColumns[] = $colName;
}
}
/*
if this flag = true -> we will write change for all grouping columns.
It's required when change of any column from extraRowColumns occurs
*/
$extraRowColumnChanged = (count(array_intersect($changedColumns, $this->extraRowColumns)) > 0);
/*
this changeOccured related to foreach below. It is required only for mergeType == self::MERGE_NESTED,
to write change for all nested columns when change of previous column occured
*/
$changeOccured = false;
foreach($current as $colName => $curValue) {
//value changed
$valueChanged = in_array($colName, $changedColumns);
//change already occured in this loop and mergeType set to MERGETYPE_NESTED
$saveChange = $valueChanged || ($changeOccured && $this->mergeType == self::MERGE_NESTED);
if($extraRowColumnChanged || $saveChange) {
$changeOccured = true;
$lastIndex = count($groups[$colName]) - 1;
//finalize prev group
$groups[$colName][$lastIndex]['end'] = $i - 1;
$groups[$colName][$lastIndex]['totals'] = $totals;
//begin new group
$groups[$colName][] = array(
'start' => $i,
'column' => $colName,
'value' => $curValue,
);
}
}
//if change in extrarowcolumn --> reset totals
if($extraRowColumnChanged) {
$totals = array();
}
//calc totals for that row
if($this->extraRowTotals) {
$this->evaluateExpression($this->extraRowTotals, array('data'=>$data[$i], 'row'=>$i, 'totals' => &$totals));
}
}
//finalize group for last row
foreach($groups as $colName => $v) {
$lastIndex = count($groups[$colName]) - 1;
$groups[$colName][$lastIndex]['end'] = count($data) - 1;
$groups[$colName][$lastIndex]['totals'] = $totals;
}
$this->_groups = $groups;
}
public function renderTableRow($row)
{
$extraRowEdge = null;
if(count($this->extraRowColumns)) {
$colName = $this->extraRowColumns[0];
$extraRowEdge = $this->isGroupEdge($colName, $row);
if($this->extraRowPos == 'above' && isset($extraRowEdge['start'])) {
$this->renderExtraRow($row, $extraRowEdge['group']['totals']);
}
}
/*
if($this->_changes && array_key_exists($row, $this->_changes)) {
$change = $this->_changes[$row];
//if change in extracolumns --> put extra row
$columnsInExtra = array_intersect(array_keys($change['columns']), $this->extraRowColumns);
//extraRowPos = before
if(count($columnsInExtra) > 0 && $this->extraRowPos == 'before') {
$this->renderExtraRow($row, $this->_changes[$row], $columnsInExtra);
}
}
*/
// original CGridView code
if($this->rowCssClassExpression!==null)
{
$data=$this->dataProvider->data[$row];
echo '<tr class="'.$this->evaluateExpression($this->rowCssClassExpression,array('row'=>$row,'data'=>$data)).'">';
}
else if(is_array($this->rowCssClass) && ($n=count($this->rowCssClass))>0)
echo '<tr class="'.$this->rowCssClass[$row%$n].'">';
else
echo '<tr>';
foreach($this->columns as $column) {
$isGroupColumn = property_exists($column, 'name') && in_array($column->name, $this->mergeColumns);
if(!$isGroupColumn) {
$column->renderDataCell($row);
continue;
}
//is curent row appears on edge of group
$edge = $this->isGroupEdge($column->name, $row);
switch($this->mergeType) {
case self::MERGE_SIMPLE:
case self::MERGE_NESTED:
if(isset($edge['start'])) {
$options = $column->htmlOptions;
$column->htmlOptions['rowspan'] = $edge['group']['end'] - $edge['group']['start'] + 1;
$column->htmlOptions['class'] = 'merge';
$style = isset($column->htmlOptions['style']) ? $column->htmlOptions['style'] : '';
$column->htmlOptions['style'] = $style.';'.$this->mergeCellCss;
$column->renderDataCell($row);
$column->htmlOptions = $options;
}
break;
case self::MERGE_FIRSTROW:
if(isset($edge['start'])) {
$column->renderDataCell($row);
} else {
echo '<td></td>';
}
break;
}
}
echo "</tr>\n";
//extraRowPos = after
if(count($this->extraRowColumns) && $this->extraRowPos == 'below' && isset($extraRowEdge['end'])) {
$this->renderExtraRow($row, $extraRowEdge['group']['totals']);
}
}
/**
* returns array of rendered column values (TD)
*
* @param mixed $columns
* @param mixed $rowIndex
*/
private function getRowValues($columns, $data, $rowIndex)
{
foreach($columns as $column) {
if($column instanceOf CGridColumn) {
$result[$column->name] = $this->getDataCellContent($column, $data, $rowIndex);
} elseif(is_string($column)) {
if(is_array($data) && array_key_exists($column, $data)) {
$result[$column] = $data[$column];
} elseif($data instanceOf CModel && $data->hasAttribute($column)) {
$result[$column] = $data->getAttribute($column);
} else {
throw new CException('Column or attribute "'.$column.'" not found!');
}
}
}
return $result;
}
/**
* renders extra row
*
* @param mixed $row
* @param mixed $change
*/
private function renderExtraRow($row, $totals)
{
$data = $this->dataProvider->data[$row];
if($this->extraRowExpression) { //user defined expression, use it!
$content = $this->evaluateExpression($this->extraRowExpression, array('data'=>$data, 'row'=>$row, 'totals' => $totals));
} else { //generate value
$values = array();
foreach($this->extraRowColumns as $colName) {
$values[] = CHtml::encode(CHtml::value($data, $colName));
}
$content = '<strong>'.implode(' :: ', $values).'</strong>';
}
$colspan = count($this->columns);
echo '<tr>';
echo '<td class="extrarow" colspan="'.$colspan.'">'.$content.'</td>';
echo '</tr>';
}
/**
* need to rewrite this function as it is protected in CDataColumn: it is strange as all methods inside are public
*
* @param mixed $column
* @param mixed $row
* @param mixed $data
*/
private function getDataCellContent($column, $data, $row)
{
if($column->value!==null)
$value=$column->evaluateExpression($column->value, array('data'=>$data,'row'=>$row));
else if($column->name!==null)
$value=CHtml::value($data,$column->name);
return $value===null ? $column->grid->nullDisplay : $column->grid->getFormatter()->format($value, $column->type);
}
/**
* Is current row start or end of group in particular column
*/
private function isGroupEdge($colName, $row)
{
$result = array();
foreach($this->_groups[$colName] as $index => $v) {
if($v['start'] == $row) {
$result['start'] = $row;
$result['group'] = $v;
}
if($v['end'] == $row) {
$result['end'] = $row;
$result['group'] = $v;
}
if(count($result)) break;
}
return $result;
}
}
\ No newline at end of file
Groupgridview changelog
=============================
Version 1.3 May 03, 2013
----------------------------
[enh]: added param `extraRowTotals' (@vitalets)
[enh]: added param `extraRowPos' (@vitalets)
Version 1.2 Dec 16, 2012
----------------------------
[enh #1]: Compability with Yii-Bootstrap 1.0 and above (@Yiivgeny)
Version 1.1 Apr 3, 2012
----------------------------
[bug] fixed 'name' issue with CLinkColumn & CButtonColumn (@vitalets)
[enh] added support of Bootstrap gridview (@vitalets)
Version 1.0 Apr 1, 2012
----------------------------
Initial release
\ No newline at end of file
<?php
Yii::import('zii.widgets.grid.CGridView');
/**
* A Grid View that groups rows by any column(s)
*
* @category User Interface
* @package extensions
* @author Vitaliy Potapov <noginsk@rambler.ru>
* @version 1.3
*/
class GroupGridView extends CGridView {
//column values are merged independently
const MERGE_SIMPLE = 'simple';
//column values are merged if at least one value of nested columns changes (makes sense when several columns in $mergeColumns option)
const MERGE_NESTED = 'nested';
//column values are merged independently, but value is shown in first row of group and below cells just cleared (instead of `rowspan`)
const MERGE_FIRSTROW = 'firstrow';
public $mergeColumns = array();
public $mergeType = self::MERGE_SIMPLE;
public $mergeCellCss = 'text-align: center; vertical-align: middle';
//list of columns on which change extrarow will be triggered
public $extraRowColumns = array();
//expression to get value shown in extrarow
public $extraRowExpression;
//position of extraRow relative to group: 'above' | 'below'
public $extraRowPos = 'above';
//totals expression: function($data, $row, &$totals)
public $extraRowTotals;
//array with groups
private $_groups = array();
public function renderTableBody()
{
if(!empty($this->mergeColumns) || !empty($this->extraRowColumns)) {
$this->groupByColumns();
}
parent::renderTableBody();
}
/**
* find and store changing of group columns
*
* @param mixed $data
*/
public function groupByColumns()
{
$data = $this->dataProvider->getData();
if(count($data) == 0) return;
if(!is_array($this->mergeColumns)) $this->mergeColumns = array($this->mergeColumns);
if(!is_array($this->extraRowColumns)) $this->extraRowColumns = array($this->extraRowColumns);
//store columns for group. Set object for existing columns in grid and string for attributes
$groupColumns = array_unique(array_merge($this->mergeColumns, $this->extraRowColumns));
foreach($groupColumns as $key => $colName) {
foreach($this->columns as $column) {
if(property_exists($column, 'name') && $column->name == $colName) {
$groupColumns[$key] = $column;
break;
}
}
}
//storage for groups in each column
$groups = array();
//values for first row
$values = $this->getRowValues($groupColumns, $data[0], 0);
foreach($values as $colName => $value) {
$groups[$colName][] = array(
'value' => $value,
'column' => $colName,
'start' => 0,
//end - later
//totals - later
);
}
//calc totals for the first row
$totals = array();
if($this->extraRowTotals) {
$this->evaluateExpression($this->extraRowTotals, array('data'=>$data[0], 'row'=>0, 'totals' => &$totals));
}
//iterate data
for($i = 1; $i < count($data); $i++) {
//save row values in array
$current = $this->getRowValues($groupColumns, $data[$i], $i);
//define is change occured. Need this extra foreach for correctly proceed extraRows
$changedColumns = array();
foreach($current as $colName => $curValue) {
$prev = end($groups[$colName]);
if($curValue != $prev['value']) {
$changedColumns[] = $colName;
}
}
/*
if this flag = true -> we will write change for all grouping columns.
It's required when change of any column from extraRowColumns occurs
*/
$extraRowColumnChanged = (count(array_intersect($changedColumns, $this->extraRowColumns)) > 0);
/*
this changeOccured related to foreach below. It is required only for mergeType == self::MERGE_NESTED,
to write change for all nested columns when change of previous column occured
*/
$changeOccured = false;
foreach($current as $colName => $curValue) {
//value changed
$valueChanged = in_array($colName, $changedColumns);
//change already occured in this loop and mergeType set to MERGETYPE_NESTED
$saveChange = $valueChanged || ($changeOccured && $this->mergeType == self::MERGE_NESTED);
if($extraRowColumnChanged || $saveChange) {
$changeOccured = true;
$lastIndex = count($groups[$colName]) - 1;
//finalize prev group
$groups[$colName][$lastIndex]['end'] = $i - 1;
$groups[$colName][$lastIndex]['totals'] = $totals;
//begin new group
$groups[$colName][] = array(
'start' => $i,
'column' => $colName,
'value' => $curValue,
);
}
}
//if change in extrarowcolumn --> reset totals
if($extraRowColumnChanged) {
$totals = array();
}
//calc totals for that row
if($this->extraRowTotals) {
$this->evaluateExpression($this->extraRowTotals, array('data'=>$data[$i], 'row'=>$i, 'totals' => &$totals));
}
}
//finalize group for last row
foreach($groups as $colName => $v) {
$lastIndex = count($groups[$colName]) - 1;
$groups[$colName][$lastIndex]['end'] = count($data) - 1;
$groups[$colName][$lastIndex]['totals'] = $totals;
}
$this->_groups = $groups;
}
public function renderTableRow($row)
{
$extraRowEdge = null;
if(count($this->extraRowColumns)) {
$colName = $this->extraRowColumns[0];
$extraRowEdge = $this->isGroupEdge($colName, $row);
if($this->extraRowPos == 'above' && isset($extraRowEdge['start'])) {
$this->renderExtraRow($row, $extraRowEdge['group']['totals']);
}
}
/*
if($this->_changes && array_key_exists($row, $this->_changes)) {
$change = $this->_changes[$row];
//if change in extracolumns --> put extra row
$columnsInExtra = array_intersect(array_keys($change['columns']), $this->extraRowColumns);
//extraRowPos = before
if(count($columnsInExtra) > 0 && $this->extraRowPos == 'before') {
$this->renderExtraRow($row, $this->_changes[$row], $columnsInExtra);
}
}
*/
// original CGridView code
if($this->rowCssClassExpression!==null)
{
$data=$this->dataProvider->data[$row];
echo '<tr class="'.$this->evaluateExpression($this->rowCssClassExpression,array('row'=>$row,'data'=>$data)).'">';
}
else if(is_array($this->rowCssClass) && ($n=count($this->rowCssClass))>0)
echo '<tr class="'.$this->rowCssClass[$row%$n].'">';
else
echo '<tr>';
foreach($this->columns as $column) {
$isGroupColumn = property_exists($column, 'name') && in_array($column->name, $this->mergeColumns);
if(!$isGroupColumn) {
$column->renderDataCell($row);
continue;
}
//is curent row appears on edge of group
$edge = $this->isGroupEdge($column->name, $row);
switch($this->mergeType) {
case self::MERGE_SIMPLE:
case self::MERGE_NESTED:
if(isset($edge['start'])) {
$options = $column->htmlOptions;
$column->htmlOptions['rowspan'] = $edge['group']['end'] - $edge['group']['start'] + 1;
$column->htmlOptions['class'] = 'merge';
$style = isset($column->htmlOptions['style']) ? $column->htmlOptions['style'] : '';
$column->htmlOptions['style'] = $style.';'.$this->mergeCellCss;
$column->renderDataCell($row);
$column->htmlOptions = $options;
}
break;
case self::MERGE_FIRSTROW:
if(isset($edge['start'])) {
$column->renderDataCell($row);
} else {
echo '<td></td>';
}
break;
}
}
echo "</tr>\n";
//extraRowPos = after
if(count($this->extraRowColumns) && $this->extraRowPos == 'below' && isset($extraRowEdge['end'])) {
$this->renderExtraRow($row, $extraRowEdge['group']['totals']);
}
}
/**
* returns array of rendered column values (TD)
*
* @param mixed $columns
* @param mixed $rowIndex
*/
private function getRowValues($columns, $data, $rowIndex)
{
foreach($columns as $column) {
if($column instanceOf CGridColumn) {
$result[$column->name] = $this->getDataCellContent($column, $data, $rowIndex);
} elseif(is_string($column)) {
if(is_array($data) && array_key_exists($column, $data)) {
$result[$column] = $data[$column];
} elseif($data instanceOf CModel && $data->hasAttribute($column)) {
$result[$column] = $data->getAttribute($column);
} else {
throw new CException('Column or attribute "'.$column.'" not found!');
}
}
}
return $result;
}
/**
* renders extra row
*
* @param mixed $row
* @param mixed $change
*/
private function renderExtraRow($row, $totals)
{
$data = $this->dataProvider->data[$row];
if($this->extraRowExpression) { //user defined expression, use it!
$content = $this->evaluateExpression($this->extraRowExpression, array('data'=>$data, 'row'=>$row, 'totals' => $totals));
} else { //generate value
$values = array();
foreach($this->extraRowColumns as $colName) {
$values[] = CHtml::encode(CHtml::value($data, $colName));
}
$content = '<strong>'.implode(' :: ', $values).'</strong>';
}
$colspan = count($this->columns);
echo '<tr>';
echo '<td class="extrarow" colspan="'.$colspan.'">'.$content.'</td>';
echo '</tr>';
}
/**
* need to rewrite this function as it is protected in CDataColumn: it is strange as all methods inside are public
*
* @param mixed $column
* @param mixed $row
* @param mixed $data
*/
private function getDataCellContent($column, $data, $row)
{
if($column->value!==null)
$value=$column->evaluateExpression($column->value, array('data'=>$data,'row'=>$row));
else if($column->name!==null)
$value=CHtml::value($data,$column->name);
return $value===null ? $column->grid->nullDisplay : $column->grid->getFormatter()->format($value, $column->type);
}
/**
* Is current row start or end of group in particular column
*/
private function isGroupEdge($colName, $row)
{
$result = array();
foreach($this->_groups[$colName] as $index => $v) {
if($v['start'] == $row) {
$result['start'] = $row;
$result['group'] = $v;
}
if($v['end'] == $row) {
$result['end'] = $row;
$result['group'] = $v;
}
if(count($result)) break;
}
return $result;
}
}
groupgridview
=============
Yii extension to group data in your grid
Please see **[demo](http://groupgridview.demopage.ru)** for details
\ No newline at end of file
......@@ -20,11 +20,13 @@ class LoginForm extends CFormModel {
public function rules() {
return array(
// username and password are required
array('username, password', 'required'),
array('username, password', 'required',
'message' => '{attribute} tidak boleh kosong.'),
// rememberMe needs to be a boolean
array('rememberMe', 'boolean'),
// password needs to be authenticated
array('password', 'authenticate'),
array('password', 'authenticate',
'message' => '{attribute} salah.'),
);
}
......@@ -45,7 +47,7 @@ class LoginForm extends CFormModel {
if (!$this->hasErrors()) {
$this->_identity = new UserIdentity($this->username, $this->password);
if (!$this->_identity->authenticate())
$this->addError('password', 'Incorrect username or password.');
$this->addError('password', 'Username atau Password salah.');
}
}
......
......@@ -85,11 +85,11 @@ class MJadwal extends CActiveRecord {
$criteria = new CDbCriteria;
$criteria->compare('ID', $this->ID);
$criteria->compare('WEEK', $this->WEEK);
$criteria->compare('ID', $this->ID, true);
$criteria->compare('WEEK', $this->WEEK, true);
$criteria->compare('TANGGAL', $this->TANGGAL, true);
$criteria->compare('TA', $this->TA);
$criteria->compare('ID_KUR', $this->ID_KUR);
$criteria->compare('TA', $this->TA, true);
$criteria->compare('ID_KUR', $this->ID_KUR, true);
$criteria->compare('KELAS', $this->KELAS, true);
return new CActiveDataProvider($this, array(
......
<?php
$kelas = "41B";
$mata_kuliah = "IF411111";
$model = BeritaAcaraDaftarHadir::model()->findAllByAttributes(array('TANGGAL'=>$message, 'KODE_MK'=>$mata_kuliah));
$model2 = Jadwal::model()->findAllByAttributes(array('TANGGAL'=>$message, 'KODE_MK'=>$mata_kuliah));
$model3 = BeritaAcaraDaftarHadir::model()->findAllByAttributes(array('TANGGAL'=>$message, 'KODE_MK'=>$mata_kuliah));
$mkul = Kurikulum::model()->findByAttributes(array('KODE_MK'=>$mata_kuliah));
$dosen = Pengajar::model()->findByAttributes(array('KODE_MK'=>$mata_kuliah));
$criteriaDataIb = new CDbCriteria();
$criteriaDataIb->condition = 'KODE_MK = :kodemk';
$criteriaDataIb->order = 'ID DESC';
$criteriaDataIb->limit = 1;
$criteriaDataIb->params = array('kodemk' => $mata_kuliah);
$tajaran = Jadwal::model()->find($criteriaDataIb);
$kelas = "41B";
$mata_kuliah = "IF411111";
$model = BeritaAcaraDaftarHadir::model()->findAllByAttributes(array('TANGGAL' => $message, 'KODE_MK' => $mata_kuliah));
$model2 = Jadwal::model()->findAllByAttributes(array('TANGGAL' => $message, 'KODE_MK' => $mata_kuliah));
$model3 = BeritaAcaraDaftarHadir::model()->findAllByAttributes(array('TANGGAL' => $message, 'KODE_MK' => $mata_kuliah));
$mkul = Kurikulum::model()->findByAttributes(array('KODE_MK' => $mata_kuliah));
$dosen = Pengajar::model()->findByAttributes(array('KODE_MK' => $mata_kuliah));
$criteriaDataIb = new CDbCriteria();
$criteriaDataIb->condition = 'KODE_MK = :kodemk';
$criteriaDataIb->order = 'ID DESC';
$criteriaDataIb->limit = 1;
$criteriaDataIb->params = array('kodemk' => $mata_kuliah);
$tajaran = Jadwal::model()->find($criteriaDataIb);
$imagePath=Yii::getPathOfAlias('application.icons');
$baseUrl = Yii::app()->assetManager->publish($imagePath);
$imagePath = Yii::getPathOfAlias('application.icons');
$baseUrl = Yii::app()->assetManager->publish($imagePath);
?>
<table>
<tr>
......@@ -100,31 +100,32 @@
<tr style="background-color:gray";>
<td width="70">SESI</td>
<?php
foreach($model2 as $item2)
{
foreach ($model2 as $item2) {
?>
<td width="30"><?php echo $item2['SESSION']; ?></td>
<?php
}
?>
</tr>
<?php
<?php
$x = 1;
foreach($model as $item)
{
?>
foreach ($model as $item) {
?>
<tr>
<td><?php echo $x; ?></td>
<td><?php echo $item['NIM']; ?></td>
<td colspan="2"><?php $nama = Dim::model()->findByAttributes(array('NIM'=>$item['NIM'])); echo $nama->NAMA; ?></td>
<td><?php echo $item['STATUS']?></td>
<td><?php echo $item['STATUS']?></td>
<td><?php echo $item['STATUS']?></td>
<td colspan="2"><?php
$nama = Dim::model()->findByAttributes(array('NIM' => $item['NIM']));
echo $nama->NAMA;
?></td>
<td><?php echo $item['STATUS'] ?></td>
<td><?php echo $item['STATUS'] ?></td>
<td><?php echo $item['STATUS'] ?></td>
</tr>
<?php
<?php
$x += 1;
}
?>
?>
</table>
\ No newline at end of file
......@@ -3,17 +3,16 @@
<table style="border-collapse:collapse;background:white">
<tr>
<td style="background:#cccccc;width:50%;"><center>
<h2>Choose the Date!<h2><hr>
<td style="background:#cccccc;width:50%;">
<h2>Choose the Date!</h2><hr>
</td>
<td style="background:#e4e4e4;width:50%;">
<center>
<?php $this->widget('ext.simple-calendar.SimpleCalendarWidget'); ?></center>
</td>
<td>&nbsp;&nbsp;</td>
<td align="right" valign="middle" border="4"> <center>
<center><?php $this->widget('ext.simple-calendar.SimpleCalendarWidget'); ?></center>
</td>
<td>&nbsp;</td>
<td align="right" valign="middle" border="4">
<h2>
Laporan Berita Acara tanggal <?php echo $wew ?>
<center>Laporan Berita Acara tanggal <?php echo $wew ?></center>
</h2>
<hr>
<?php
......@@ -66,9 +65,9 @@
),
),
));
?></center>
</td>
?>
</td>
<tr>
</table>
</tr>
</table>
......@@ -9,19 +9,19 @@ $form = $this->beginWidget('booster.widgets.TbActiveForm', array(
<div class="row" style="width:200px;float: left;">
<?php echo CHtml::activeLabelEx($model, '[' . $index . ']name'); ?>
<?php echo CHtml::activeTextField($model, '[' . $index . ']name', array('size' => 20, 'maxlength' => 255)); ?>
<?php echo CHtml::error($model, '[' . $index . ']name'); ?>
<?php echo CHtml::activeTextField($model, '[' . $index . ']name', array('size' => 20, 'maxlength' => 255)); ?>
<?php echo CHtml::error($model, '[' . $index . ']name'); ?>
</div>
<div class="row" style="width:200px;float: left;">
<?php echo CHtml::activeLabelEx($model, '[' . $index . ']age'); ?>
<?php echo CHtml::activeTextField($model, '[' . $index . ']age'); ?>
<?php echo CHtml::error($model, '[' . $index . ']age'); ?>
<?php echo CHtml::activeTextField($model, '[' . $index . ']age'); ?>
<?php echo CHtml::error($model, '[' . $index . ']age'); ?>
</div>
<div class="row" style="width:100px;float: left;">
<br />
<?php echo CHtml::link('Delete', '#', array('onclick' => 'deleteChild(this, ' . $index . '); return false;'));
?>
<?php echo CHtml::link('Delete', '#', array('onclick' => 'deleteChild(this, ' . $index . '); return false;'));
?>
</div>
</div>
......
......@@ -88,7 +88,7 @@ echo $form->dropDownListGroup(
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('MJadwal/matkul'),
// 'update' => '#' . CHtml::activeID($djadwal, '[' . $a . ']KODE_MK')
'update' => '#DJadwal_0_KODE_MK,#DJadwal_1_KODE_MK,#DJadwal_2_KODE_MK,#DJadwal_3_KODE_MK,#DJadwal_4_KODE_MK,#DJadwal_5_KODE_MK,#DJadwal_6_KODE_MK,#DJadwal_7_KODE_MK'
),
),
)
......@@ -104,7 +104,7 @@ echo $form->dropDownListGroup(
<?php // echo $form->textFieldGroup($djadwal, '[' . $i . ']SESSION', array('widgetOptions' => array('htmlOptions' => array('class' => 'span5', 'placeholder' => 'Sesi')))); ?>
Sesi Kosong ? <input type="checkbox" name="formsesi[]" value="Yes" />
Sesi Kosong ? <input type="checkbox" name="formsesi<?php echo $i ?>" value="Yes" />
<BR>
<BR>
<?php
......@@ -120,14 +120,15 @@ echo $form->dropDownListGroup(
'htmlOptions' => array(
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('Jadwal/deskripsi'),
'update' => '#agan'
'url' => CController::createUrl('MJadwal/deskripsi&id=' . $i),
'update' => "#matkul$i"
)
),
)
)
);
?>
<div id="matkul<?php echo $i; ?>" class="alert alert-info"></div>
<?php
$data = CHtml::listData(Ruangan ::model()->findAll(), 'ID', 'SHORT_NAME');
......
<?php
$this->breadcrumbs=array(
'Mjadwals'=>array('index'),
$this->breadcrumbs = array(
'Mjadwals' => array('index'),
'Manage',
);
$this->menu=array(
array('label'=>'List MJadwal','url'=>array('index')),
array('label'=>'Create MJadwal','url'=>array('create')),
$this->menu = array(
array('label' => 'List MJadwal', 'url' => array('index')),
array('label' => 'Create MJadwal', 'url' => array('create')),
);
Yii::app()->clientScript->registerScript('search', "
......@@ -31,26 +31,30 @@ return false;
or <b>=</b>) at the beginning of each of your search values to specify how the comparison should be done.
</p>
<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button btn')); ?>
<?php echo CHtml::link('Advanced Search', '#', array('class' => 'search-button btn')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
'model'=>$model,
)); ?>
<?php
$this->renderPartial('_search', array(
'model' => $model,
));
?>
</div><!-- search-form -->
<?php $this->widget('booster.widgets.TbGridView',array(
'id'=>'mjadwal-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
<?php
$this->widget('booster.widgets.TbGridView', array(
'id' => 'mjadwal-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
'ID',
'WEEK',
'TANGGAL',
'TA',
'ID_KUR',
'KELAS',
array(
'class'=>'booster.widgets.TbButtonColumn',
),
),
)); ?>
array(
'class' => 'booster.widgets.TbButtonColumn',
),
),
));
?>
......@@ -3,10 +3,174 @@
</div>
<?php
$this->widget('booster.widgets.TbListView', array(
'dataProvider' => $dataProvider,
'itemView' => '_view',
));
// Script
Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
$('.search-form').toggle();
return false;
});
$('.search-form form').submit(function(){
$.fn.yiiGridView.update('mjadwal-grid', {
data: $(this).serialize()
});
return false;
});
");
Yii::app()->clientScript->registerScript('re-install-date-picker', "
function reinstallDatePicker(id, data) {
//use the same parameters that you had set in your widget else the datepicker will be refreshed by default
$('#datepicker_for_TANGGAL').datepicker(jQuery.extend({showMonthAfterYear:false},jQuery.datepicker.regional['en'],{'dateFormat':'yy-mm-dd'}));
}
");
?>
<?php
$this->widget('booster.widgets.TbGridView', array(
'id' => 'mjadwal-grid',
'dataProvider' => $model->search(),
'emptyText' => 'Data tidak ditemukan',
'summaryText' => 'Daftar Jadwal {start} - {end} dari {count}',
'afterAjaxUpdate' => 'reinstallDatePicker', // (#1)
'filter' => $model,
'columns' => array(
array(
'header' => 'Minggu',
'name' => 'WEEK',
'value' => '$data->WEEK',
),
array(
'header' => 'Tanggal',
'name' => 'TANGGAL',
'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model' => $model,
'attribute' => 'TANGGAL',
'language' => 'en',
'i18nScriptFile' => 'jquery.ui.datepicker-en.js',
'defaultOptions' => array(
'showOn' => 'focus',
'dateFormat' => 'yy-mm-dd',
'showOtherMonths' => true,
'selectOtherMonths' => true,
'changeMonth' => true,
'changeYear' => true,
),
'htmlOptions' => array(
'size' => '10', // textField size
'maxlength' => '10', // textField maxlength
'id' => 'datepicker_for_TANGGAL',
),
), true),
),
array(
'header' => 'Kelas',
'name' => 'KELAS',
'value' => '$data->KELAS',
),
array(
'header' => 'Tahun Ajaran',
'name' => 'TA',
'value' => '$data->TA',
),
array(
'header' => 'Kurikulum',
'name' => 'ID_KUR',
'value' => '$data->ID_KUR',
),
array(
'class' => 'booster.widgets.TbButtonColumn',
),
),
));
?>
<?php
//$this->widget('zii.widgets.grid.CGridView', array(
// 'id' => 'jadwal-grid',
// 'dataProvider' => $dataProvider->search(),
// 'emptyText' => 'Data tidak ditemukan',
// 'summaryText' => 'Daftar Jadwal {start} - {end} dari {count}',
// 'emptyText' => 'Data tidak ditemukan',
// 'filter' => $dataProvider,
// 'afterAjaxUpdate' => 'reinstallDatePicker', // (#1)
// 'columns' => array(
// array(
// 'header' => 'Minggu',
// 'name' => 'WEEK',
//// 'filter' => CHtml::listData(DaftarPelanggaran::model()->findAll(), 'ID', 'DESKRIPSI'),
// 'value' => '$data->WEEK',
// ),
// array(
// 'header' => 'Tanggal',
// 'name' => 'TANGGAL',
//// 'filter' => CHtml::listData(DaftarPelanggaran::model()->findAll(), 'ID', 'DESKRIPSI'),
// 'value' => '$data->TANGGAL',
// ),
// array(
// 'header' => 'Kelas',
// 'name' => 'KELAS',
//// 'filter' => CHtml::listData(DaftarPelanggaran::model()->findAll(), 'ID', 'DESKRIPSI'),
// 'value' => '$data->KELAS',
// ),
// array(
// 'header' => 'Tahun Ajaran',
// 'name' => 'TA',
//// 'filter' => CHtml::listData(DaftarPelanggaran::model()->findAll(), 'ID', 'DESKRIPSI'),
// 'value' => '$data->TA',
// ),
// array(
// 'header' => 'Kurikulum',
// 'name' => 'ID_KUR',
//// 'filter' => CHtml::listData(DaftarPelanggaran::model()->findAll(), 'ID', 'DESKRIPSI'),
// 'value' => '$data->ID_KUR',
// ),
//// array(
//// 'header' => 'Pelapor',
//// 'name' => 'PENGGUNA',
//// 'filter' => CHtml::listData(Pengguna::model()->findAll(), 'USERNAME', 'NAMA'),
//// 'value' => '$data->pengguna->NAMA',
//// ),
//// array(
//// 'header' => 'Mahasiswa',
//// 'name' => 'MAHASISWA',
//// 'filter' => CHtml::listData(Mahasiswa::model()->findAll(), 'USERNAME', 'NIM'),
//// 'value' => '$data->mahasiswa->NIM',
//// ),
//// array(
//// 'header' => 'Tanggal Kejadian',
//// 'name' => 'TANGGAL',
//// 'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', array(
//// 'model' => $model,
//// 'attribute' => 'TANGGAL',
//// 'language' => 'en',
//// 'i18nScriptFile' => 'jquery.ui.datepicker-en.js',
//// 'defaultOptions' => array(
//// 'showOn' => 'focus',
//// 'dateFormat' => 'yy-mm-dd',
//// 'showOtherMonths' => true,
//// 'selectOtherMonths' => true,
//// 'changeMonth' => true,
//// 'changeYear' => true,
//// ),
//// 'htmlOptions' => array(
//// 'size' => '10', // textField size
//// 'maxlength' => '10', // textField maxlength
//// 'id' => 'datepicker_for_TANGGAL',
//// ),
//// ), true),
//// //'value' => '$data->TANGGAL',
//// ),
//// array(
//// 'header' => 'Aksi',
//// 'class' => 'CButtonColumn',
//// 'template' => '{view}{addsanksi}',
//// 'buttons' => array(
//// 'addsanksi' => array(
//// 'label' => 'Beri Sanksi',
//// 'imageUrl' => Yii::app()->theme->baseUrl . '/img/ico/addSanksi.png',
//// 'url' => 'Yii::app()->createUrl(\'sanksi/addsanksi\',array(\'id\'=>\'\'.$data->ID.\'\'))',
//// ),
//// ),
//// ),
// ),
//));
?>
......@@ -2,17 +2,13 @@
/* @var $this SiteController */
/* @var $model LoginForm */
/* @var $form CActiveForm */
$this->pageTitle = Yii::app()->name . ' - Login';
$this->breadcrumbs = array(
'Login',
);
?>
<div class="well">
<center>
<h1>Login</h1>
<h1>Login</h1>
<div class="form">
<BR>
<div class="form">
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'login-form',
......@@ -52,8 +48,17 @@ $this->breadcrumbs = array(
<BR>
<div class="row buttons">
<?php echo CHtml::submitButton('Login'); ?>
<?php
$this->widget('booster.widgets.TbButton', array(
'buttonType' => 'submit',
'context' => 'primary',
'label' => 'Masuk',
));
?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
</div><!-- form -->
</center>
</div>
\ No newline at end of file
......@@ -19,14 +19,14 @@
<div class="row-fluid">
<ul class="thumbnails right">
<li class="span4">
<div class="thumbnail right">
<h3>Choose your Date of attendence</h3><hr>
<?php $this->widget('ext.simple-calendar.SimpleCalendarWidget'); ?>
<div>
</li>
<li class="span8">
<div class="thumbnail">
<h3>Berita Acara</h3><hr>
<?php $collapse = $this->beginWidget('ext.booster.widgets.TbCollapse'); ?>
<div class="panel-group" id="accordion">
......@@ -34,7 +34,7 @@
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="">
Berita Acara Hari ini
Jadwal Hari ini
</a>
</h4>
</div>
......@@ -52,9 +52,14 @@
$this->widget(
'booster.widgets.TbGridView', array(
'dataProvider' => $gridDataProvider,
'emptyText' => 'Jadwal Tidak Ada',
'template' => "{items}",
'columns' => array(
array(
'header' => 'No',
'value' => '$this->grid->dataProvider->pagination->offset + $row+1', // row is zero based
),
array(
'header' => 'Kelas',
'value' => '$data->iddetailjadwal->idjadwal->KELAS',
),
......@@ -74,21 +79,33 @@
'header' => 'Aktifitas',
'value' => '$data->iddetailjadwal->AKTIFITAS',
),
array(
'header' => 'Aksi',
'class' => 'booster.widgets.TbButtonColumn',
'template' => '{view}',
'viewButtonUrl' => 'Yii::app()->createUrl(\'djadwal/view\',array(\'id\'=>\'\'.$data->iddetailjadwal->ID.\'\'))',
),
),
)
);
//'ID', 'SESSION', 'TA', 'ID_KUR', 'KODE_MK', 'KELAS', 'TANGGAL', 'TOPIK'
?>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
<script type="text/javascript" src="<?php echo Yii::app()->theme->baseUrl; ?>/js/nivo-slider/jquery.nivo.slider.pack.js"></script>
<script type="text/javascript">
<script type="text/javascript" src="<?php echo Yii::app()->theme->baseUrl; ?>/js/nivo-slider/jquery.nivo.slider.pack.js"></script>
<script type="text/javascript">
$(function() {
$('#slider-nivo').nivoSlider({
effect: 'boxRandom',
......@@ -96,10 +113,10 @@
controlNav: false
});
});
</script> <!--<script type="text/javascript">
$(document).ready(function() {
</script> <!--<script type="text/javascript">
$(document).ready(function() {
$('#slider-nivo2').nivoSlider();
});
</script>-->
});
</script>-->
<?php $this->endWidget(); ?>
\ No newline at end of file
<?php $this->endWidget(); ?>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment