This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Admin Page Framework

Description

Reduce the Time Spent for Plugin and Theme Development

One of the time-consuming part of developing WordPress plugins and themes is creating setting pages. As you more and more write plugins and themes, you will soon realize major part of code can be reused. Admin Page Framework aims to provide reusable code that eliminates the necessity of writing repeated code over and over again.

You will have more organized means of building option pages with the framework. Extend the library class and pass your arrays defining the form elements to the predefined class methods. The library handles all the complex coding behind the scene and creates the pages and the forms for you.

Create Essential Page and Form Components for Your Users

  • Top-level Page, Sub Pages, and In-page Tabs – where your users will access to operate your plugin or theme.
  • Forms – to let your users store their options.
  • Custom Post Types – and the custom columns in the post listing table.
  • Custom Taxonomies and Fields – store options associated with a taxonomy in the taxonomy definition page.
  • Meta Boxes and Fields – store meta data associated with posts of set post types. Also meta boxes can be added to the pages created with the framework.
  • Widgets and Fields – display modular outputs based on the user’s settings in the front end.
  • Network Admin Pages and Forms – create admin pages in the newtork admin area of WordPress multi-sites.

Construct Simple Yet Complex Setting Forms

  • Section Tabs – form sections can be displayed in a tabbed box.
  • Collapsible Sections – form sections can be collapsed and expanded.
  • Repeatable Sections and Fields – dynamically add/remove form sections and fields.
  • Sortable Sections and Fields – drag and drop form sections and fields to change the order.
  • Nested Sections and Fields – nest sections and fields to construct complex forms.
  • Import and Export Options – buttons that the user can import and export settings by uploading and downloading text files.
  • Reset Button – let your users to initialize the saved options.
  • Validation and Error Messages – with the pre-defined validation callbacks, the user’s submitting form data can be verified. Furthermore, by setting the error array, you can display the error message to the user.
  • Contextual Help Pane – help information can be added to the contextual help pane that appears at the top right of each screen.
  • Custom Field Types – your own field type can be registered. This allows you to design own fields such as a combination of a checkbox with a text field.
  • Contact Form – receive emails of user feedback and issue reports sent via the contact form embedded in an admin page.
  • Tooltips – add a small pop-up box beside section and field title for the users to read about the option.

Produce a Series of Products with the Framework Extensibility

If you are planning to create a product possibly extended with an unlimited number of add-ons, take advantage of the framework’s native extensibility. The created admin pages and forms will become highly extensible with the automatically created hooks. In other words, it empowers other developers to customize your plugin or theme. That will result on making your projects grow.

Also, use the framework as a library and your plugin or theme does not have to require an extra dependency to be installed. Therefore, your product will be perfectly portable.

Built-in Field Types

  • text – a normal field to enter text input.
  • password – a masked text input field.
  • textarea – a text input field with multiple lines. It supports TinyMCE rich text editor.
  • radio – a set of radio buttons that lets the user pick an option.
  • checkbox – a check box that lets the user enable/disable an item.
  • select – a drop-down list that lest the user pick one or more item(s) from a list.
  • hidden – a hidden field that will be useful to insert invisible values.
  • file – a file uploader that lets the user upload files.
  • image – a custom text field with the image uploader script that lets the user set an image URL.
  • media – a custom text field with the media uploader script that lets the user set a file URL.
  • color – a custom text field with the color picker script.
  • submit – a submit button that lets the user send the form.
  • export – a custom submit field that lets the user export the stored data.
  • import – a custom combination field of the file and the submit fields that let the user import data.
  • posttype – a set of check-lists of taxonomies enabled on the site in a tabbed box.
  • taxonomy – check-lists of taxonomies enabled on the site in a tabbed box.
  • size – a combination field of the text and the select fields that let the user set sizes with a selectable unit.
  • section_title – a text field placed in the section title to let the user name the section.
  • system – displays the site system information.
  • inline_mixed – consists of inline elements of fields with different field types.

Bundled Custom Field Types

With custom field types, you can create more detailed customized field outputs. The demo component includes the following example custom field types.

  • sample – a sample custom field type with a JavaScript script.
  • github – displays GitHub buttons.
  • path – lets the user select file paths on the server.
  • toggle – lets the user toggle a switch button.
  • no_ui_slider – lets the user set values between ranges with a slider.
  • select2 – lets the user select items from a predefined list which cam be populated with AJAX.
  • post_type_taxonomy – lets the user select taxonomy terms of selected post types.

If you want a field type that are not listed here, you can check the field type pack or request a new one in the forum.

Getting Started

To get started, go to Dashboard -> Admin Page Framework -> About -> Getting Started.

Demo

Activate the demo pages to see the possible features of the framework. To activate it, go to Dashboard -> Admin Page Framework -> Add Ons -> Demo.

Documentation

Notes: this framework does not do anything by itself. If you are not a developer, you do not need this.

Use Unique Page Slug

The framework internally uses the add_submenu_page() function to register sub menu pages. When the same page slug is registered for multiple root pages, only the last registered callback gets triggered. The other ones will be ignored.

This means if you choose a very simple page slug such as about for your plugin/theme’s information page and then if there is another plugin using the same page slug, your users will get either of your page or the other.

To avoid this, make sure to use a unique page slug. One way to do that is to add a prefix like apf_about.

Use the files generated with the component generator

There is one thing you need to be careful when you include the framework: the framework version conflicts. Imagine you publish a plugin using the framework v3.4.6 and your plugin user installs a plugin using the framework v3.0.0 which is below your framework version. If the other plugin loads earlier than yours, your plugin may not work properly and vice versa.

There is a way to avoid such a conflict: change the PHP class names of the framework you include. All the class names have the prefix AdminPageFramework so just change it to something like MyPlugin_AdminPageFramework.

Go to Dashboard -> Admin Page Framework -> Tools -> Generator. Set the prefix in the option field and download the files.

If you do not modify the framework class names, you are supposed to extend the AdminPageFramework factory class.

class MyAdminPage extends AdminPageFramework {
    ...
}

When you modify the framework class names, make sure you extend the class with the modified name.

class MyAdminPage extends MyPlugin_AdminPageFramework {
    ...
}

For more detailed instruction, go to Dashboard -> Admin Page Framework -> About -> Getting Started.

By the time WordPress’s minimum required PHP version becomes 5.3 or higher, we can use name spaces then this problem will be solved.

Change Framework’s System Messages

The default messages defined by the framework can be changed. For example, when you import a setting with the framework, the setting notice “The options have been updated.” will be displayed.

If you want to change it to something else, modify the oMsg object. It has the aMessages public property array holding all the messages that the framework uses.

Get comfortable with the ‘attributes’ array argument

In each field definition array, you can set the attributes arguments which defines the HTML attributes of the field so that you can modify the output of the field by passing attribute values.

The argument accepts the values as an array. Each element represents the attribute’s name and value. The array key corresponds to the name of the attribute and the value to the attribute value.

For example,

array(
    'field_id'      => 'interval',
    'title'         => __( 'Interval', 'task-scheduler' ),
    'type'          => 'number',
    'attributes'    => array(
        'min'   => 0,
        'step'  => 1,
        'max'   => 24,
    ),
),

In addition, you can change the attributes of the following container elements by setting their key and passing a nested attribute array.

  • fieldrow – the td tag element containing the field output.
  • fieldset – the fieldset tag element containing the field output.
  • fields – the div tag element containing the sub-fields and the main field.
  • field – the div tag element containing each field.

This submit button will float right.

array(
    'field_id'          => 'submit',
    'type'              => 'submit',
    'save'              => false,
    'value'             => __( 'Save', 'task-scheduler' ),
    'label_min_width'   => 0,
    'attributes'        => array(
        'field' => array(
            'style' => 'float:right; clear:none; display: inline;',
        ),
    ),
)

For meta box and widget form fields (as they have slightly different styling than generic admin pages),

array(
    'field_id'          => 'submit_in_meta_box',
    'type'              => 'submit',
    'save'              => false,
    'show_title_column' => false,
    'label_min_width'   => 0,
    'attributes'        => array(
        'field' => array(
            'style' => 'float:right; width:auto;',
        ),
    ),
),

Change Preview Image Size of the ‘image’ Field Type

To specify a custom size to the preview element of the image field type, set an attribute array like the below, where 300px is the max width.

array(
    'field_id'      => 'my_image_field_id',
    'title'         => __( 'Image', 'admin-page-framework-demo' ),
    'type'          => 'image',
    'attributes'    => array(
        'preview' => array(
            'style' => 'max-width: 200px;',
        ),
    ),
),

Display items of ‘radio’ field type one per line

To display radio button items one per line, set the label_min_width to 100%.

array(
    'field_id'          => 'my_radio_field_id',
    'title'             => __( 'Radio Button', 'admin-page-framework-demo' ),
    'type'              => 'radio',
    'label_min_width'   => '100%',
    'label'             => array(
        'a' => __( 'This is a.', 'admin-page-framework-demo' ),
        'b' => __( 'This is b.', 'admin-page-framework-demo' ),
        'c' => __( 'This is a.', 'admin-page-framework-demo' )c
    ),
),

Set default field value

To set the initial value of a field, use the default argument in the field definition array.

array(
    'field_id'  => 'my_text_field_id',
    'title'     => __( 'My Text Input Field', 'admin-page-framework-demo' ),
    'type'      => 'text',
    'default'   => 'This text will be displayed for the first time that the field is displayed and will be overridden when a user set an own value.',
),

Always display a particular value in a field

The value argument in the definition array can suppress the saved value. This is useful when you want to set a value from a different data source or create a wizard form that stores the data in a custom location.

array(
    'field_id'  => 'my_text_field_id',
    'title'     => __( 'My Text Input Field', 'admin-page-framework-demo' ),
    'type'      => 'text',
    'value'     => 'This will be always set.',
),

If it is a repeatable field, set values in numerically indexed sub-elements.

array(
    'field_id'      => 'my_text_field_id',
    'title'         => __( 'My Text Input Field', 'admin-page-framework-demo' ),
    'type'          => 'text',
    'repeatable'    => true,
    'value'         => 'the first value',
    array(
        'value' => 'the second value',
    ),
    array(
        'value' => 'the third value',
    ),
),

Alternately, you may use the options_{instantiated class name} filter to suppress the options so that setting the value argument is not necessary.
See examples, https://gist.github.com/michaeluno/c30713fcfe0d9d45d89f, https://gist.github.com/michaeluno/fcfac27825aa8a35b90f,

Screenshots

  • Text Fields
  • Selector and Checkboxes
  • Image, Media, and File Upload
  • Form Input Verification
  • Import and Export
  • Taxonomy and Post Type Checklists
  • Color Pickers and Buttons
  • Custom Post Type and Meta Box
  • Contextual Help Pane
  • Taxonomy Field
  • Meta Boxes in Pages Added by Framework
  • Repeatable Sections, Section Tabs and Section Title Field
  • Widget Form

Installation

  1. Upload admin-page-framework.zip via Dashboard -> Plugins -> Add New -> Upload Plugin.
  2. Activate it.

For usage instructions to get started, go to Dashboard -> Admin Page Framework -> About -> Getting Started and create your first plugin.

FAQ

About the Project

What is this for?

This is a PHP class-based WordPress library that helps to create option pages and form fields in the administration area. In addition, it helps to manage to save, export, and import options.

Who needs it?

WordPress plugin/theme developers who publish own products and want to speed up creating setting forms, widgets, contact form etc. and don’t want to require their users to install extra dependencies.

Do my plugin/theme users have to install Admin Page Framework?

No. Include the generated framework files in your distribution package. You can generate your own framework files via Dashboard -> Admin Page Framework -> Tools -> Generator.

Where can I get the framework files to include?

Go to Dashboard -> Admin Page Framework -> Tools -> Generator and download the files.

Does my commercial product incorporating your framework library have to be released under GPL2v+?

No. The loader plugin is released under GPLv2 or later but the library itself is released under MIT. Make sure to include only the library file.

Does the framework work with WordPress Multi-site?

Yes, it works with WordPress MU.

Technical Questions

Can I set a custom post type as a root page?

Yes. For built-in root menu items or to create your own ones, you need to use the setRootMenuPage() method. For root pages of custom post types, use setRootMenuPageBySlug().

$this->setRootMenuPageBySlug( 'edit.php?post_type=apf_posts' );

How do I retrieve the stored options?

The framework stores them as an organized multidimensional array in the options table in a single row. So use the get_option() function and pass the instantiated class name as the key or the custom key if you specify one in the constructor.

For instance, if your instantiated class name is APF then the code would be

$my_options = get_option( 'APF' );

And the option data is formed as an array with a structure like the following.

$my_options = array(
    // field id => field value
    'field_a' => 'value for field a'
    'field_b' => 'value for field b'
    ...
    // section id => array(
    //      field id => value,
    // )
    'section_a' => array(
        'field_a' => 'value for field_a of section_a',
        'field_b' => 'value for field_b of section_b',
        ...
    ),
    'section_b' => array(
        'field_a' => 'value for field_a of section_b',
        'field_b' => 'value for field_b of section_b',
        ...
    ),
    ...
);

If you are new to PHP, you may feel uncomfortable dealing with multi-dimensional arrays because you would need to call isset() so many times. The framework has a utility method to help retrieve values of multi-dimensional arrays.

$_oUtil = new AdminPageFramework_WPUtility;
$value  = $_oUtil->getElement(
    $my_options,    // (required) subject array
    array( 'key_in_the_first_depth', 'key_in_the_second_depth' ),   // (required) dimensional path
    'My Default Value Here' // (optional) set your default value in case a value is not set
);

So for example, if you need to retrieve the value of field_a in section_b, you can do something like this.

$value = $_oUtil->getElement(
    $my_options,
    array( 'section_b', 'field_a' ),
    'some default value'
);

In the framework factory class, you can access the utility object as it is defined already.

$value = $this->oUtil->getElement( $subject, $keys, $default );

Is it possible to use a custom options data for the form instead of the ones used by the framework?

Yes, there are two main means to achieve that.

  1. Use the value argument in the field definition array to suppress the displaying value in the field.
    See an example. https://gist.github.com/michaeluno/fb4088b922b71710c7fb

  2. Override the options array set to the entire form using the options_{instantiated class name} filter hook or pre-defined method.
    See an example. https://gist.github.com/michaeluno/fcfac27825aa8a35b90f

When you go with the second method, make sure to pass an empty string, '', to the first parameter of the constructor so that it disables the ability to store submitted form data into the options table.

new MyAdminPage( '' );

How can I add sub-menu pages to the top-level page created by the framework from a separate script?

Say, in your main plugin, your class MyAdminPageClassA created a top-level page. In your extension plugin, you want to add sub-menu pages from another instance MyAdminPageClassB.

In the setUp() method of MyAdminPageClasB, pass the instantiated class name of the main plugin that created the root menu, MyAdminPageClassA, to the setRootMenuPageBySlug() method.

$this->setRootMenuPageBySlug( 'MyAdminPageClassA' );

Another option is to use the set_up_{class name} action hook. The callback method receives the admin page class object and you can access the framework methods to add sub-menu pages.

class ThirdPartyScript {

    public function __construct() {
        add_action( 'set_up_' . 'MyAdminPageClassA', array( $this, 'replyToAddSubMenuPages' ) );
    }

    public function replyToAddSubMenuPages( $oAdminPage ) {

        $oAdminPage->addSubMenuPage(
            array(
                'page_slug' => 'my_admin_page_b',
                'title'     => __( 'Example', 'your-text-domain' ),
                'order'     => 20,
            )
        );

    }

}
new ThirdPartyScript;

See an example.

I want my users to install the loader plugin but do not want to display any visuals of the loader plugin. Is there a way to disable it?

Enable the silent mode of the loader plugin by setting the APFL_SILENT_MODE constant in your script.

define( 'APFL_SILENT_MODE', true );

Can I create pages in the network admin area?

Yes, See the demo.

Some of my users claim they cannot save options. What would be a possible cause?

  • max_input_vars of PHP settings. If this value is small and there are lots of form input elements, the user may not be able to save the options.

To increase the value, edit php.ini and add the following line where 10000 is the increased number.

max_input_vars = 10000
  • max_allowed_packet of MySQL settings. Try increasing this value in the my.ini or my.cnf file.

The 500M in the following line is where the increased value should be set.

max_allowed_packet=500M

Please keep in mind that these are just a few of many possibilities. If you encounter a situation that prevented the user from saving options, please report.

My class is getting too big by defining predefined callback methods. Is there a way to separate those?

Yes. The predefine method names also serve as a WordPress filter/action hook name. So you can just add callbacks to those hooks from a separate file.

For example, if you want to move your method content_my_page_slug(), then you would do something like,

function getMyPageContent( $sContent ) {
    return $sContent . ' additional contents here.';
}
add_filter( 'content_my_page_slug', 'getMyPageContent' );

IF you want to move your method load_my_page_slug(), then you would do something like,

function loadMyPage( $oFactory ) {
    // do something when the page loads.
}
add_action( 'load_my_page_slug', 'loadMyPage' );

Custom field types do not seem to show up. What did I do wrong?

Most likely, you have not registered the field type. The check-box in Generator will include the field type files in the zip archive and their paths in the list for the auto-loader loaded by the framework bootstrap file.

This essentially eliminates the use of include() or require(), meaning you can call the custom field type files without using include(). However, the field type is not registered by itself yet.

In order to use a custom field type, you need to instantiate the field type class by passing the extended framework class name. For example, if your framework class name is MyPlugin_AdminPageFramework and the field type class name is Select2CustomFieldType, then you need to do

new Select2CustomFieldType( 'MyPlugin_AdminPageFramework' );

Do this in the setUp() method in your extended framework class.

public function setUp() {
    new Select2CustomFieldType( 'MyPlugin_AdminPageFramework' );
}

This enables the select2 custom field type for the class MyPlugin_AdminPageFramework, not for the other classes. So essentially, do this for every class that uses the field type.

I cannot find what I’d like to do in tutorials and documentation. Where else should I look for more information?

  • You may directly read the code of the demo plugin. The demo plugin code is located in the example directory.
  • Ask questions in the support forum.

Getting Involved

I’ve written a useful class, functions, and even custom field types that will be useful for others! Do you want to include it?

The GitHub repository is available. Raise an issue first and we’ll see if changes can be made.

How can I contribute to this project?

There are various ways to do so. Please refer to the contribution guideline.

How can I contribute to improving the documentation?

You are welcome to submit documentation. Please follow the Documentation Guideline.

In addition, your tutorials and snippets for the framework can be listed in the manual. Let us know it here.

More FAQ Items

Check out the questions tagged as FAQ on GitHub.

Tutorials

Index

Roadmap

Check out the milestones and issues on GitHub labeled enhancement.

Reviews

June 10, 2021 1 reply
This is terrific topnotch stuff. Before this, every time I reinvented the wheel on options pages, I came up with a flat tire. By the time it was ready to go it had a lot of patches and spaghetti stuck to the walls. But this stuff just works. And my code is clear enough that I can see what I did two years from now. Offer: If you need a collaborator to work on docs, let me know.
April 21, 2021
Estamos muy contentos con la eficacia del desarrollador, tarda poquísimo en corregir un bug, ?es super atento!
December 1, 2020
Thanks for this awesome plugin! For a next release/feature it would be awesome to have the possibility to have subsections/tabs like WooCommerce settings pages for more advanced settings pages.
February 13, 2019
seems its the one that I was looking for the only problem I faced with that at start is its css that is incompatible with rtl page
September 3, 2016
Admin page framework or nothing! If you are not using this framework for your theme or plugin development, then you are developing the hard way. Good documentation, awesome support. I can develop from simple to more complex admin options with ease. What more would you expect as a developer. Give it a try and you will never go back. Thanks for the awesome code ??
Read all 23 reviews

Contributors & Developers

“Admin Page Framework” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Admin Page Framework” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

3.9.1 – 2022/04/14

  • Added the mime_types argument for the image and media field types.
  • Fixed a bug that setting notices set with setSettingNotice() of classes extending the post type factory class were not displayed.
  • Changed the behavior of the color field type by triggering a change event after setting a new value.
  • Changed the behavior of the custom image uploader by triggering a change event after setting a new value.

3.9.0 – 2022/03/02

  • Refined tooltips.
  • Refined the path custom field type due to the deprecation of the jQueryFileTree library and switching to jstree, which involves deprecation of some arguments and UI improvements.
  • Added the table built-in field type.
  • Added the contact built-in field type.
  • Added the selector argument to the select2 custom field type that enables to show/hide elements on selection.
  • Added the ability for tooltips to include a tags.
  • Added the width argument for the tip field argument.
  • Added the ability to insert included custom field type labels in the file header comment of the compiled bootstrap file.
  • Fixed a bug that sortable sections could not be sorted in some cases.
  • Fixed an issue that field repeat buttons and labels of the color field type are hidden by the color picker pallet in recent WordPress versions.
  • Fixed an issue that tooltips created with the tip field argument made the document width wider than the initial width.
  • Fixed an issue that class names and text domains of sub-files of custom field types were not converted when building.
  • Changed the default argument value of save of the submit field type to false.
  • Changed the behavior of loading framework resources (stylesheets and JavaScript scripts) from internally to externally for most cases.
  • Changed the tab label Generator to Compiler.
  • Deprecated the email argument of the submit field type.

Old Change Log

See here

VIP777 login Philippines Ok2bet PRIZEPH online casino Mnl168 legit PHMAYA casino Login Register Jilimacao review Jl777 slot login 90jili 38 1xBet promo code Jili22 NEW com register Agila Club casino Ubet95 WINJILI ph login WINJILI login register Super jili168 login Panalo meaning VIP JILI login registration AGG777 login app 777 10 jili casino Jili168 register Philippines APALDO Casino link Weekph 50JILI APP Jilievo xyz PH365 casino app 18JL login password Galaxy88casino com login superph.com casino 49jili login register 58jili JOYJILI apk Jili365 asia ORION88 LOGIN We1win withdrawal FF777 casino login Register Jiligo88 philippines 7777pub login register Mwgooddomain login SLOTSGO login Philippines Jili188 App Login Jili slot 777 Jili88ph net Login JILIMACAO link Download Gcash jili login GG777 download Plot777 app download VIPPH register Peso63 jili 365.vip login Ttjl casino link download Super Jili 4 FC178 casino - 777 slot games JILIMACAO Philippines S888 register voslot LOVE jili777 DOWNLOAD FK777 Jili188 app CG777 app 188 jili register 5JILI login App Download Pkjili login Phdream Svip slot Abcjili6 App Fk777 vip download Jili888 register 49jili VIPPH register Phmacao co super Taya777 link Pogo88 real money Top777 app VIP777 slot login PHMACAO 777 login APALDO Casino link Phjili login Yaman88 promo code ME777 slot One sabong 888 login password PHMAYA casino Login Register tg777 customer service 24/7 Pogibet slot Taya777 org login register 1xBet live Acegame888 OKBet registration JILIASIA Promotion Nice88 voucher code AgilaClub Gaming Mnl168 link Ubet95 free 50 PHMAYA casino login JLBET 08 Pb777 download 59superph Nice88 bet sign up bonus Jiliyes SG777 download apk bet88.ph login JILIPARK casino login Register Philippines PHMAYA APK CC6 casino login register mobile PHMACAO com download MWPLAY app JILIPARK Download Jili999 register link download Mnl646 login Labet8888 download 30jili jilievo.com login Jollibee777 open now LOVEJILI 11 18JL casino login register Philippines JILIKO register Philippines login Jililuck 22 WJPESO casino PHMAYA casino login Jili777 login register Philippines Ttjl casino link download W888 login Register Galaxy88casino com login OKBet legit tg777 customer service 24/7 Register ROYAL888 Plot777 login Philippines BigWin Casino real money PHLOVE 18JL PH 18JL casino login register Philippines SG777 Pro Taya777 pilipinong sariling casino Jiligames app MNL168 free bonus YesJili Casino Login 100 Jili casino no deposit bonus FC178 casino free 100 Mwcbet Download Jili888 login Gcash jili download JILIMACAO 123 Royal888 vip 107 Nice888 casino login Register FB777 link VIPPH app download PHJOIN 25 Ubet95 legit phcash.vip log in Rrrbet Jilino1 games member deposit category S888 live login FF777 download FC777 VIP APK ME777 slot Peso 63 online casino OKGames app Joyjili customer service superph.com casino FB777 Pro Rbet456 PH cash online casino Okbet Legit login taruhan77 11 VIPPH 777Taya win app Gogo jili 777 Plot777 login register Bet99 app download Jili8989 NN777 VIP JP7 fuel Wjevo777 download Jilibet donnalyn login Register Bossjili ph download 58jili login registration YE7 login register FC777 new link login 63win register Crown89 JILI no 1 app Jili365 asia JLBET Casino 77PH fun Jili777 download APK Jili8 com log in CC6 casino login register mobile ph365.com promotion phjoin.com login register 77PH VIP Login download Phdream live chat Jlslot2 Me777 download Xojili legit PLDT 777 casino login Super Jili Ace Phdream 44 login Win888 casino JP7 Bp17 casino login TTJL Casino register FB777 slot casino Jili games online real money phjoin.com login register BET99 careers ORION88 LOGIN Plot777 login Philippines Labet8888 login JILI Official Pogibet app download PH777 casino register LOVEJILI app Phvip casino VIP jili casino login PHMACAO app 777pnl legit YE7 casino online Okbet download CC6 bet app 63win club Osm Jili GCash LOVEJILI 11 Www jililive com log in Jili58 casino SuperAce88 JiliLuck Login Acegame 999 777pnl promo code MWPLAY good domain login Philippines Pogo88 app Bet casino login Superph98 18jl app download BET999 App EZJILI gg 50JILI VIP login registration Jilino1 new site pogibet.com casino Jili Games try out Gogojili legit 1xBet Aviator WINJILI ph login Jili168 register How to play Jili in GCash 777pnl PHDream register login JILISM slot casino apk FB777 c0m login EZJILI Telegram MWCASH88 APP download Jili88 vip03 APaldo download 1xBet 58JL Casino 58jl login register Jili scatter gcash OKJL slot jili22.net register login 10phginto APaldo 888 app download 1xBet live FC178 Voucher Code 58jl Jili888 ph Login 365 Jili casino login no deposit bonus JP7 VIP login PHBET Login registration 58jili login registration VVJL online Casino Club app download Jili77 login register Jili88 ph com download KKJILI casino WJ peso app Slot VIP777 BigWin69 app Download Nice88 bet Suhagame philippines Jiliapp Login register Qqjili5 Gogo jili helens ABJILI Casino OKJL download 1xBet login mobile Pogibet 888 777 game Okgames casino login Acegame888 Bet86 promotion Winph99 com m home login JP7 VIP login 20phginto VIPPH register KKJILI casino OKJILI casino Plot777 app download NN777 register bossphl Li789 login Jiligo88 app Mwcbet Download Betjilivip Https www BETSO88 ph 30jili Https www BETSO88 ph Jilievo Club Jili888 register Jili777 download APK JILI77 app download New member register free 100 in GCash 2024 Royal888casino net vip JOLIBET withdrawal MW play casino Jili365 login FB777 Pro Gold JILI Bet99 registration 55BMW red envelope Bet199 login philippines JILI188 casino login register download Phjoin legit or not Bigwin 777 Bigwin pro Apaldo PH pinasgame JILIPARK Login registration JiliApp ph04 Ph143 Jili168 login app Philippines MW Play online casino APK 77tbet register 8k8t Bigwin casino YE7 Download App Ph365 download apk Acejili Ph888 login S888 juan login 63win withdrawal Okbet cc labet 8888.com login password Mwbet188 com login register Philippines MNL168 net login registration kkjili.com download Jili888 Login registration Abc Jili com Download JILIPARK casino login Register Download AbcJili customer service live777. casino Jilievo casino jilievo APP live casino slots jilievo vip Jolibet legit PH888 login Register 888php register 55BMW win Mwbet188 com login register Philippines AbcJili customer service Jili88 ph com app 200Jili App MAXJILI casino ROYAL888 deposit mi777 Jili games free 100 ACEGAME Login Register Jilibet donnalyn login Voslot register Jilino1 live casino 18jl login app apk JILI Vip777 login Phtaya login Super Ace casino login Bigwin 777 Ubet95 free 190 superph.com casino Jili22 NEW com register SG777 win Wjpeso Logo 1xBet login mobile Jili88 casino login register Philippines sign up Okbet cc Agg777 slot login Phv888 login P88jili download jiliapp.com- 777 club Fish game online real money One sabong 888 login password QQJili Taya365 slot mnl168.net login Taya365 download Yes Jili Casino PHMACAO APK free download 365 casino login Bigwin 29 JILISM slot casino apk Wow88 jili777.com ph 888php login 49jili VIP Jilino1 legit SG777 slot Fish game online real money Voslot free 100 18jl login app apk OKJL app Jili22 NEW com register Nice88 free 120 register no deposit bonus Sugal777 app download 288jili PHJOIN VIP com Register Jl77 Casino login KKjili com login Lovejili philippines Pogo88 casino SLOTSGO VIP login password Jili22 net register login password Winph 8 we1win 100 Jili slot 777pnl promo code Sg77701 Bet88 download for Android PH365 casino Royal Club login Jili88 casino login register MWPLAY login register Jilibay Promotion 7SJILI com Register FC777 casino link download Royal meaning in relationship OKBET88 AbcJili customer service 777ph VIP BOSS JILI login Register 200Jili App KKJILI casino login register maxjili Mwcbet legit JILIASIA 50 login Milyon88 com casino login 8k8app17 Royal slot Login Phmacao rest 338 SLOTSGO Ph888 login PHGINTO com login YY777 app Phdream register Jili22 net register login password Lucky Win888 Jiligames API Agila club VIP 77PH VIP Login download Acegame888 register PHMAYA Download Jili88 online casino 7XM Lovejili philippines 63win register Jilimax VOSLOT 777 login 18JL Casino Login Register JILIASIA 50 login 50JILI VIP login registration 7XM com PH Nice888 casino login Register 58jl Jili168 casino login register download Timeph philippines 90jilievo Jili88 casino login register OKBet legit JILI slot game download Bet99 promo code 58jili app 55BMW com PH login password KKjili casino login bet999 How to play Jili in GCash BigWin69 app Download OKJL Milyon88 com casino login phdream 888php register Ph888 PH777 registration bonus JLBET Asia LOVEJILI download Royal Casino login 646 ph login Labet8888 review JLBET Casino Jili888 ph Login Wjpeso Wins JILIMACAO 666 Jiliplay login register JILIAPP com login Download JiliLuck download WIN888 PH JL777 app Voslot777 legit Pkjili login 20jili casino Jolibet login registration Phjoin legit or not Milyon88 com casino register JILI apps download 88jili login register Jili 365 Login register download 11phginto Jili777 vip login Ta777 casino online Swertegames Taya365 download 777PNL online Casino login Mi777 join panalo 123 JILI slot 18jili link Panalo lyrics Jiliplay login philippines yaman88 Bet88 login Jili888 Login registration FF777 TV Ok2bet app Pogibet casino philippines Www jilino1 club WOW JILI secret code AB JILI Jili168 online casino BET99 careers Go88 slot login JILI Vip777 login CG777 Casino link OKBet GCash www.50 jili.com login WINJILI download Lucky bet99 Acegame888 77ph com Login password ACEGAME Login Register ACEGAME casino Swerte88 login password Wj slots casino APALDO Casino Phjoin slot JLBET com JLBET ph Taya777 org login 49jili slot Svip slot Jili77 download APK 200jiliclub Bet199 philippines Jili888 Login registration 88jili withdrawal phjoin.com login register Swerte88 login registration Voslot777 legit Superph11 AAA JILI app download Www jililive com log in VIP777 Casino login download Jili77 download APK Jilibet donnalyn login Register JILICC sign up Pogibet app download www.mwplay888.com download apk Jili68 Jililuck App Download APK Yy777 apk mod Jili77 vipph.com login labet8888.com app Phdream live chat Ph646 login register mobile 7777pub download Jolibet Fortune Tree 90JILI app 18JL login Philippines JLSLOT login password 50JILI fun m.nn777 login 88jili withdrawal PH Cash Casino APK 888PHP Casino LINK Boss jili app download Jili999 login register FB777 download APK Free 100 promotion JILIPARK Download VIP PH casino JILIHOT ALLIN88 login 8K8 com login PHMAYA casino login 58jili withdrawal Ubet95 free 100 no deposit bonus KKJILI online casino M GG777 100jili APP JILI888 slot download PHBET88 Jili Games demo 1xBet OKJL Casino Login Nice888 casino login Register Betso88 App download APK VIP777 app Gcash jili register 1xBet registration 58jili withdrawal Jili63 Suhagame23 218 SLOTSGO AGG777 login Philippines Bay888 login JILIVIP 83444 PHCASH com casino login Jilievo 666 Jili 365 VIP register PHMAYA link PH cash VIP login register Yaman88 casino JP7 VIP We1Win download free rbet.win apk Jili168 casino login register download Milyon88 com casino register 18JL login app 88jili withdrawal AAA Casino jilibet.com register Winjili55 UG777 login app PH777 download Jili365 bet login app Osm Jili GCash 77tbet philippines GI Casino login philippines 88jili login FC178 casino free 100 SG777 Com Login registration Nice88 free 100 Oxjili Royal777 Top777 login FB777 live 200jili login Gogojili legit Yes Jili com login phcash.vip casino Sugal777 app download 58JL app Login Panalo login JILI games APK Lucky99 Slot login Jili scatter gcash 7XM APP download FB JILI casino login download PHMACAO app ROYAL888 Link Alternatif ACEPH Casino - Link 55bmw.com casino Timeph app Osm Jili GCash M GG777 Ubet95 login Jiligo88 CG777 Casino Philippines Tayabet login Boss jili app download YY777 app download Nice88 free 120 register no deposit bonus Bossjili7 XOJILI login 68 PHCASH login ezjili.com download apk Jili 365 VIP APK Milyon88 pro Jili88 casino login register download Jili online casino AgilaPlay Jili scatter gcash 7777pub login CC6 app bonus JK4 online PHJOIN casino Joyjili login register 22phmaya 5JILI Casino login register Betso88 VIP Winph 8 Phmacao rest JILI Slot game download free s888.live legit APALDO Casino link Plot 777 casino login register Philippines Ph646wincom Jili168 login app Philippines KKJILI casino Apaldo PH Phdream live chat Slot VIP777 PH888BET 22 phginto 50JILI APP MWPLAY login register Slotph We1Win apk VIP777 slot login Nice88 PRIZEPH online casino Jilipark App 7XM app for Android Jili58 Jili168 free 100 APALDO 888 CASINO login APaldo download Jiliasia8 com slot game phcash.vip casino OKJL Casino Login YY777 live Jili888 register Winjiliph QQ jili casino login registration Abcjili5 NN777 register Phvip casino Taya 365 casino login OKBet app Osm Jili GCash Nice88 free 100 5JILI Casino login register Bet88 app download 5 55bmw vip Jlph11 JILI slot casino login Nice88 bet sign up bonus JILI Slot game download for Android Abc Jili com Download FF777 TV Peso 63 online casino MILYON88 register free 100 7777pub JILIASIA 50 login CC6 online casino latest version Royal Club apk 1xBet login registration CG777 Casino Philippines 1xBet app Mwcbet net login Password LOVEJILI 21 FBJILI Now use Joyjili Promo code JILI188 casino login register download PHMACAO SuperPH login AGG777 login app Peso 63 online casino filiplay Sugal777 app download Galaxy88casino com login EZJILI Telegram JiliApp ph04 Jilino1 com you can now claim your free 88 PHP download 63win Coupon Code PHDream 8 login register Philippines MNL168 website CC6 online casino register login 3jl app download apk Jlph7 TA777 com Login Register password 5jili11 FF777 casino login Register KKJILI casino login register 10 JILI slot game 3JL login app Jili100 APP Winjili55 Milyon88 info Jilino1 VIP login YE7 bet sign up bonus Apaldo games Wj casino app AbcJili win.ph log in Jili22 VIP 204 SG777 Jl77 Casino login YY777 app download Jilimacao Okjl space Wjevo777 download Ubet95 free 100 no deposit bonus PHMAYA APK Xojili legit 77PH bet login Taya365 pilipinong sariling casino LOVEJILI AAAJILI Casino link Jollibee777 How to play mwplay888 18jl app download jilievo.com login password VIP PH casino mnl168.net login JiliLuck download Win2max casino 777PNL download app Ubet Casino Philippines Win888 Login Jili88 casino login register Philippines sign up Bet99 APK 18JL casino Login register Download Naga888 login JLPH login PHMACAO APK free download How to register Milyon88 Royal888ph com login JiliCC entertainment WINJILI customer service PHBET88 Jili888 Login Philippines SG777 slot FBJILI Jili365 bet login app Ubet95 free 100 no deposit bonus Taya 365 casino login LOVEJILI Jili777 free 150 YE7 casino login register download QQJili 58jili login Download S888 sabong Gi77 casino Login taya777 customer service philippines number 24/7 WINJILI customer service Https www wjevo com promocenter promotioncode Nice99 casino login Phdream 44 login Mi777app 777PNL online Casino login phjl.com casino JILILUCK promo code Pogibet 888 login BigWin Casino legit Jolibet app download Jilli pogibet.com casino JP7 VIP login Ug7772 Phjoy JILIMACAO 123 PH143 online casino jili365.bet download PH cash VIP login register Abc Jili Register Mwgooddomain login 58JL Casino link 365 Jili casino login no deposit bonus JILIEVO Casino 777 60win OKGames casino 49jili VIP kkjili.com app JILIPARK casino login Register Philippines Agila Club casino OKGames GCash OKBet casino online S888 juan login Yaman88 log in Winph99 com m home login Jili88 casino login register Winjiliph CG777 Casino LOGIN Register Ubet Casino Philippines Agilaclub review Is 49jili legit ph646 JLBET link JiliCC entertainment Jilicity withdrawal Ta777 casino online Jili777 login register Philippines JP7 coupon code Milyon88 one Ug7772 Jilibet casino 77PH VIP Login download Jili live login 68 PHCASH 7XM APP download Boss jili login MWCASH88 APP download Jilicity login Acegame888 real money LIKE777 JILILUCK app JiliBay Telegram Bet199 login philippines Ph646wincom PHJOIN login OKGames register JILIASIA withdrawal Panalo login 88jili Login Philippines Wjevo777 download phjl.com casino Fcc777 login Labet8888 login JILI8998 casino login PHJL Login password Jilibay Voucher Code 28k8 Casino P88jili download 49jili apps download Fk777city we1win CG777 Casino login no deposit bonus MW play casino FF777 casino login Register Philippines download JILIAPP com login Download Bet199 PHGINTO com login Bet88 bonus Sw888 withdrawal Vvjl666 Jiliapp 777 Login QQ jili login Jilicity download Jili188 login Philippines Timeph philippines Casino Club app download Nice88 bet login registration Bay888 login PH Cash casino download Jiliko777 Nice88 PH 777pnl Jiliplay login register JILI VIP casino cg777 mwcbets.com login Fbjili2 JILIAPP download 7xm login 77jl.com login JILI Slot game download for Android MWPLAY app superph.com casino Nice88 free 120 WJ peso app Jili58 register 3jl app download apk Betso88 link OKGames login free JILIASIA 888 login 58jl login register Jilibet888 68 PHCASH login Jili88ph net register 55BMW Casino app download APK Abc Jili com Download FB777 register login Philippines Jilievo org m home JiliLuck download jlbet.com login register Jp7 casino login 18JL Casino Login Register YE7 casino APK prizeph Boss jili login Royal logo FC178 casino - 777 slot games Taya777 pilipinong sariling casino Ph888 MWPLAY app @Plot777_casino CG777 login BOSS JILI login Register JILI PH646 login Vvjlstore Mi777 casino login Download Okgames redeem code 50JILI VIP login registration Bet88 login AGG777 login Philippines JILIMACAO Yesjili com legit P88jili com login OKBET88 Gold JILI VIP PH casino VIP PH log in bet88.ph legit kkjili.com app JiliLuck Login JILI Vip777 login 63win withdrawal bet999.ph login m.nn777 login 58JL 8k8app17