با تشکر از شما بینید منظور بنده کاملا واضح هست کاربری که فرم پر میکنه هر ایمیلی میتونه وارد کرده باشه توی فیلد ایمیل حتی ایمیلی که مال شخص دیگه باشه . میخواستم بدونم میشه بعد از ارسال فرم یک ایمیل تایید برای اون ایمیلی که وارد شده ارسال بشه و بعد از تایید ایمیل توی فیلد برای مدیران ارسال بشهاز چند زاویه پستتون رو خوندم ولی اصلا متوجه نشدم ....- - - Updated - - -
دوستان افزونه پیامک نوشته شده .... بقول معروف داره از حالت چرک نویس ، پاک نویس میشه و تا 2 3 روز آینده به امید خدا منتشر میشه ....
افزونه رو از پایه نوشتم و سعی کردم تمام موارد ممکن برای مدیر و مشتری توش در نظر گرفته بشه .. ... به شدت امکان شخصی سازی برای هر فرم وجود داره ....
انشالا هنگام منتشر شدن تمام ویژگی هاش رو ذکر میکنیم تا بهتر متوجه بشید ...
فرمتون رو بسازید و در تنظیمات فرم >> قسمتهای تاییدیه (صفحه بعد از پرکردن فرم) و اعلان (ایمیل) ، از برچسب های کد رهگیری استفاده کنید ....چطوری این گزینه را ایجاد کنیم ؟
به اون صورت که میفرمایید رو هنوز نداره .... ولی شما با 2 تا فرم میتونید این کارو کنید ....با تشکر از شما بینید منظور بنده کاملا واضح هست کاربری که فرم پر میکنه هر ایمیلی میتونه وارد کرده باشه توی فیلد ایمیل حتی ایمیلی که مال شخص دیگه باشه . میخواستم بدونم میشه بعد از ارسال فرم یک ایمیل تایید برای اون ایمیلی که وارد شده ارسال بشه و بعد از تایید ایمیل توی فیلد برای مدیران ارسال بشه
در مورد دومی اینکه باید فایل زبان رو ویرایش کنید ... اگه نمیتونید متن دلخواهتون رو برام پ.خ کنید تا جایگزین کنم براتون و بفرستم ...سلام ببخشید 2 تا سوال داشتمیکی اینکه توی تقویم 6 ماه اول سال 30 روزه چه جوری 31 روزه کنم؟
و اینکه در قسمت اپلود فایل چند تایی متنش میزنه فایل های را به اینجا بکشید این متن رو میشه عوض کرد؟ ممنون
function url_utf8($url){
$encoded='';
$length=mb_strlen($url);
for($i=0;$i<$length;$i++){
$encoded.='%'.wordwrap(bin2hex(mb_substr($url,$i,1)),2,'%',true);
}
return $encoded;
}
$pageURL= $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$ids_query = "id={$form_id}|{$lead_id}";
return url_utf8 ( add_query_arg("Return", $ids_query, url_utf8($pageURL) ) );
صندوق ورودی نظرسنجی نمیشه مث نظرسنجی های دیگه بشه؟الان نظرسنجی گذاشتم صندوق ورودی شده
بلی
بلی
بلی
خیر
خیر
بلی
...
http://www.gravityhelp.com/css-ready-classes-for-gravity-forms/
https://wordpress.org/plugins/gravity-forms-css-ready-selector/
من یه مشکلی با کنار هم قراردادن این قیلد ها دارم و هر کاری میکنم درست نمیشه. کسی تست کرده و نتیجه داده آیا؟
من میخوام 4 یا 5 تا فیلد رو کنار هم داشته باشم. از این کلاس ها چطور باید استفاده کنم؟سلام ؛چه جوری میخواین باشه ؟
یه سری کلاس آماده داره خود گراویتی فرم :
کد:http://www.gravityhelp.com/css-ready-classes-for-gravity-forms/
نصب کردم اما به هم ریخته میشه. نمیدونم با قالب من مشکل داره یا کلا اینجوریهیه پلاگینی هم هست که همین کار بالا رو انجام میده :
کد:https://wordpress.org/plugins/gravity-forms-css-ready-selector/
من میخوام 4 یا 5 تا فیلد رو کنار هم داشته باشم. از این کلاس ها چطور باید استفاده کنم؟داخل فایل css باید بزارمشون یا فقط استایل بدم به فیلد ها؟
نصب کردم اما به هم ریخته میشه. نمیدونم با قالب من مشکل داره یا کلا اینجوریه
دز این حد رو بلدم و انجام دادم. اما به هم ریخته میشه. حالا یه جوری درستش میکنم. راستی من میخوام با این فرم یه تایم شیت درست کنم که افراد بیان پر کنن اونو. یه راه حل میخوام برای اینکه بتونم فیلد زمان (ورود و خروج) رو از هم کسر کنم و توی یه فیلد متنی به عنوان مقدار ساعت کارکرد نمایش بدم.این کلاس ها رو باید توی قسمت ویرایشگر فرم >> قسمت پیشرفته فیلد ها >> نام کلاس CSS وارد کنید.مثلاً یه فیلد دکمه های رادیویی دارید که می خواید گزینه هاش توی سه تا ستون نمایش داده بشه باید از کلاس gf_list_3col توی این قسمت استفاده کنید.
یا مثلاً سه تا فیلد دارید که می خواید توی یک ردیف استفاده کنید برای اونی که می خواید سمت چپ باشه gf_left_third برای اونی که می خواین وسط باشه gf_middle_third و برای سمت راستی gf_right_third رو قرار بدین.
دز این حد رو بلدم و انجام دادم. اما به هم ریخته میشه. حالا یه جوری درستش میکنم. راستی من میخوام با این فرم یه تایم شیت درست کنم که افراد بیان پر کنن اونو. یه راه حل میخوام برای اینکه بتونم فیلد زمان (ورود و خروج) رو از هم کسر کنم و توی یه فیلد متنی به عنوان مقدار ساعت کارکرد نمایش بدم.آیا امکان پذیر است؟
سلام .سلام. برای تاریخ شمسی چه کاری باید انجام بشه؟ من خیلی php ایم خوب نیست. اگه خواستی پیام بزن و بگو که چه کارایی باید انجام بشه تا کمک کنم سریعتر تمومش کنی.
پس خودم باید دست به کار بشم بنویسم. ممنون بابت راهنماییخود گراویتی فرم به صورت پیش فرض توی قسمت محاسبات فیلد های تاریخ و زمان رو پشتیبانی نمی کنه.برای فیلد های تاریخ ( برای محاسبه تعداد روزها) کدی موجود هست که تست شده هست و کار می کنه اما برای فیلد زمان خودم چیزی ندیدم.
یک کاری که می تونید انجام بدید اینه که دو تا فیلد عددی (یا لیست باز شو) در نظر بگیرید ( زمان 1 و زمان 2 ) حالا یک فیلد عدد در نظر بگیرید و توی قسمت ویژگی ها فعال سازی محاسبات رو انتخاب کنید و با قرار دادن برچسب ادغام زمان 2 و علامت منفی و برچسب ادغام زمان 1 مقدار بین این دو رو حساب کنید.
بدی اینکار اینه که طرف نمیتونه بزنه 8:15 و باید بزنه 8.25 تا ساعت درست نشونه بده ولی اگه از لیست بازشو استفاده کنید می تونید فقط 8 و 8.5 و9 و 9.5 ... رو بدین تا دیگه این مشکل بوجود نیاد. اگرم خواستید برای زمان 1 و 2 از فیلد عددی استفاده کنید حداقل و حداکثر (0-24) رو بدید و یک جمله هم بنویسید که فقط مقدار صحیح را وارد کنید.
چند نفر دیگه هم توی اینترنت دنبال همچین چیزی بودند که جوابی نگرفتن ، ولی اینی که گفتم تست کردم تا همون حدی جواب میده واین مشکلاتی که گفتم رو داره.
<?php
/**
*
* Allows you to calculated the number of days between two Gravity Form date fields and populate that number into a
* field on your Gravity Form.
*
*/
class GWDayCount {
private static $script_output;
function __construct( $args ) {
extract( wp_parse_args( $args, array(
'form_id' => false,
'start_field_id' => false,
'end_field_id' => false,
'count_field_id' => false,
'include_end_date' => true,
) ) );
$this->form_id = $form_id;
$this->start_field_id = $start_field_id;
$this->end_field_id = $end_field_id;
$this->count_field_id = $count_field_id;
$this->count_adjust = $include_end_date ? 1 : 0;
add_filter( "gform_pre_render_{$form_id}", array( &$this, 'load_form_script') );
add_action( "gform_pre_submission_{$form_id}", array( &$this, 'override_submitted_value') );
}
function load_form_script( $form ) {
// workaround to make this work for < 1.7
$this->form = $form;
add_filter( 'gform_init_scripts_footer', array( &$this, 'add_init_script' ) );
if( self::$script_output )
return $form;
?>
<script type="text/javascript">
(function($){
window.gwdc = function( options ) {
this.options = options;
this.startDateInput = $( '#input_' + this.options.formId + '_' + this.options.startFieldId );
this.endDateInput = $( '#input_' + this.options.formId + '_' + this.options.endFieldId );
this.countInput = $( '#input_' + this.options.formId + '_' + this.options.countFieldId );
this.init = function() {
var gwdc = this;
// add data for "format" for parsing date
gwdc.startDateInput.data( 'format', this.options.startDateFormat );
gwdc.endDateInput.data( 'format', this.options.endDateFormat );
gwdc.populateDayCount();
// some majorly weird hacks here to work with newer versions of jQuery UI
// also resolves some issues where load order of different scripts caused issues
gwdc.startDateInput.change( function() {
gwdc.populateDayCount();
} ).datepicker( 'option', 'onSelect', function() {
$( this ).change().focus();
} );
gwdc.endDateInput.change( function() {
gwdc.populateDayCount();
} ).datepicker( 'option', 'onSelect', function() {
$( this ).change().focus();
} );
gwdc.startDateInput.datepicker();
gwdc.endDateInput.datepicker();
$( '#ui-datepicker-div' ).hide();
}
this.getDayCount = function() {
var startDate = this.parseDate( this.startDateInput.val(), this.startDateInput.data('format') )
var endDate = this.parseDate( this.endDateInput.val(), this.endDateInput.data('format') );
var dayCount = 0;
if( !this.isValidDate( startDate ) || !this.isValidDate( endDate ) )
return '';
if( startDate > endDate ) {
return 0;
} else {
var diff = endDate - startDate;
dayCount = diff / ( 60 * 60 * 24 * 1000 ); // secs * mins * hours * milliseconds
dayCount = Math.round( dayCount ) + this.options.countAdjust;
return dayCount;
}
}
this.parseDate = function( value, format ) {
if( !value )
return false;
format = format.split('_');
var dateFormat = format[0];
var separators = { slash: '/', dash: '-', dot: '.' };
var separator = format.length > 1 ? separators[format[1]] : separators.slash;
var dateArr = value.split(separator);
switch( dateFormat ) {
case 'mdy':
return new Date( dateArr[2], dateArr[0] - 1, dateArr[1] );
case 'dmy':
return new Date( dateArr[2], dateArr[1] - 1, dateArr[0] );
case 'ymd':
return new Date( dateArr[0], dateArr[1] - 1, dateArr[2] );
}
return false;
}
this.populateDayCount = function() {
this.countInput.val( this.getDayCount() ).change();
}
this.isValidDate = function( date ) {
return !isNaN( Date.parse( date ) );
}
this.init();
}
})(jQuery);
</script>
<?php
self::$script_output = true;
return $form;
}
function add_init_script( $return ) {
$start_field_format = false;
$end_field_format = false;
foreach( $this->form['fields'] as &$field ) {
if( $field['id'] == $this->start_field_id )
$start_field_format = $field['dateFormat'] ? $field['dateFormat'] : 'mdy';
if( $field['id'] == $this->end_field_id )
$end_field_format = $field['dateFormat'] ? $field['dateFormat'] : 'mdy';
}
$script = "new gwdc({
formId: {$this->form['id']},
startFieldId: {$this->start_field_id},
startDateFormat: '$start_field_format',
endFieldId: {$this->end_field_id},
endDateFormat: '$end_field_format',
countFieldId: {$this->count_field_id},
countAdjust: {$this->count_adjust}
});";
$slug = implode( '_', array( 'gw_display_count', $this->start_field_id, $this->end_field_id, $this->count_field_id ) );
GFFormDisplay::add_init_script( $this->form['id'], $slug, GFFormDisplay::ON_PAGE_RENDER, $script );
// remove filter so init script is not output on subsequent forms
remove_filter( 'gform_init_scripts_footer', array( &$this, 'add_init_script' ) );
return $return;
}
function override_submitted_value( $form ) {
$start_date = false;
$end_date = false;
foreach( $form['fields'] as &$field ) {
if( $field['id'] == $this->start_field_id )
$start_date = self::parse_field_date( $field );
if( $field['id'] == $this->end_field_id )
$end_date = self::parse_field_date( $field );
}
if( $start_date > $end_date ) {
$day_count = 0;
} else {
$diff = $end_date - $start_date;
$day_count = $diff / ( 60 * 60 * 24 ); // secs * mins * hours
$day_count = round( $day_count ) + $this->count_adjust;
}
$_POST["input_{$this->count_field_id}"] = $day_count;
}
static function parse_field_date( $field ) {
$date_value = rgpost("input_{$field['id']}");
$date_format = empty( $field['dateFormat'] ) ? 'mdy' : esc_attr( $field['dateFormat'] );
$date_info = GFCommon::parse_date( $date_value, $date_format );
if( empty( $date_info ) )
return false;
return strtotime( "{$date_info['year']}-{$date_info['month']}-{$date_info['day']}" );
}
}
# Configuration
new GWDayCount( array(
'form_id' => 16,
'start_field_id' => 1,
'end_field_id' => 2,
'count_field_id' => 4
) );
پس خودم باید دست به کار بشم بنویسم. ممنون بابت راهنمایی
ممنون از پاسخ جامع و کاملتونبرای سوال اول : کافیه آخری استایل قالب وردپرستون به کلاس های مربوطه با css استایل بدید . مثلا کلاس اون دکمه ارسال gform_button button هستش . البته یه همچین افزونه ای برای این کار وجود داره که اگه بتونیم رایگانش رو میذاریم برای استفاده :
لینک ها تنها برای اعضای سایت قابل نمایش است.
برای فونت ها هم به همین صورت هستش .. باید به کلاس مورد نظر از طریق دستور font-family استایل داده بشه .
برای پی لاین هم .. بله مشکلی نیست .. و کار میکنه ... اما صبر کنید و چند روز بعد تهیه کنید .. چون سایت پی لاین برخلاف بقیه سایتهای ارائه دهنده درگاه با آدرس فارسی مشکل داشت که این مشکل رو حل کردم ولی هنوز فرصت نکردم توی سایت جایگزین کنمش .. شما تهیه کنید بعد مجبور میشم دوباره لینک جدید رو به ایمیلتون بفرستم پس 1 2 روز صبر کنید .
باز هم ممنونو هم چنین امکانش هست که بعد از شرطی کردن فرم (نمایش فقط برای اعضا)، کاربر بتونه بعد از ورود به اکانت، تمام فرم های ارسالی خودش رو به ترتیب زمان ثبت ببینه؟ (هر کاربر فقط فرم های ثبت شده خودش رو ببینه)