diff --git a/index.php b/index.php
index bcc33e4..776c268 100644
--- a/index.php
+++ b/index.php
@@ -21,6 +21,13 @@
'loginType' => 7, // username, email and hybridauth
'hybridAuthProviders' => array('Facebook', 'Twitter'),
),
+ 'role' => array(),
+ 'registration' => array(),
+ 'profile' => array(),
+ 'avatar' => array(),
+ 'usergroup' => array(),
+ 'friendship' => array(),
+ 'message' => array(),
),
'components'=>array(
'cache' => array('class' => 'system.caching.CFileCache'),
diff --git a/modules/role/views/role/admin.php b/modules/role/views/role/admin.php
index 73a68c0..7ae8c38 100644
--- a/modules/role/views/role/admin.php
+++ b/modules/role/views/role/admin.php
@@ -2,25 +2,25 @@
$this->title = Yum::t('Manage roles');
$this->breadcrumbs=array(
- Yum::t('Roles')=>array('index'),
- Yum::t('Manage'),
+ Yum::t('Roles')=>array('index'),
+ Yum::t('Manage'),
);
?>
-
-widget('zii.widgets.grid.CGridView', array(
- 'dataProvider'=>$dataProvider,
- 'columns'=>array(
- array(
- 'name' => 'title',
- 'type' => 'raw',
- 'value'=> 'CHtml::link(CHtml::encode($data->title),
- array("//role/role/view","id"=>$data->id))',
- ),
- 'price',
- 'membership_priority',
- array(
- 'class'=>'CButtonColumn',
- ),
- ),
+widget('zii.widgets.grid.CGridView', array(
+ 'dataProvider'=>$dataProvider,
+ 'columns'=>array(
+ array(
+ 'name' => 'title',
+ 'type' => 'raw',
+ 'value'=> 'CHtml::link(CHtml::encode($data->title),
+ array("//role/role/view","id"=>$data->id))',
+ ),
+ 'price',
+ 'membership_priority',
+ array(
+ 'class'=>'CButtonColumn',
+ ),
+),
)); ?>
diff --git a/modules/user/assets/js/bootstrap.min.js b/modules/user/assets/js/bootstrap.min.js
new file mode 100644
index 0000000..f9cbdae
--- /dev/null
+++ b/modules/user/assets/js/bootstrap.min.js
@@ -0,0 +1,6 @@
+/*!
+* Bootstrap.js by @fat & @mdo
+* Copyright 2012 Twitter, Inc.
+* http://www.apache.org/licenses/LICENSE-2.0.txt
+*/
+!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(".dropdown-backdrop").remove(),e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||("ontouchstart"in document.documentElement&&e('
').insertBefore(e(this)).on("click",r),s.toggleClass("open")),n.focus(),!1},keydown:function(n){var r,s,o,u,a,f;if(!/(38|40|27)/.test(n.keyCode))return;r=e(this),n.preventDefault(),n.stopPropagation();if(r.is(".disabled, :disabled"))return;u=i(r),a=u.hasClass("open");if(!a||a&&n.keyCode==27)return n.which==27&&u.find(t).focus(),r.click();s=e("[role=menu] li:not(.divider):visible a",u);if(!s.length)return;f=s.index(s.filter(":focus")),n.keyCode==38&&f>0&&f--,n.keyCode==40&&f ').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!t)return;i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,t):t()):t&&t()}};var n=e.fn.modal;e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e.fn.modal.noConflict=function(){return e.fn.modal=n,this},e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s,o,u,a;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,o=this.options.trigger.split(" ");for(a=o.length;a--;)u=o[a],u=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):u!="manual"&&(i=u=="hover"?"mouseenter":"focus",s=u=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this)));this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e.fn[this.type].defaults,r={},i;this._options&&e.each(this._options,function(e,t){n[e]!=t&&(r[e]=t)},this),i=e(t.currentTarget)[this.type](r).data(this.type);if(!i.options.delay||!i.options.delay.show)return i.show();clearTimeout(this.timeout),i.hoverState="in",this.timeout=setTimeout(function(){i.hoverState=="in"&&i.show()},i.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var t,n,r,i,s,o,u=e.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(u);if(u.isDefaultPrevented())return;t=this.tip(),this.setContent(),this.options.animation&&t.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,t[0],this.$element[0]):this.options.placement,t.detach().css({top:0,left:0,display:"block"}),this.options.container?t.appendTo(this.options.container):t.insertAfter(this.$element),n=this.getPosition(),r=t[0].offsetWidth,i=t[0].offsetHeight;switch(s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}this.applyPlacement(o,s),this.$element.trigger("shown")}},applyPlacement:function(e,t){var n=this.tip(),r=n[0].offsetWidth,i=n[0].offsetHeight,s,o,u,a;n.offset(e).addClass(t).addClass("in"),s=n[0].offsetWidth,o=n[0].offsetHeight,t=="top"&&o!=i&&(e.top=e.top+i-o,a=!0),t=="bottom"||t=="top"?(u=0,e.left<0&&(u=e.left*-2,e.left=0,n.offset(e),s=n[0].offsetWidth,o=n[0].offsetHeight),this.replaceArrow(u-r+s,s,"left")):this.replaceArrow(o-i,o,"top"),a&&n.offset(e)},replaceArrow:function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function i(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip(),r=e.Event("hide");this.$element.trigger(r);if(r.isDefaultPrevented())return;return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?i():n.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var t=this.$element[0];return e.extend({},typeof t.getBoundingClientRect=="function"?t.getBoundingClientRect():{width:t.offsetWidth,height:t.offsetHeight},this.$element.offset())},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=t?e(t.currentTarget)[this.type](this._options).data(this.type):this;n.tip().hasClass("in")?n.hide():n.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var n=e.fn.tooltip;e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},e.fn.tooltip.noConflict=function(){return e.fn.tooltip=n,this}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=(typeof n.content=="function"?n.content.call(t[0]):n.content)||t.attr("data-content"),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var n=e.fn.popover;e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:''}),e.fn.popover.noConflict=function(){return e.fn.popover=n,this}}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var n=e(this),r=n.data("target")||n.attr("href"),i=/^#\w/.test(r)&&e(r);return i&&i.length&&[[i.position().top+(!e.isWindow(t.$scrollElement.get(0))&&t.$scrollElement.scrollTop()),r]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}};var n=e.fn.scrollspy;e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=n,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}};var n=e.fn.tab;e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e.fn.tab.noConflict=function(){return e.fn.tab=n,this},e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length"+t+""})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(e){this.focused=!0},blur:function(e){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(e){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var n=e.fn.typeahead;e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'',item:' ',minLength:1},e.fn.typeahead.Constructor=t,e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this},e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))};var n=e.fn.affix;e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e.fn.affix.noConflict=function(){return e.fn.affix=n,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery);
\ No newline at end of file
diff --git a/modules/user/controllers/YumInstallController.php b/modules/user/controllers/YumInstallController.php
index 221426f..126c1db 100755
--- a/modules/user/controllers/YumInstallController.php
+++ b/modules/user/controllers/YumInstallController.php
@@ -2,7 +2,6 @@
class YumInstallController extends YumController
{
- public $layout = 'install';
public $defaultAction = 'install';
public function accessRules()
@@ -33,7 +32,6 @@ public function actionInstallation()
public function actionInstall()
{
if ($this->module->debug === true) {
-
if(!Yii::app()->user instanceof YumWebUser)
throw new CHttpException(500, Yum::t('Please make sure that Yii uses the YumWebUser component instead of CWebUser in your config/main.php components section. Please see the installation instructions.'));
@@ -44,7 +42,7 @@ public function actionInstall()
throw new CHttpException(500, 'Please set a table prefix, at least \'\', to your db configuration for yii-user-management to work.');
if(!version_compare(Yii::getVersion(), '1.1.14', '>='))
- throw new CHttpException(500, 'Please make sure to use at least Yii version 1.1.14.');
+ throw new CHttpException(500, 'Please make sure to use at least Yii version 1.1.14.');
if (Yii::app()->request->isPostRequest) {
// A associative array containing the tables to be created.
diff --git a/modules/user/models/Yum.php b/modules/user/models/Yum.php
index 8355d20..474c005 100644
--- a/modules/user/models/Yum.php
+++ b/modules/user/models/Yum.php
@@ -9,18 +9,22 @@
*/
class Yum
{
- /** Register an asset file of Yum */
- public static function register($file) {
- $url = Yii::app()->getAssetManager()->publish(dirname(__FILE__).'/../assets');
+ public static function powered() {
+ return sprintf('Yii User Management version %s.', Yum::module()->version);
+ }
+
+ /** Register an asset file of Yum */
+ public static function register($file) {
+ $url = Yii::app()->getAssetManager()->publish(dirname(__FILE__).'/../assets');
- $path = $url . '/' . $file;
- if(strpos($file, 'js') !== false)
- return Yii::app()->clientScript->registerScriptFile($path);
- else if(strpos($file, 'css') !== false)
- return Yii::app()->clientScript->registerCssFile($path);
+ $path = $url . '/' . $file;
+ if(strpos($file, 'js') !== false)
+ return Yii::app()->clientScript->registerScriptFile($path);
+ else if(strpos($file, 'css') !== false)
+ return Yii::app()->clientScript->registerCssFile($path);
- return $path;
- }
+ return $path;
+ }
public static function userStatus() {
if(Yii::app()->user->isGuest)
@@ -48,147 +52,147 @@ public static function userStatus() {
return $string;
}
- public static function hint($message)
- {
- return '' . Yum::t($message) . '
';
- }
-
- public static function getAvailableLanguages () {
- $cache_id = 'yum_available_languages';
-
- $languages = false;
- if(Yii::app()->cache)
- $languages = Yii::app()->cache->get($cache_id);
-
- if($languages===false) {
- $translationTable = Yum::module()->translationTable;
- $sql = "select language from {$translationTable} group by language";
-
- $command=Yii::app()->db->createCommand($sql);
-
- $languages=array();
- foreach($command->queryAll() as $row)
- $languages[$row['language']]=$row['language'];
-
- if(Yii::app()->cache)
- Yii::app()->cache->set($cache_id, $languages);
- }
-
- return $languages;
- }
- /* set a flash message to display after the request is done */
- public static function setFlash($message, $delay = 5000)
- {
- $_SESSION['yum_message'] = Yum::t($message);
- $_SESSION['yum_delay'] = $delay;
- }
-
- public static function hasFlash()
- {
- return isset($_SESSION['yum_message']);
- }
-
- /* retrieve the flash message again */
- public static function getFlash() {
- if(Yum::hasFlash()) {
- $message = @$_SESSION['yum_message'];
- unset($_SESSION['yum_message']);
- return $message;
- }
- }
-
- /* A wrapper for the Yii::log function. If no category is given, we
- * use the YumController as a fallback value.
- * In addition to that, the message is being translated by Yum::t() */
- public static function log($message,
- $level = 'info',
- $category = 'application.modules.user.controllers.YumController') {
- if(Yum::module()->enableLogging)
- return Yii::log(Yum::t($message), $level, $category);
- }
-
- public static function renderFlash()
- {
- if(Yum::hasFlash()) {
- echo '';
- echo Yum::getFlash();
- echo '
';
- Yii::app()->clientScript->registerScript('fade',"
- setTimeout(function() { $('.info').fadeOut('slow'); },
- {$_SESSION['yum_delay']});
- ");
- }
- }
-
- public static function p($string, $params = array()) {
- return '' . Yum::t($string, $params) . '
';
- }
-
- /** Fetch the translation string from db and cache when necessary */
- public static function t($string, $params = array(), $category = 'yum')
- {
- $language = Yii::app()->language;
-
- $cache_id = sprintf('yum_translations_%s_%s', $language, $category);
-
- $messages = false;
- if(Yii::app()->cache)
- $messages = Yii::app()->cache->get($cache_id);
-
- if($messages===false) {
- if(Yum::module()->avoidSql) {
- $translations = YumTranslation::model()->findAll(
- 'category = :category and language = :language', array(
- 'category' => $category,
- 'language' => $language,
- ));
- $messages=array();
- foreach($translations as $row)
- $messages[$row['message']]=$row->translation;
- } else {
- $translationTable = Yum::module()->translationTable;
- $sql = "select message, translation from {$translationTable} where language = :language and category = :category";
-
- $command=Yii::app()->db->createCommand($sql);
- $command->bindValue(':category',$category);
- $command->bindValue(':language',$language);
-
- $messages=array();
- foreach($command->queryAll() as $row)
- $messages[$row['message']]=$row['translation'];
- }
-
- if(Yii::app()->cache)
- Yii::app()->cache->set($cache_id, $messages);
- }
-
- if(isset($messages[$string]))
- return strtr($messages[$string], $params);
- else
- return strtr($string, $params);
- }
-
- // returns the Yii User Management module. Frequently used for accessing
- // options by calling Yum::module()->option
- public static function module($module = 'user') {
- return Yii::app()->getModule($module);
- }
-
- public static function hasModule($module) {
- return array_key_exists($module, Yii::app()->modules);
- }
-
- /**
- * Produces note: "Field with * are required"
- * @since 0.6
- * @return string
- */
- public static function requiredFieldNote()
- {
- return CHtml::tag('p',array('class'=>'note'),Yum::t(
- 'Fields with * are required.'
- ),true);
- }
+ public static function hint($message)
+ {
+ return '' . Yum::t($message) . '
';
+ }
+
+ public static function getAvailableLanguages () {
+ $cache_id = 'yum_available_languages';
+
+ $languages = false;
+ if(Yii::app()->cache)
+ $languages = Yii::app()->cache->get($cache_id);
+
+ if($languages===false) {
+ $translationTable = Yum::module()->translationTable;
+ $sql = "select language from {$translationTable} group by language";
+
+ $command=Yii::app()->db->createCommand($sql);
+
+ $languages=array();
+ foreach($command->queryAll() as $row)
+ $languages[$row['language']]=$row['language'];
+
+ if(Yii::app()->cache)
+ Yii::app()->cache->set($cache_id, $languages);
+ }
+
+ return $languages;
+ }
+ /* set a flash message to display after the request is done */
+ public static function setFlash($message, $delay = 5000)
+ {
+ $_SESSION['yum_message'] = Yum::t($message);
+ $_SESSION['yum_delay'] = $delay;
+ }
+
+ public static function hasFlash()
+ {
+ return isset($_SESSION['yum_message']);
+ }
+
+ /* retrieve the flash message again */
+ public static function getFlash() {
+ if(Yum::hasFlash()) {
+ $message = @$_SESSION['yum_message'];
+ unset($_SESSION['yum_message']);
+ return $message;
+ }
+ }
+
+ /* A wrapper for the Yii::log function. If no category is given, we
+ * use the YumController as a fallback value.
+ * In addition to that, the message is being translated by Yum::t() */
+ public static function log($message,
+ $level = 'info',
+ $category = 'application.modules.user.controllers.YumController') {
+ if(Yum::module()->enableLogging)
+ return Yii::log(Yum::t($message), $level, $category);
+ }
+
+ public static function renderFlash()
+ {
+ if(Yum::hasFlash()) {
+ echo '';
+ echo Yum::getFlash();
+ echo '
';
+ Yii::app()->clientScript->registerScript('fade',"
+ setTimeout(function() { $('.info').fadeOut('slow'); },
+ {$_SESSION['yum_delay']});
+ ");
+ }
+ }
+
+ public static function p($string, $params = array()) {
+ return '' . Yum::t($string, $params) . '
';
+ }
+
+ /** Fetch the translation string from db and cache when necessary */
+ public static function t($string, $params = array(), $category = 'yum')
+ {
+ $language = Yii::app()->language;
+
+ $cache_id = sprintf('yum_translations_%s_%s', $language, $category);
+
+ $messages = false;
+ if(Yii::app()->cache)
+ $messages = Yii::app()->cache->get($cache_id);
+
+ if($messages===false) {
+ if(Yum::module()->avoidSql) {
+ $translations = YumTranslation::model()->findAll(
+ 'category = :category and language = :language', array(
+ 'category' => $category,
+ 'language' => $language,
+ ));
+ $messages=array();
+ foreach($translations as $row)
+ $messages[$row['message']]=$row->translation;
+ } else {
+ $translationTable = Yum::module()->translationTable;
+ $sql = "select message, translation from {$translationTable} where language = :language and category = :category";
+
+ $command=Yii::app()->db->createCommand($sql);
+ $command->bindValue(':category',$category);
+ $command->bindValue(':language',$language);
+
+ $messages=array();
+ foreach($command->queryAll() as $row)
+ $messages[$row['message']]=$row['translation'];
+ }
+
+ if(Yii::app()->cache)
+ Yii::app()->cache->set($cache_id, $messages);
+ }
+
+ if(isset($messages[$string]))
+ return strtr($messages[$string], $params);
+ else
+ return strtr($string, $params);
+ }
+
+ // returns the Yii User Management module. Frequently used for accessing
+ // options by calling Yum::module()->option
+ public static function module($module = 'user') {
+ return Yii::app()->getModule($module);
+ }
+
+ public static function hasModule($module) {
+ return array_key_exists($module, Yii::app()->modules);
+ }
+
+ /**
+ * Produces note: "Field with * are required"
+ * @since 0.6
+ * @return string
+ */
+ public static function requiredFieldNote()
+ {
+ return CHtml::tag('p',array('class'=>'note'),Yum::t(
+ 'Fields with * are required.'
+ ),true);
+ }
public static function generateDemoUser($roles, $password, $status) {
$firstnames = array( 'Kacie', 'Minh', 'Tammera', 'Rocco', 'Violet', 'Suzi', 'Lavone', 'Judie', 'Nathaniel', 'Lena', 'Garth', 'Maryjane', 'Nyla', 'Marisha', 'Karla', 'Virgina', 'Conception', 'Jillian', 'Chere', 'Orpha', 'Damaris', 'Freeda', 'Rosalyn', 'Dierdre', 'Rae', 'Joel', 'Willia', 'Megan', 'Ozell', 'Enola', 'Esteban', 'Farah', 'Trevor', 'Joslyn', 'Lydia', 'Latoyia', 'Doretha', 'Kristine', 'Loraine', 'In', 'Ebonie', 'Rhiannon', 'Chase', 'Yu', 'Pamula', 'Akilah', 'Teofila', 'Elnora', 'Mike', 'Florida');
diff --git a/modules/user/views/install/start.php b/modules/user/views/install/start.php
index a1d8eba..21fe8b8 100755
--- a/modules/user/views/install/start.php
+++ b/modules/user/views/install/start.php
@@ -5,7 +5,6 @@
input { width: 100px; }
-
Yii User Management Module Installation
You are about to install the Yii User management Module version
diff --git a/modules/user/views/install/success.php b/modules/user/views/install/success.php
index 41d44e9..e7d112b 100755
--- a/modules/user/views/install/success.php
+++ b/modules/user/views/install/success.php
@@ -3,7 +3,7 @@
margin-left: 25px;
}
-
Congratulations, you have Installed the Yii User Management Module !
+
Congratulations, you have Installed the Yii User Management Module !
Don't forget to look in the Documentation in the docs/ directory to
see the module specific options that can be set in your Application
diff --git a/modules/user/views/layouts/install.php b/modules/user/views/layouts/install.php
deleted file mode 100644
index a82a83c..0000000
--- a/modules/user/views/layouts/install.php
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/modules/user/views/layouts/login.php b/modules/user/views/layouts/login.php
index d9598a0..64f6d86 100644
--- a/modules/user/views/layouts/login.php
+++ b/modules/user/views/layouts/login.php
@@ -1,23 +1,23 @@
-clientScript->registerCssFile(
- Yii::app()->getAssetManager()->publish(
- Yii::getPathOfAlias('YumModule.assets.css').'/yum.css'));
+ Yii::app()->getAssetManager()->publish(
+ Yii::getPathOfAlias('YumModule.assets.css').'/yum.css'));
$this->beginContent(Yum::module()->baseLayout); ?>
debug) {
- echo CHtml::openTag('div', array('class' => 'yumwarning'));
- echo Yum::t(
- 'You are running the Yii User Management Module {version} in Debug Mode!', array(
- '{version}' => Yum::module()->version));
- echo CHtml::closeTag('div');
+ echo CHtml::openTag('div', array('class' => 'yumwarning'));
+ echo Yum::t(
+ 'You are running the Yii User Management Module {version} in Debug Mode!', array(
+ '{version}' => Yum::module()->version));
+ echo CHtml::closeTag('div');
}
- Yum::renderFlash();
+Yum::renderFlash();
- echo $content;
+echo $content;
?>
diff --git a/modules/user/views/layouts/yum.php b/modules/user/views/layouts/yum.php
index 395a724..d8342d2 100644
--- a/modules/user/views/layouts/yum.php
+++ b/modules/user/views/layouts/yum.php
@@ -1,26 +1,28 @@
clientScript->registerCssFile(
- Yii::app()->getAssetManager()->publish(
- Yii::getPathOfAlias('YumModule.assets.css').'/yum.css'));
+ Yii::app()->getAssetManager()->publish(
+ Yii::getPathOfAlias('YumModule.assets.css').'/yum.css'));
$this->beginContent(Yum::module()->baseLayout); ?>
debug) {
- echo CHtml::openTag('div', array('class' => 'yumwarning'));
- echo Yum::t(
- 'You are running the Yii User Management Module {version} in Debug Mode!', array(
- '{version}' => Yum::module()->version));
- echo CHtml::closeTag('div');
+ echo CHtml::openTag('div', array('class' => 'container yumwarning'));
+ echo Yum::t(
+ 'You are running the Yii User Management Module {version} in Debug Mode!', array(
+ '{version}' => Yum::module()->version));
+ echo CHtml::closeTag('div');
}
+?>
-Yum::renderFlash();
+
+
+
-if(!Yii::app()->user->isGuest)
- echo $this->renderMenu();
-echo $content;
-?>
+
+
+
endContent(); ?>
diff --git a/modules/user/views/user/login.php b/modules/user/views/user/login.php
index 6ae06d8..ac910b2 100644
--- a/modules/user/views/user/login.php
+++ b/modules/user/views/user/login.php
@@ -21,23 +21,18 @@
),
),
), $model);
-?>
-
-pageTitle = Yum::t('Login');
$this->title = Yum::t('Login');
$this->breadcrumbs=array(Yum::t('Login'));
-echo CHtml::beginForm(array('//user/auth/login'));
+echo CHtml::beginForm(array('//user/auth/login'));
if(isset($_GET['action']))
echo CHtml::hiddenField('returnUrl', urldecode($_GET['action']));
-
?>
-
hasErrors()) { ?>
@@ -50,31 +45,25 @@
-
loginType & UserModule::LOGIN_BY_USERNAME)
- echo CHtml::activeLabelEx($model,'username');
+ echo CHtml::activeLabelEx($model,'username');
if(Yum::module()->loginType & UserModule::LOGIN_BY_EMAIL)
printf ('
%s * ', Yum::t('E-Mail address'));
?>
-
-
scenario == 'captcha' && CCaptcha::checkRequirements()) { ?>
-
-
- widget('CCaptcha'); ?>
-
-
+ widget('CCaptcha'); ?>
+
+
-
diff --git a/modules/user/views/user/login_debug.php b/modules/user/views/user/login_debug.php
index 0945f69..1d048d3 100644
--- a/modules/user/views/user/login_debug.php
+++ b/modules/user/views/user/login_debug.php
@@ -21,17 +21,12 @@
),
),
), $model);
-?>
-pageTitle = Yum::t('Login');
$this->title = Yum::t('Login');
$this->breadcrumbs=array(Yum::t('Login'));
-echo CHtml::beginForm(array('//user/auth/login'));
-
-if(isset($_GET['action']))
- echo CHtml::hiddenField('returnUrl', urldecode($_GET['action']));
-
+echo CHtml::beginForm(array('//user/auth/login'));
?>
@@ -52,19 +47,19 @@
?>
findAll(), 'username', 'username'));
+ YumUser::model()->findAll(), 'username', 'username'));
-printf ('
%s ', Yum::t('No password necessary since debug mode is active'));
+printf ('
%s
', Yum::t('No password necessary since debug mode is active'));
?>
-loginType & UserModule::LOGIN_BY_HYBRIDAUTH
+loginType & UserModule::LOGIN_BY_HYBRIDAUTH
&& Yum::module()->hybridAuthProviders) { ?>
-';
-foreach(Yum::module()->hybridAuthProviders as $provider)
+';
+foreach(Yum::module()->hybridAuthProviders as $provider)
echo CHtml::link(
CHtml::image(
Yii::app()->getAssetManager()->publish(
@@ -76,8 +71,6 @@
?>
-
-
@@ -87,12 +80,12 @@
if(Yum::hasModule('registration') && Yum::module('registration')->enableRegistration)
echo CHtml::link(Yum::t("Registration"),
Yum::module('registration')->registrationUrl);
-if(Yum::hasModule('registration')
+if(Yum::hasModule('registration')
&& Yum::module('registration')->enableRegistration
&& Yum::module('registration')->enableRecovery)
echo ' | ';
-if(Yum::hasModule('registration')
- && Yum::module('registration')->enableRecovery)
+if(Yum::hasModule('registration')
+ && Yum::module('registration')->enableRecovery)
echo CHtml::link(Yum::t("Lost password?"),
Yum::module('registration')->recoveryUrl);
?>
diff --git a/views/layouts/main.php b/views/layouts/main.php
index ecc1a75..9015d93 100644
--- a/views/layouts/main.php
+++ b/views/layouts/main.php
@@ -8,38 +8,73 @@
Yii User Management Demo Application>
-
-
-
-
-
+
+
diff --git a/views/site/index.php b/views/site/index.php
index 5fb3405..4b05bd3 100644
--- a/views/site/index.php
+++ b/views/site/index.php
@@ -1,6 +1,13 @@
pageTitle=Yii::app()->name; ?>
-
This is the Demo Application.
+
+
+
This is the Demo Application.
.