Cloudflare API Console for DNS Records (Bulk add Domains to Cloudflare & Bulk edit DNS)

Cloudflare API Console for DNS Records

(Bulk add Domains using Cloudflare API & Bulk Add / Bulk Edit DNS Records using Cloudflare API)

This software enable you to bulk add domain names into Cloudflare and update DNS Records via Cloudflare API under Windows platform.

Imagine that you have hundreds domain names parked at Cloudflare, you want to add TXT records into some of your domains for the purpose of domain ownership verification.

I assure you that you will not want to go through all the steps via the web interface, you need a powerful tool with GUI to help you get the job done.


Feature

  • Bulk Add / Delete Domains via Cloudflare API
  • Bulk Add, Modify and Delete DNS Records using Cloudflare API
  • Easy to use interface to Add / Delete DNS Records to all domains or to certain domains which meet certain conditions.
  • Bulk Add DNS Records using template (Advanced Mode)
  • Preview the changes and the API requests that will send to the Cloudflare server before it actual happened.
  • Option to save the Login details, all the settings file will be generated under the same folder of the program.
  • 100% Clean – No Spyware, No Adware.
  • One time fee, no subscription is required. Minor updates are always free.
  • Support Windows 7, 8.1, 10 and corresponding version of windows server.



Known Issue

Cloudflare have a API rate limit of 1200 requests for every 5 minutes. The software has implement a check for it and you will able to send 1100 requests per 5 minutes.

When you hit the API limit, the program will pause sending API requests. When the sent request(s) had passed its 5 minutes time-frame, the API limit quotas will be released, then the program will resume to send the remaining API requests.

(​IMG)

Cloudflare also have a API rate limit on how many domains you can added into Cloudflare per hours. Our software has implement a rate-limit check to comply with the rate limit (Able to add 50 domains per 30 minutes).


How To Use Cloudflare API Console (Guide)

=======================
Screenshot
Bulk Add / Bulk Delete Domains via Cloudflare API

(​IMG)

Bulk add, Bulk modify and bulk delete DNS records via Cloudflare API.

In Below example, we try to remove all TXT Records from all domains.

(​IMG)

Bulk Add MX Records via Cloudflare API under Advanced Mode

We use @ as name so we can reuse it as template for other domains.
SEMrush

(​IMG)

Sync Back to Cloudflare

(​IMG)

With this software, you can managed 1000+ domains DNS Records using Cloudflare with ease.

 

block editor – Gutenberg Components no displaying in Edit

I have an issue with the edit function in this Gutenberg block. If I add another component InspectorControl in the edit function my googlemap that is supposed to be rendered in the map div does not work and there is an error. Is it possible to make them both work in the edit function?


const getLocationPosts = () => axios
    .get('/wp-json/wp/v2/splash_location')
    .then(response => {
        const { data } = response
        renderMap(data)
})

const renderMap = function(locations) {
    const googleMap = document.getElementById('google-map')

    const map = new google.maps.Map(googleMap, {
    center: { lat: 49.2361921, lng: -123.043253 },
    zoom: 11,
    disableDefaultUI: true,
  })

  locations.map((location, i) => {
    const { 
        splash_location_address, 
        splash_location_description, 
        splash_location_latitude_longitude, 
        splash_location_schedule, 
        splash_location_title } = location.meta
    let lat_lng = splash_location_latitude_longitude.replace(/s|(|)/g, '').split(',')
    let lat, lng
    (lat, lng) = lat_lng

    const marker = new google.maps.Marker({
        position: { lat: parseFloat(lat), lng: parseFloat(lng) },
        map: map,
        //icon: "/wp-content/themes/splashstartertheme/assets/images/pin.svg",
      })

      const content = `<div class="location">
            <div class="location__close"></div>
            <h3 class="location__title">${splash_location_title}</h3>
            <p class="location__address">${splash_location_address}</p>
            <div class="location__hours">
            <p class="hours__item">${splash_location_schedule}</p>
            </div>
            <div class="location__gallery grid">
            <a class="gallery__item"><img src="https://wordpress.stackexchange.com/wp-content/assets/images/gallery--1.jpg" data-gallery="gallery1" /></a>
            <a class="gallery__item"><img src="https://wordpress.stackexchange.com/wp-content/assets/images/gallery--1.jpg" data-gallery="gallery1" /></a>
            <a class="gallery__item"><img src="https://wordpress.stackexchange.com/wp-content/assets/images/gallery--1.jpg" data-gallery="gallery1" /></a>
            <a class="gallery__item"><img src="https://wordpress.stackexchange.com/wp-content/assets/images/gallery--1.jpg" data-gallery="gallery1" /></a>
            </div>
        </div>`

        const infowindow = new google.maps.InfoWindow({
        content: content,
      })

      google.maps.event.addListener(marker, 'click', () => {
        infowindow.open(map, marker)

        setTimeout(function() {
            let close = document.getElementsByClassName('location__close')

            close(0).addEventListener('click', () => {
                infowindow.close()
              })
              let lightbox = GLightbox({
                     selector: '.gallery1'
                })
        }, 1000)
      })
  })
}

registerBlockType( 'splash-blocks/google-maps', { 
    title: __('Google maps locations', 'google-maps'),
    icon: 'megaphone',
    category: 'common',
    keyword: (
        __( 'Display Google maps locations' ),
    ),
    attributes: {
        markers: {
            type: 'array',
            default: ({
                lat: 37.79406,
                lng: -122.4002,
            },{
                lat: 37.79507,
                lng: -122.4002,
            }),
        },
        locations: {
            type: 'array',
            default: ({
                title: 'Location title',
                hours: 'xxxxx',
                description: 'xxxxx',
                gallery: {
                    type: 'array',
                    default: ({
                        img: '.jpg'
                    })
                },
                markers: {
                    type: 'array',
                    default: ({
                        lat: 37.79406,
                        lng: -122.4002,
                    },{
                        lat: 37.79507,
                        lng: -122.4002,
                    }),
                },
            })
        },
        icon: {
            type: '',
            default: 'xxxxxxx',
        },
        zoom: {
            type: 'number',
            default: 11,
        },
    address: {
        type: 'string',
        default: 'xxxxxxxxx',
        }, 
        api_key: {
        type: 'string',
        default: 'xxxxxxxxx',
        }
    },
    edit: class extends Component {
        constructor(props) {
        super(props)
            this.setZoom = this.setZoom.bind(this);
      }

     componentDidMount() {
            getLocationPosts()
        }

        setZoom( event ) {
            console.log(event)
        }

        render() {
            const { attributes, setAttributes } = this.props
            return (

                <Fragment>
                    <InspectorControls>
                        <PanelBody title="Settings">
                    <NumberControl
                    isShiftStepEnabled={ true }
                    onChange={ this.setZoom }
                    shiftStep={ 1 }
                    value={ 11 }
                    />
                        </PanelBody>
                    </InspectorControls>
                    <div id='google-map'></div>
                </Fragment>
            )
        }
    },
    save: props => {
        const { 
      className,
      attributes: { mapHTML }
    } = props;
        return (
            <div id='google-map'>
            </div>
        )
    }
})

2013 – SPUtility not working on Custom edit Form

Are you including the debug version of the jquery library or the min version? I ran into this problem and found the solution to be a bit strange, but I received this error when using jquery-3.1.0.js and it ran perfectly when using jquery-3.1.0.min.js. I doubt you’d be using the .min.js for one form and the debug version for another, but I thought it was worth sharing my solution in case that’s what you are doing.

It’s worth noting that even when I included the min.js version in my Content Editor web part, it would still give me the error if I had the debug version included in my master page, since it was loading them both.

Magento2: how to remove edit product link from minicart (2.4.1)

I have attempted to follow lots of answers on here which cover overriding the minicart via a new extension/module.

I have successfully removed all the edit links from the cart by adding the file:
checkout_cart_index.xml
to this location:
/app/design/frontend/BlackRhino/luma/Magento_Checkout/layout/

Which looks like this:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<update handle="checkout_cart_item_renderers"/>
    <body>
    <referenceBlock name="checkout.cart.item.renderers.default.actions.edit" remove="true"/>
    <referenceBlock name="checkout.cart.item.renderers.configurable.actions.edit" remove="true"/>
    <referenceBlock name="checkout.cart.item.renderers.simple.actions.edit" remove="true"/>
    <referenceBlock name="checkout.cart.item.renderers.virtual.actions.edit" remove="true"/>
    <referenceBlock name="checkout.cart.item.renderers.giftcard.actions.edit" remove="true"/>
    <referenceBlock name="checkout.cart.item.renderers.grouped.actions.edit" remove="true"/>
    <referenceBlock name="checkout.cart.item.renderers.downloadable.actions.edit" remove="true"/>
    <referenceBlock name="checkout.cart.item.renderers.bundle.actions.edit" remove="true"/>
</body>

Can I do the same for the minicart?

I have tried copying the file from this location:
/vendor/magento/module-checkout/view/frontend/web/template/minicart/item/default.html

Various locations seem to be suggested:
/app/design/frontend/BlackRhino/luma/Magento_Checkout/web/template/minicart/item/
/app/design/frontend/BlackRhino/Magento_Checkout/web/template/minicart/item
/app/code/BlackRhino/BlackForest/template/minicart/item/

I’ve tried all of these locations with deploying static content (although its in developer mode) but the pencil prevails.

I don’t know if things have changed recently, quite alot of the questions appear to be 3-4 years old in some cases and I wonder if the recent changes now require a slightly different approach?

I have also tried to override this file:
/vendor/magento/module-checkout/view/frontend/requirejs-config.js
by placing one here with an alternative location like this:

var config = {
map: {
    '*': {
        'Magento_Checkout/template/minicart/content.html':
            'BlackRhino_BlackForest/template/minicart/content.html'
    }
}

};

but this answer Magento 2: How to override mini-cart default template html file? doesn’t make it clear where the alternative file should be located and again is 5+ years old.

I wonder if someone could put me out my misery and tell me where I have gone wrong and which one of these solutions should work and how I can get it to work please?

Custom Taxonomy terms aren’t getting referenced or saved in Quick Edit or Bulk Edit, only on Single product page?

I am using Woocommerce, Elementor, ACF Custom Fields and CPT for Custom Post types.

I have a custom taxonomy called ‘biographies’ which has some associated custom fields (first name, last name, birth year, death year).

I have created a simple shortcode that outputs the full name (i.e. First name + Last name). This works fine to echo this info in a shortcode block. This is the shortcode code:

    add_shortcode( 'just_bio_name', 'show_just_bio_name' );
function show_just_bio_name() {
    global $post;
    $html  = '';

if (get_field('bio_tax', $post_id)) {
$taxonomy = 'biographies';
$terms = get_the_terms( $post_id, 'biographies' );
if ( !empty( $terms ) ) {
    foreach ($terms as $term) {
               if (get_field('bio_first_name', $term) && get_field('bio_last_name', $term)) {
                    $bio_name = get_field('bio_first_name', $term) . ' ' . get_field('bio_last_name', $term);
            } else {
              $bio_name = $term->name;
            }
  $html .= $bio_name;
    }
}
} 
return $html;

}

In addition, I’m using the save_post function to update the product slug on save. I am using do_shortcode to add the shortcode output to the data saved in that function. Basically I’m adding a custom name from a custom taxonomy to the product slug. Here is the code for the save_post function:

function slug_save_post_callback( $post_ID, $post, $update ) {

global $pagenow;

// allow 'publish', 'draft', 'future'

    if((isset($post) && $post->post_type != 'product') || $post->post_status == 'auto-draft')
    {
      return;
    }

$productTitle = $post->post_title;

if (get_field('bio_tax', $post_ID)) {
    $bioName = get_field('bio_tax', $post_ID);
    $slugBioName = sanitize_title( do_shortcode('(just_bio_name)') );
    $slugBioName = '-'.$slugBioName;
} else {
    $bioName = "";
    $slugBioName = "";
}

if ($acfFullTitle) {
$slugTitle = substr($productTitle, 0, 50);
    $slugTitle = sanitize_title($slugTitle);
}

$new_slug = $slugTitle.$slugBioName;

// unhook this function to prevent infinite looping
remove_action( 'save_post', 'slug_save_post_callback', 20, 3 );

// update the post slug (WP handles unique post slug)
    wp_update_post( array(
        'ID' => $post_ID,
        'post_name' => $new_slug,
        'post_title' => $productTitle
        ));
        // re-hook this function
        add_action( 'save_post', 'slug_save_post_callback', 20, 3 );
    }
    add_action( 'save_post', 'slug_save_post_callback', 20, 3 );

This saves perfectly on the Single product page but the data from the shortcode/taxonomy doesn’t work when using the quick edit or bulk edit functions on the product grid pages, where it saves without the name addition. If I put some random string in the shortcode, then this works in Quick Edit so its not the shortcode itself, its something to do with how I’m getting the taxonomy terms – they work for single product page and not for quick edit. I’ve narrowed it down to that this line doesn’t retrieve anything: if (get_field(‘bio_tax’, $post_id)) { so I’m suspecting it might have to do with me referencing the wrong post ID value (I tried Get_the_ID() but it didn’t change anything). Help in solving this would be much appreciated!

hooks – After webform submission restrict/greyout certain fields when user goes back in to edit

On my Drupal 7 instance I am letting anonymous users “edit own webform content” or “access own webform results.” The thing is, I want one or two of the fields to become un-editable after the initial submission. Once they click through the link in their confirmation email to edit their submission, I want the email and company name fields to be greyed out but all other fields to be editable. What is my path of least resistance?

How to edit SharePoint page content/URL using client Object Model

It depends 🙂

if these columns are just fields that you added on the page content type or on the page library itself and they are added on the page layout, then it is as easy as update the columns with the link you like.

I believe this is not the case, and the links are stored as a part of the page content field. This will require to search and replace the column using java script or even console app (if you are using 2010 or 2013 on prem)

here is an example using the console app: http://habaneroconsulting.com/insights/programmatically-change-content-on-a-wiki-page-in-sharepoint-2010#.VytcZYSDFBc

example using javascript (look for the Update a file in a document library section):
https://msdn.microsoft.com/en-us/library/office/jj163201.aspx

Darktable discards all edits immediatelly as I edit a picture

When I open a picture (it’s a JPEG, as I was shooting a timelapse and didn’t want it to take too much space), any edits are discarded if I try to compress the history stack or if I leave the picture and ho back to photo list.

If I try to create a template from the edits it will tell me that it cannot make a preset from an unchanged picture.

I tried to delete all the .xmp files, but that had no effect.

Here is a video of what I am experiencing: https://youtu.be/m6ftvB9c7B4

Why is this happening?

sharepoint online – Trigger Republish button using spfx extension while on edit mode

I am trying to manually trigger the republish event while editing the SharePoint page using spfx extension as below . but there is a error in savePage api . is there way to do it ?

enter image description here

 const publish = async() => {
            const canvasAPI = `${context.absoluteUrl}/_api/sitepages/pages(${context.spfxContex.pageContext.listItem.id})`;
            const _data = await context.spfxContex.spHttpClient.get(canvasAPI, SPHttpClient.configurations.v1);
            if(_data.ok) {
              const reslut = await _data.json();
              if(reslut) {
                const canvas = JSON.parse(reslut.CanvasContent1);
                console.log(canvas);
                const sptOpts: ISPHttpClientOptions = {
                  body: `{"_metadata": {"type": "SP.Publishing.SitePage"}, "CanvasContent1": ${JSON.stringify(canvas)}}`
                }
        
                const restApi2 = `${context.absoluteUrl}/_api/sitepages/pages(${context.spfxContex.pageContext.listItem.id})/checkout`;
                const response1 = await context.spfxContex.spHttpClient.post(restApi2, SPHttpClient.configurations.v1, {});
        
                const restApi = `${context.absoluteUrl}/_api/sitepages/pages(${context.spfxContex.pageContext.listItem.id})/SavePage`;
                const response = await context.spfxContex.spHttpClient.post(restApi, SPHttpClient.configurations.v1, sptOpts);
                console.log(response);
              }
            }
          }

/savePage api error

{"error":{"code":"-1, System.Runtime.Serialization.SerializationException",  "message":"There was an error deserializing the object of type Microsoft.SharePoint.Publishing.SitePageFieldsData. End element 'CanvasContent1' from namespace '' expected. Found element 'item' from namespace ''."}}