Skip to content

Instantly share code, notes, and snippets.

@zag
Created February 14, 2012 07:06
Show Gist options
  • Save zag/1824385 to your computer and use it in GitHub Desktop.
Save zag/1824385 to your computer and use it in GitHub Desktop.
invites
goog.provide('con.ui.mod_invites');
goog.require('soy');
goog.require('goog.events');
goog.require('con.tmpl.mod_invites');
//goog.require('goog.ui.Container');
goog.require('goog.ui.Component');
goog.require('zag.ui.Table');
goog.require('goog.net.XhrIo');
goog.require('goog.ui.Zippy');
goog.require('wbask.form');
goog.require('goog.net.IframeIo');
goog.require('goog.ui.CustomButton');
goog.require('goog.dom.classes');
/**
* @param {Table.Rows=} table_rows
* @constructor
* @extends {goog.ui.Component}
*/
con.ui.mod_invites = function( indata, opt_renderer, opt_domHelper) {
goog.base( this, opt_renderer, opt_domHelper);
this.setModel(indata);
};
goog.inherits(con.ui.mod_invites, goog.ui.Component);
con.ui.mod_invites.prototype.formatRow = function(rowData, tr , num) {
var html = con.tmpl.mod_invites.row({
dcreate: rowData['dcreate'],
dused : rowData['dused'],
id : rowData['id'],
type : rowData['type'],
wcreate : rowData['wcreate'],
wused : rowData['wused']
});
tr.innerHTML = html;
if (! goog.isNull( rowData['dused'] ) ) return;
var bot1 = new goog.ui.CustomButton(null /* content */);
var b = this.dom_.getElementsByTagNameAndClass(undefined,'btn_cancel', tr)[0];
bot1.setEnabled(true);
bot1.setCaption("X");
bot1.setTooltip('drop');
bot1.render(b);
goog.events.listen(
bot1.getElement(),
goog.events.EventType.CLICK,
function ( e ){
this.update(rowData['id']);
}
, false, this
);
};
con.ui.mod_invites.prototype.update = function(id) {
var url = this.getModel()['url_method'];
var me = this;
var params = '';
if (id) params = "?id="+id;
goog.net.XhrIo.send(url + '/List'+params, function(e) {
// e.type will be goog.net.EventType.COMPLETE
var xhr = /** @type {goog.net.XhrIo} */ (e.target);
var responseText = xhr.getResponseText();
try {
var obj = xhr.getResponseJson();
} catch (ex) {
alert('error' + ex);
}
me.table.fillRows(me.table.tbody,obj['rows']);
}, "GET", "id="+id, {"Accept":"application/javascript"});
}
con.ui.mod_invites.prototype.fillCreate = function(cont) {
var html = con.tmpl.mod_invites.createForm({root_url: this.getModel()['url_method']});
cont.innerHTML = html;
var b1 = this.dom_.getElementsByTagNameAndClass(undefined,'invite_enter', cont)[0];
var b2 = this.dom_.getElementsByTagNameAndClass(undefined,'invite_form', cont)[0];
/* Initialize upload form*/
this.form_ = this.dom_.getElementsByTagNameAndClass("form", undefined,cont)[0];
this.input_ = this.dom_.getElementsByTagNameAndClass("input","invite_code", cont)[0];
};
con.ui.mod_invites.prototype.createDom = function() {
goog.base(this, 'createDom');
var el = this.getElement();
var make = this.getDomHelper().createDom('div');
goog.dom.appendChild(el, make);
this.fillCreate(make);
var table = new zag.ui.Table();
this.table = table;
var self = this;
table.formatRow = function(rowData, tr , num) {
self.formatRow(rowData, tr , num)
};
table.formatHead = function(thead){thead.innerHTML = con.tmpl.mod_invites.header({}) };
table.render(el);
goog.dom.classes.add(table.getElement(), 'func');
table.fillRows(table.tbody, this.getModel().rows);
}
con.ui.mod_invites.prototype.onComplete = function(e) {
var iframeIo = /** @type {goog.net.IframeIo} */ (e.target);
if (iframeIo.isSuccess()) {
var json = iframeIo.getResponseJson();
this.input_.value= json.id;
this.input_.focus();
this.input_.setSelectionRange(0,this.input_.value.length);
} else {
alert("Error");
}
iframeIo.dispose();
goog.dom.forms.setDisabled(this.form_, false);
this.update()
}
con.ui.mod_invites.prototype.enterDocument = function() {
var z1 = new goog.ui.Zippy('invite_enter', 'invite_form');
var self = this;
wbask.form.processForms(this.getElement(),{'onload': function( doc, form ){
var res = {};
var error = 0;
try {
res = eval("("+doc+")");
} catch (e) {
error=1;
res={};
}
if (!error) {
if ( ! res['error'] ) {
self.input_.value= res['id'];
self.input_.focus();
self.input_.setSelectionRange(0,self.input_.value.length);
//goog.dom.getElement("reg_status").innerHTML=" ";
} else {
alert('error');
//goog.dom.getElement("reg_status").innerHTML = res['error'];
}
} else {
alert("da");
//goog.dom.getElement("reg_status").innerHTML = "Process failure: " + e;
}
goog.dom.forms.setDisabled(self.form_, false);
self.update()
}});
/*
goog.events.listen(this.form_, goog.events.EventType.SUBMIT, function(e){
var iform = e.target;
goog.dom.appendChild( iform, this.getDomHelper().createDom(goog.dom.TagName.INPUT,{'style': 'display:none', 'type' :'hidden', 'name' : '_modal_prefer', 'value' : '1'} ));
var iframeIo = new goog.net.IframeIo();
// iform.target = iframeIo.name_;
goog.events.listen(iframeIo, goog.net.EventType.COMPLETE, this.onComplete, false, this);
goog.dom.forms.setDisabled(iform, true);
e.preventDefault();
// iform.submit();
iframeIo.sendFromForm(iform);
},true, this);
*/
}
/** @inheritDoc */
if (!COMPILED) {
wbask.onModuleLoad('con.ui.mod_invites');
}
goog.exportSymbol('window.con.ui.mod_invites', con.ui.mod_invites);
{namespace con.tmpl.mod_invites}
/**
* Table header
*/
{template .header}
<th>Создано</th><th>Кем</th><th>Использовано</th><th>Кем</th><th>Как</th><th>Код</th><th>Удалить</th>
{/template}
/**
* @param dcreate
* @param wcreate
* @param dused
* @param wused
* //param type
* @param id
*
*/
{template .row}
<td>{$dcreate}</td>
<td>{$wcreate}</td>
<td>{if $dused} {$dused} {else} ... {/if}</td>
<td>{if $wused} {$wused} {else} ... {/if}</td>
<td>Регистрация</td>
<td>{$id}</td>
<td><div class="btn_cancel"></div></td>
{/template}
/**
* @param root_url
*
*/
{template .createForm}
<h3 style="cursor: pointer;" id="invite_enter" class="invite_enter"><img style="width: 19px;height: 16px;" src="/static/css/blank.gif" /> создать приглашние для ...</h3>
<div id="invite_form">
<form action="{$root_url}/Create" method="GET" >
<div style="float:left; width: 15em">
<select id="action" name="type">
<option value="1" selected="selected">регистрация</option>
</select>
<div class="comment">тип приглашения</div>
</div>
<div style="float:left; width: 5em">
<input type="submit"/>
<div class="error-status" id="reg_status">&nbsp;</div>
</div>
</form>
<div style="clear:both;">
<input class="invite_code" value="" size="40" name="invite_code"/>
<div class="comment">код созданного приглашения</div>
</div>
</div>
{/template}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment